핵심 인사이트 (3줄 요약)
- 내적 책임의 집중: 모듈 내부의 구성 요소들이 하나의 공동 목적을 수행하기 위해 얼마나 긴밀하게 관련되어 있는지를 나타내는 척도이다.
- 높을수록 우수 (High Cohesion): 응집도가 높을수록 모듈은 독립성이 강해지며, 코드의 재사용성과 가독성, 유지보수성이 비약적으로 향상된다.
- 기능적 일관성: "하나의 모듈은 오직 한 가지 일만 수행해야 한다"는 단일 책임 원칙(SRP)의 기술적 지표이다.
Ⅰ. 개요 (Context & Background)
- 정의: 소프트웨어 설계에서 모듈 또는 클래스 내부의 멤버 변수와 메서드들이 서로 얼마나 관련되어 있는지를 측정하는 지표이다.
- 배경: 무분별하게 기능이 섞인 '만능 모듈(God Object)'은 이해하기 어렵고 수정 시 부작용이 크기 때문에, 기능을 세밀하게 분리하고 응집도를 높이는 설계가 필수적이다.
Ⅱ. 아키텍처 및 핵심 원리 (Deep Dive)
[ Low Cohesion: Weakly Related ] [ High Cohesion: Strongly Related ]
+----------------------------+ +----------------------------+
| Mixed Module | | Focused Module |
+----------------------------+ +----------------------------+
| - Print Invoice | | - Calculate Total |
| - Connect Database | | - Apply Discount |
| - Parse User Input | | - Validate Price |
+----------------------------+ +----------------------------+
(Random tasks, Hard to Reuse) (Single Purpose, High Quality)
- 응집도의 7단계 (낮음 -> 높음):
- 우연적 (Coincidental): 아무 관련 없는 요소들이 한 모듈에 있음.
- 논리적 (Logical): 논리적으로 유사한 기능을 한 모듈에 모음 (예: 모든 출력 관련 기능).
- 시간적 (Temporal): 특정 시간에 실행되는 기능들을 모음 (예: 초기화 루틴).
- 절차적 (Procedural): 순차적인 실행 단계를 모음.
- 통신적 (Communicational): 동일한 입출력 데이터를 사용하는 기능을 모음.
- 순차적 (Sequential): 한 기능의 출력이 다음 기능의 입력이 됨.
- 기능적 (Functional): [최고] 모듈 내의 모든 요소가 단 하나의 기능을 위해 유기적으로 동작함.
Ⅲ. 융합 비교 및 다각도 분석 (Comparison & Synergy)
| 항목 | 낮은 응집도 (Low Cohesion) | 높은 응집도 (High Cohesion) |
| 코드 가독성 | 복잡하고 분석이 힘듦 | 명확하고 한눈에 들어옴 |
| 재사용성 | 불가능 (필요 없는 기능까지 딸려옴) | 높음 (필요한 기능만 딱 가져옴) |
| 유지보수성 | 수정 시 관련 없는 곳에서 오류 발생 | 영향 범위가 국한되어 안전함 |
| 테스트 용이성 | 테스트 시나리오가 매우 복잡해짐 | 단순하고 명확한 테스트 가능 |
Ⅳ. 실무 적용 및 기술사적 판단 (Strategy & Decision)
- 기술사적 판단: 응집도는 결합도(Coupling)와 동전의 양면 관계이다. 응집도를 높이면 자연스럽게 모듈 간의 결합도는 낮아진다. 이는 소프트웨어 아키텍처의 황금률인 **"High Cohesion, Loose Coupling"**을 실현하는 핵심 출발점이다.
- 설계 전략: 클래스를 설계할 때 메서드가 클래스의 필드(멤버 변수)를 얼마나 많이 사용하는지 확인하라. 필드를 거의 사용하지 않는 메서드가 있다면, 그 메서드는 응집도를 떨어뜨리고 있는 것이므로 다른 클래스로 옮겨야 할 신호이다.
Ⅴ. 기대효과 및 결론 (Future & Standard)
- 기대효과: 시스템 전체의 복잡도가 감소하고, 개발 효율성이 증대된다. 모듈의 독립성이 확보되어 마이크로서비스(MSA) 분할 시에도 명확한 경계를 설정할 수 있다.
- 결론: 높은 응집도는 단순한 '깔끔한 코드'를 넘어, 시스템의 생명주기를 연장하고 비즈니스 변화에 민첩하게 대응하게 하는 아키텍처적 기반이다.
📌 관련 개념 맵 (Knowledge Graph)
- 상위 개념: 구조적 설계 지표, 소프트웨어 품질 속성
- 동급 개념: 결합도(Coupling), 단일 책임 원칙(SRP)
- 연관 기술: 모듈화(Modularity), 캡슐화(Encapsulation)
👶 어린이를 위한 3줄 비유 설명
- 필통 안에 연필, 지우개, 자가 들어있으면 필기할 때 아주 편해요. (높은 응집도)
- 그런데 필통 안에 숟가락이랑 양말이 같이 들어있으면 물건 찾기가 너무 힘들겠죠? (낮은 응집도)
- 끼리끼리 잘 모아두면 공부도 잘되고 방 정리도 훨씬 쉽답니다!