응집도와 결합도
응집도와 결합도
응집도(Cohesion)
모듈 내부의 요소들의 밀접 정도를 나타낸다.
높을수록 좋다.
결합도(Coupling)
모듈과 모듈 간의 상호 의존 정도를 나타낸다.
낮을수록 좋다.
모듈 응집도 (Cohesion)
응집도는 하나의 모듈이 단일 기능을 수행하기 위해 그 구성요소들이 얼마나 긴밀하게 협력하는지를 나타내는 척도이다.
응집도가 높을수록 모듈의 독립성이 높아져 재사용과 유지보수가 용이해진다.
응집도별 키워드
| 응집도 유형 | 핵심 키워드 |
|---|---|
| 기능적 | 단일 목적 |
| 순차적 | 이전 기능의 출력을 다음 기능의 입력으로 사용, 기능간의 의존성 |
| 통신적(교환적) | 동일한 입력 및 출력 데이터 |
| 절차적 | 입출력 간 연관성은 없으나 순서에 따라 실행 |
| 시간적 | 특정 시간에 함께 실행 |
| 논리적 | 유사한 성격, 특정 분류 |
| 우연적 | 관련 없음 |
기능적 응집도 (Functional Cohesion)
모듈 내부의 모든 기능이 단일 목적을 수행하기 위해 구성된 경우이다.
순차적 응집도 (Sequential Cohesion)
한 기능의 출력이 다른 기능의 입력으로 사용되는 순차적인 관계를 가진 기능들을 묶은 경우이다.
통신적(교환적) 응집도 (Communicational Cohesion)
동일한 입력 데이터를 사용하거나 동일한 출력 데이터를 생성하는 기능들을 묶은 경우이다.
절차적 응집도 (Procedural Cohesion)
모듈 내 기능들이 정해진 순서에 따라 실행되어야 할 때 이를 하나의 모듈로 묶은 경우이다.
시간적 응집도 (Temporal Cohesion)
특정 시간에 함께 실행되어야 하는 기능들을 묶은 경우이다.
논리적 응집도 (Logical Cohesion)
유사한 성격을 갖거나 특정 분류에 속하는 기능들을 하나의 모듈로 묶은 경우이다.
우연적 응집도 (Accidental Cohesion)
모듈 내부의 구성요소들이 아무런 관련이 없는 경우이다.
모듈 결합도 (Coupling)
결합도는 모듈 간에 서로 얼마나 의존하는지를 나타내는 척도이다.
결합도가 낮을수록 한 모듈의 변경이 다른 모듈에 미치는 영향이 적어져 시스템의 유지보수성과 확장성이 향상된다.
| 결합도 유형 | 핵심 키워드 |
|---|---|
| 내용 | 다른 모듈 내부 변수나 기능 직접 사용 |
| 공통 | 전역 변수 참조 및 갱신 |
| 외부 | 외부 데이터 형식, 통신 프로토콜 공유 |
| 제어 | 제어 요소 전달 |
| 스탬프 | 자료구조 전달 |
| 자료 | 최소한의 데이터만 파라미터로 주고받음 |
내용 결합도 (Content Coupling)
한 모듈이 다른 모듈의 내부 기능이나 데이터를 직접 참조하거나 수정하는 경우이다.
공통 결합도 (Common Coupling)
여러 모듈이 하나의 전역 변수나 공통 데이터 영역을 공유하여 사용하는 경우이다.
외부 결합도 (External Coupling)
두 모듈이 외부에서 정의된 데이터 형식, 통신 프로토콜, 또는 특정 하드웨어를 공유하는 경우이다.
제어 결합도 (Control Coupling)
한 모듈이 다른 모듈의 동작을 제어하는 제어 신호(Flag, Switch)를 전달하는 경우이다.
스탬프 결합도 (Stamp Coupling)
두 모듈이 자료 구조(객체, 레코드 등)를 주고받지만, 그중 일부 데이터만 사용하는 경우이다.
자료 결합도 (Data Coupling)
두 모듈이 필요한 최소한의 데이터(단순 파라미터)만을 주고받는 경우이다.