모듈의 개요
- 모듈화를 통해 분리된 시스템의 각 기능
- 소프트웨어 내의 프로그램, 작업 단위 등과 같은 의미로 사용된다.
- 단독 컴파일이 가능하며, 재사용 할 수 있다.
- 모듈의 독립성은 결합도(Coupling)과 응집도(Cohesion)에 의해 측정되며 결합도는 약하게, 응집도는 강하게, 모듈의 크기는 작게 만드는 것이 바람직하다.
결합도
- 결합도는 강도에 따라 다음과 같이 나타난다.
- 결합도가 약한 순서
- 자료 결합도(Data Coupling)
- 스탬프 결합도(Stamp Coupling)
- 제어 결합도(Control Coupling)
- 외부 결합도(External Coupling)
- 공통(공유) 결합도(Common Coupling)
- 내용 결합도(Content COupling)
- 위부터 아래로 갈 수록 결합도가 강해지며 강할 수록 좋지 않은 모듈이다.
- 결합도가 강하면 유지보수 작업이 어렵다.
응집도
- 응집도는 강도에 따라 다음과 같이 나타난다.
- 응집도가 강한 순서
- 기능적 응집도(Functional Cohesion)
- 순차적 응집도(Sequential Cohesion)
- 교환(통신)적 응집도(Communication Cohesion)
- 절차적 응집도(Procedural Cohesion)
- 시간적 응집도(Temporal Cohesion)
- 논리적 응집도(Logical Cohesion)
- 우연적 응집도(Coincidental Cohesion)
팬인(Fan-In)/팬아웃(Fan-Out)
- 팬인은 어떤 모듈을 제어(호출)하는 모듈의 수를 나타낸다.
- 팬아웃은 어떤 모듈이 제어(호출)되는 모듈의 수를 나타낸다.
- 팬인과 팬아웃을 이용하여 시스템의 복잡도를 알 수 있다.
- 팬인이 높으면 재사용 측면에서 설계가 잘되었다고 할 수 있다.
- 팬인이 높으면 단일 장애점이 발생할 수 있으므로 중점적인 관리가 필요하다.
- 단일 장애점은 시스템의 구성 요소 중 작동하지 않으면 전체 시스템이 중단되는 요소를 의미하며 단일 실패점이라고도 한다.
- 팬아웃이 높으면 불필요하게 다른 모듈을 호출하는지 검토하고 단순화 할 수 있는지 여부에 대한 검토가 필요하다.
- 쉽게 모듈에서 나가면 팬아웃 들어오면 팬인이다.
- 시스템 복잡도를 최적화하려면 팬인은 높게, 팬아웃은 낮게 설계해야 한다.
N-S차트(Nassi-Schneiderman Chart)
- 논리의 기술에 중점을 둔 도형을 이용한 표현 방법으로 박스 다이어그램, Chapin Chart라고 한다.
- 제어 논리 구조를 표현한다.
- 읽기는 쉽지만 작성하기는 어렵고 임의로 제어를 전이하는 것이 불가하다.
- 선택과 반복의 구조를 시각적으로 표현한다.