자격증/정보처리기사
필기 - 1. 소프트웨어 설계_ch3. 애플리케이션 설계
권동동
2024. 7. 2. 14:07
1. 공통 모듈 설계
(1) 재사용
1️⃣ 재사용의 개념
- 기존의 소프트웨어 또는 소프트웨어 지식을 활용항여 새로운 소프트웨어을 구축하는 작업
2️⃣ 재사용의 유형
유형 | 설명 |
함수와 객체 재사용 | 클래스나 함수 단위로 구현한 소스 코드를 재사용 |
컴포넌트 재사용 | 컴포넌트 단위로 재사용 |
애플리케이션 재사용 | 공통기능을 제공하는 애플리케이션과 기능을 공유하여 재사용 |
(2) 공통 모듈
1️⃣ 공통 모듈의 개념
- 모듈은 크게 독립된 하나의 소프트웨어 또는 하드웨어 단위를 지칭하는 용어
- 공통 모듈은 독립성, 다양한 조합, 재사용, 영향 최소화의 특징이 있다
- 공통 모듈의 개념은 전체 프로그램의 기능 중 특정 기능을 처리할 수 있는 실행 코드를 의미한다.
2️⃣ 공통 모듈 원칙
정명완일추 - 정말 명작 완성된 일본의 추억
원칙 | 설명 |
정확성 | 실제 시스템 구현 시 필요한지 |
명확성 | 일관되게 이해하고 한 가지로 해석 |
완전성 | 시스템이 구현될 때 필요하고 요구되는 모든 것 |
일관성 | 공통 기능 간에 상호 충돌이 없도록 작성 |
추적성 | 공통 기능에 대한 요구사항 출처와 관련 시스템 등의 유기적 관계에 대한 식별이 가능하도록 |
3️⃣ 모듈화
① 모듈화의 개념
- 시스템을 분해하여 사용이 용이하도록 기능 단위의 모듈로 분해하는 설계 및 구현 기법
② 모듈화의 필요성
- 모듈의 크기가 너무 작으면 -> 모듈의 개수 증가, 모듈 간 통합 비용 상승
- 모듈의 크기가 너무 크면 -> 모듈의 개수 감소, 모듈 당 개발 비용 상승
③ 바람직한 모듈 설계 방안
- 모듈의 독립성과 재사용성을 높이기 위하여 결합도는 낮추고 응집도는 높인다.
- 모듈의 복잡도와 중복성을 줄이고 일관성을 유지한다.
- 모듈의 기능은 예측이 가능해야 하며, 지나치게 제한적이어서는 안된다.
- 적다한 모듈의 크기를 유지한다
- 모듈 간의 효과적인 제어를 위해 설계에서 계층적 자료 조직이 제시되어야 한다.
- 유지보수가 용이해야 하고, 이식성을 고려해야한다
4️⃣ 모듈화 측정 지표
- 모듈화의 적정성을 칙정하는 지표는 응집도와 결합도
5️⃣ 모듈화 유형
① 응집도 ❗
우논시절 통순기 - 우리가 논 시절에 통합짱은 순한 기요미다
우연적 < 논리적 < 시간적 < 절차적 < 통신적 < 순차적 < 기능적 응집도 순서로 응집도가 높아진다
② 결합도 ❗
내공 외제 스자 - 내공 100 외제차 쓰자내용 > 공통 > 외부 > 제어 > 스탬프 > 자료 결합도 순으로 결합도가 낮아진다.
6️⃣ 팬인(Fan-In) 및 팬아웃(Fan-Out)
① 팬인 및 팬아웃 개념
- 팬 인 - 어떤 모듈을 제어하는 모듈의 수
- 팬 아웃 - 어떤 모듈에 의해 제어되는 모듈의 수
② 팬인 및 팬아웃 특징
구분 | 팬인(Fan-In) | 팬아웃(Fan-Out) |
모듈 숫자 계산 | 모듈 자신을 기준으로 들어옴 | 모듈 자신을 기준으로 나감 |
고려사항 | 팬인이 높으면 관리 비용 및 테스트 비용 증가 | 팬아웃이 높으면 단수화 여부 검토 필요 |
둘 다 낮게 설계해야함
(3) 설계 모델링
1️⃣ 설계 모델링
설계 모델링 개념
- 요구사항 분석 단계에서 규명된 필수 기능들의 구체적인 구현 방법을 명시하는 기법
2️⃣ 소프트웨어 설계 유형
설계 유형 | 설명 |
자료 구조 설계 | 요구분석 단계에서 생선된 정보를 바탕으로 소프트웨어를 구현하는데 필요한 자료 구조로 변환하는 과정을 설계 |
아키텍처 설계 | 소프트웨어의 시스템의 전체 구조를 기술 |
인터페이스 설계 | 소프트웨어와 상호 작용하는 컴퓨터 시스템, 사용자 등의 통신 설계 |
프로시저 설계 | 모듈이 수행할 기능을 절차적 기술로 바꾸는 설계 |
협약에 의한 설계 | 클래스에 대한 여러 가정을 공유하도록 명세한 설계 |
자료 구조, 아키텍처, 인터페이스, 프로시저, 협약에 의한 설계는 상위 설계
모듈 설계는 하위 설계
3️⃣ 소프트웨어 설계 원리
구분 | 설명 |
상향식 설계 | 하위 기능들로부터 시작하여 제일 상위에 있는 기능 접근해가는 방식 |
하향식 설계 | 소프트웨어 설계 시 제일 상위에 있는 기능에서 시작하여 기능을 하위 기능들로 분할해 가면서 설계하는 방식 레벨이 낮은 데이터 구조의 세부사항은 설계 초기 단계에서 필요 |
4️⃣ 코드 설계
① 코드의 기능
코드의 기능으로는 표준화, 분류, 식별, 배열, 간소화, 연상, 암호화, 오류 검출 기능이 있다.
② 코드 설계 종류
종류 | 설명 |
연상 코드 | 코드만 보고 대상을 연상할 수 있도록 명칭 일부를 약호 형태롤 넣어 구성된 코드(ex : 나라이름) |
블록 코드 | 공통성이 있는 것끼리 블록으로 구분하고, 각 블록 내에서 일련번호를 부여하는 코드(ex : 지역번호) |
순차 코드 | 일정한 기준에 따라 순서대로 일련번호를 부여한 코드(ex : 반에서의 번호) |
표의 숫자 코드 | 대상 자료의 물리적인 수치인 길이, 넓이, 용량 등을 표시한 코드 |
십진 코드 | 10진수 형태로 표현한 코드 |
그룹 분류 코드 | 대상을 기준에 따라 대분류, 중분류, 소분류로 구분하여 번호를 부여한 코드(ex : 학번) |
5️⃣ HIPO
① HIPO(Hierachy Input Process Output) 개념
- 하향식 소프트웨어 개발을 위한 문서화 도구
② HIPO 특징
- 체계적인 문서 관리가 가능
- 기능과 자료의 의존 관계를 동시에 표현
- 변경, 유지보수 용이