topic★★★★★난이도 · 약 20분
응집도 & 결합도
좋은 모듈 = 응집도 높음 + 결합도 낮음. 각 7/6단계를 순서대로 외워야 한다.
#설계#모듈화#필기핵심
왜 배우는가
응집도 7단계·결합도 6단계의 순서가 매회 단답으로 출제된다.
응집도(Cohesion) 는 한 모듈 내부 요소들이 얼마나 밀접하게 관련되어 있는가, 결합도(Coupling) 는 한 모듈이 다른 모듈에 얼마나 의존하는가를 나타낸다. 좋은 설계는 응집도 ↑, 결합도 ↓.
| 강함 ← 응집도 → 약함 | 설명 |
|---|---|
| 1. 기능적 (Functional) | 하나의 목적 수행 |
| 2. 순차적 (Sequential) | 이전 출력이 다음 입력 |
| 3. 교환적 (Communication) | 같은 데이터 사용 |
| 4. 절차적 (Procedural) | 실행 순서가 중요 |
| 5. 시간적 (Temporal) | 특정 시점에 함께 실행 |
| 6. 논리적 (Logical) | 유사한 일 모음 |
| 7. 우연적 (Coincidental) | 관련 없음 (최악) |
| 약함 ← 결합도 → 강함 | 설명 |
|---|---|
| 1. 자료 (Data) | 매개변수로 값만 전달 |
| 2. 스탬프 (Stamp) | 구조체의 일부만 사용 |
| 3. 제어 (Control) | 제어 신호(플래그) 전달 |
| 4. 외부 (External) | 외부 환경·장치 공유 |
| 5. 공통 (Common) | 전역 변수 공유 |
| 6. 내용 (Content) | 다른 모듈 내부 직접 접근 (최악) |
암기법 — 응집도: 기순교절시논우 (기능-순차-교환-절차-시간-논리-우연). 결합도: 자스제외공내 (자료-스탬프-제어-외부-공통-내용). 시험에서 순서를 바꿔 물어본다.
Fan-in / Fan-out — Fan-in: 한 모듈을 호출하는 모듈의 수 (높을수록 재사용성 ↑). Fan-out: 한 모듈이 호출하는 다른 모듈의 수 (높을수록 복잡도 ↑).
실기 드릴 3문항
edit실기 드릴 · 단답형
모듈 내부 요소들이 하나의 목적을 위해 수행되는 가장 강한 응집도는?
edit실기 드릴 · 단답형
두 모듈이 전역 변수를 공유할 때의 결합도는?
edit실기 드릴 · 단답형
한 모듈을 호출하는 다른 모듈의 개수를 나타내는 지표는?