반응형
-
모듈화의 개요
-
모듈화의 정의
- 시스템을 분해하고 추상화하여 소프트웨어의 성능을 향상시키거나 시스템의 디버깅, 시험, 통합 및 수정을 용이하도록 하는 소프트웨어 설계 기법
-
모듈화의 장점
- 프로그램의 효율적인 관리 및 성능 향상
- 전체적인 소프트웨어 이해의 용이성 증대 및 복잡성 감소
- 소프트웨어 시험, 통합, 수정 시 용이성 제공
- 기능의 분리가 가능하고 인터페이스가 단순
- 오류의 파급 효과를 최소화
- 모듈의 재사용 가능으로 개발과 유지보수가 용이
-
모듈화의 목표
- 모듈 간 결합도의 최소화
-
모듈 내 요소들 간의 응집도 최대화
-
-
결합도(Coupling)
-
결합도의 정의
- 소프트웨어 구조 내에서 모듈 간의 관련성을 측정하는 척도
-
결합도의 목표
- 모듈 상호간 낮은 결합도 추구
- 이해하기 쉬운 소프트웨어 구현을 위해 간단한 연결 추구
- 오류 발생 시 전파되어 다른 오류의 원인이 되는 파급효과의 최소화
-
낮은 결합도 구현 방법
- 불필요한 관련성 제거
- 불필요한 인터페이스를 가능한 한 제거
- 필요한 관계를 연결
-
모듈 결합도 스펙트럼
-
자료 결합도(Data Coupling)
- 두 모듈간 필요한 자료만을 매개변수로 전달하여 참조하는 경우
- 가장 낮은 모듈 결합도 지원 가능
-
스탬프 결합도(Stamp Coupling)
- 두 모듈이 동일한 복합 자료구조(예: 배열, 레코드, 구조체 등)를 매개변수로 전달하여 참조하는 경우
- 배열, 레코드, 구조체 중에 관련 없는 내용 포함이 가능
-
제어 결합도(Control Coupling)
- 한 모듈이 다른 모듈의 내부에서 작용하는 논리적 흐름을 제어하기 위하여 제어 플래그(Flag)나 정보를 매개변수로 전달하는 경우
- 권리 전도 현상(Inversion of Authority)의 발생이 가능
-
외부 결합도(External Coupling)
- 모듈들이 외부 환경(예:특수H/W, 통신 프로토콜, OS, 컴파일러 등)과 연관되어 있는 경우
- 음성적 정보 교환 방법
-
공통 결합도(Common Coupling)
- 두 모듈이 동일한 자료 영역(예: 전역변수)을 공통으로 조회하는 경우
- 동일한 자료 영역 내의 오류 발생 시 타 모듈로 오류 전파 가능성이 큼
-
내용 결합도(Contents Coupling)
- 한 모듈이 다른 모듈의 내부 기능 및 자료를 직접 참조하는 경우
- 한 모듈의 제어가 다른 모듈 내부로 분기하는 경우로, 모듈이라는 개념은 무시
-
-
-
응집도(Cohesion)
-
응집도의 정의
- 하나의 모듈 내부의 처리 요소들 간의 기능적 연관성을 측정하는 척도
-
응집도의 특징
- 정보 은닉 개념의 확장
- 가장 응집도가 높은 모듈은 단지 하나의 기능만을 실행해야 함
-
응집도의 목표
- 가능한 한 높은 응집도를 추구하여 유지보수 용이성을 확보
- 모듈간의 결합도를 최소화하고, 각 모듈은 양호한 응집도를 추구
-
모듈 응집도 스펙트럼
-
기능적 응집도(Functional Cohesion)
- 모듈 내의 모든 요소들이 단일 기능을 수행
-
순차적 응집도(Sequential Cohesion)
- 모듈 내의 한 요소의 출력 자료가 다음 요소의 입력 자료로 사용
-
통신적 응집도(Communicational Cohesion)
- 모듈 내의 요소들이 동일한 입출력 자료를 이용하여 서로 다른 기능 수행
-
절차적 응집도(Procedural Cohesion)
- 모듈의 수행 요소들이 반드시 특정 순서대로 수행
-
일시적 응집도(Temporal Cohesion)
- 모듈의 기능 요소들이 같은 시간에 모두 실행
-
논리적 응집도(Logical Cohesion)
- 논리적으로 유사함 기능을 수행하지만 서로의 관계는 밀접하지 않음
-
우연적 응집도(Coincidental Cohesion)
-
모듈 내 요소들이 뚜렷한 관계 없이 존재
-
-
-
-
효율적 모듈성을 위한 설계 지침
- 초기 프로그램 구조를 평가하여 결합도를 줄이고 응집도를 개선 시킴
- 높은 Fan-out을 가진 구조를 최소화하고, 깊이가 증가할수록 Fan-in에 노력함
- 모듈의 제어 영역 안에서 그 모듈의 영향 영역을 유지
- 모듈 인터페이스를 평가하여 복잡성과 중복성을 줄이고 일관성을 개선시킴
- 기능은 예측 가능한 모듈을 정의하되 지나치게 제한적인 모듈들은 피함
- 하나의 입구와 하나의 출구를 지닌 모듈을 취하고 '병적인 연결(모듈 중간에서의 분기나 참조)'은 피함
-
설계 제약과 이식성 요구 사항에 기초하여 소프트웨어를 패키지화
-
모듈 설계의 방향
- 모듈의 독립성을 위해 추상화, 캡슐화, 정보 은닉, 다형성 등 객체 지향 개념 및 기술의 적용
- 객체 지향 관련 기술의 영향으로 컴포넌트 형식으로의 독립성 추구 방안이 모색되고 있으며, CBD 개발 방식의 급부상
반응형
'밥벌이 > 소프트웨어 공학' 카테고리의 다른 글
소프트웨어 설계 개요 (0) | 2010.11.25 |
---|---|
소프트웨어 설계 원리 (0) | 2010.11.25 |
소프트웨어 설계 방법 (0) | 2010.11.25 |
소프트웨어 요구사항의 개요 (0) | 2010.10.18 |
소프트웨어 분석 모델 (0) | 2010.10.18 |