-
모듈화의 개요
-
모듈화의 정의
- 시스템을 분해하고 추상화하여 소프트웨어의 성능을 향상시키거나 시스템의 디버깅, 시험, 통합 및 수정을 용이하도록 하는 소프트웨어 설계 기법
-
모듈화의 장점
- 프로그램의 효율적인 관리 및 성능 향상
- 전체적인 소프트웨어 이해의 용이성 증대 및 복잡성 감소
- 소프트웨어 시험, 통합, 수정 시 용이성 제공
- 기능의 분리가 가능하고 인터페이스가 단순
- 오류의 파급 효과를 최소화
- 모듈의 재사용 가능으로 개발과 유지보수가 용이
-
모듈화의 목표
- 모듈 간 결합도의 최소화
-
모듈 내 요소들 간의 응집도 최대화
-
결합도(Coupling)
-
결합도의 정의
- 소프트웨어 구조 내에서 모듈 간의 관련성을 측정하는 척도
-
결합도의 목표
- 모듈 상호간 낮은 결합도 추구
- 이해하기 쉬운 소프트웨어 구현을 위해 간단한 연결 추구
- 오류 발생 시 전파되어 다른 오류의 원인이 되는 파급효과의 최소화
-
낮은 결합도 구현 방법
- 불필요한 관련성 제거
- 불필요한 인터페이스를 가능한 한 제거
- 필요한 관계를 연결
-
모듈 결합도 스펙트럼
-
응집도(Cohesion)
-
응집도의 정의
- 하나의 모듈 내부의 처리 요소들 간의 기능적 연관성을 측정하는 척도
-
응집도의 특징
- 정보 은닉 개념의 확장
- 가장 응집도가 높은 모듈은 단지 하나의 기능만을 실행해야 함
-
응집도의 목표
- 가능한 한 높은 응집도를 추구하여 유지보수 용이성을 확보
- 모듈간의 결합도를 최소화하고, 각 모듈은 양호한 응집도를 추구
-
모듈 응집도 스펙트럼
-
기능적 응집도(Functional Cohesion)
-
순차적 응집도(Sequential Cohesion)
- 모듈 내의 한 요소의 출력 자료가 다음 요소의 입력 자료로 사용
-
통신적 응집도(Communicational Cohesion)
- 모듈 내의 요소들이 동일한 입출력 자료를 이용하여 서로 다른 기능 수행
-
절차적 응집도(Procedural Cohesion)
- 모듈의 수행 요소들이 반드시 특정 순서대로 수행
-
일시적 응집도(Temporal Cohesion)
-
논리적 응집도(Logical Cohesion)
- 논리적으로 유사함 기능을 수행하지만 서로의 관계는 밀접하지 않음
-
우연적 응집도(Coincidental Cohesion)
-
효율적 모듈성을 위한 설계 지침
-
모듈 설계의 방향
- 모듈의 독립성을 위해 추상화, 캡슐화, 정보 은닉, 다형성 등 객체 지향 개념 및 기술의 적용
- 객체 지향 관련 기술의 영향으로 컴포넌트 형식으로의 독립성 추구 방안이 모색되고 있으며, CBD 개발 방식의 급부상