핵심 인사이트 (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단계 (낮음 -> 높음):
    1. 우연적 (Coincidental): 아무 관련 없는 요소들이 한 모듈에 있음.
    2. 논리적 (Logical): 논리적으로 유사한 기능을 한 모듈에 모음 (예: 모든 출력 관련 기능).
    3. 시간적 (Temporal): 특정 시간에 실행되는 기능들을 모음 (예: 초기화 루틴).
    4. 절차적 (Procedural): 순차적인 실행 단계를 모음.
    5. 통신적 (Communicational): 동일한 입출력 데이터를 사용하는 기능을 모음.
    6. 순차적 (Sequential): 한 기능의 출력이 다음 기능의 입력이 됨.
    7. 기능적 (Functional): [최고] 모듈 내의 모든 요소가 단 하나의 기능을 위해 유기적으로 동작함.

Ⅲ. 융합 비교 및 다각도 분석 (Comparison & Synergy)

항목낮은 응집도 (Low Cohesion)높은 응집도 (High Cohesion)
코드 가독성복잡하고 분석이 힘듦명확하고 한눈에 들어옴
재사용성불가능 (필요 없는 기능까지 딸려옴)높음 (필요한 기능만 딱 가져옴)
유지보수성수정 시 관련 없는 곳에서 오류 발생영향 범위가 국한되어 안전함
테스트 용이성테스트 시나리오가 매우 복잡해짐단순하고 명확한 테스트 가능

Ⅳ. 실무 적용 및 기술사적 판단 (Strategy & Decision)

  • 기술사적 판단: 응집도는 결합도(Coupling)와 동전의 양면 관계이다. 응집도를 높이면 자연스럽게 모듈 간의 결합도는 낮아진다. 이는 소프트웨어 아키텍처의 황금률인 **"High Cohesion, Loose Coupling"**을 실현하는 핵심 출발점이다.
  • 설계 전략: 클래스를 설계할 때 메서드가 클래스의 필드(멤버 변수)를 얼마나 많이 사용하는지 확인하라. 필드를 거의 사용하지 않는 메서드가 있다면, 그 메서드는 응집도를 떨어뜨리고 있는 것이므로 다른 클래스로 옮겨야 할 신호이다.

Ⅴ. 기대효과 및 결론 (Future & Standard)

  • 기대효과: 시스템 전체의 복잡도가 감소하고, 개발 효율성이 증대된다. 모듈의 독립성이 확보되어 마이크로서비스(MSA) 분할 시에도 명확한 경계를 설정할 수 있다.
  • 결론: 높은 응집도는 단순한 '깔끔한 코드'를 넘어, 시스템의 생명주기를 연장하고 비즈니스 변화에 민첩하게 대응하게 하는 아키텍처적 기반이다.

📌 관련 개념 맵 (Knowledge Graph)

  • 상위 개념: 구조적 설계 지표, 소프트웨어 품질 속성
  • 동급 개념: 결합도(Coupling), 단일 책임 원칙(SRP)
  • 연관 기술: 모듈화(Modularity), 캡슐화(Encapsulation)

👶 어린이를 위한 3줄 비유 설명

  1. 필통 안에 연필, 지우개, 자가 들어있으면 필기할 때 아주 편해요. (높은 응집도)
  2. 그런데 필통 안에 숟가락이랑 양말이 같이 들어있으면 물건 찾기가 너무 힘들겠죠? (낮은 응집도)
  3. 끼리끼리 잘 모아두면 공부도 잘되고 방 정리도 훨씬 쉽답니다!