응집도(Cohesion)와 결합도(Coupling)

1. 정의

(1) 응집도(Cohesion)

• 하나의 모듈(클래스, 함수, 컴포넌트 등) 내부 구성 요소들이 하나의 목적을 위해 얼마나 밀접하게 관련되어 있는지를 나타내는 척도.
• 응집도가 높을수록 모듈의 독립성, 재사용성, 유지보수성이 향상됨.

(2) 결합도(Coupling)

• 서로 다른 모듈 간의 의존성 정도를 나타내는 척도.
• 결합도가 낮을수록 모듈 간 독립성이 높아지고, 변경 시 영향 범위가 줄어듦.

2. 응집도와 결합도의 관계

• 좋은 모듈 설계 원칙: 응집도는 높이고, 결합도는 낮춘다.
• 응집도 ↑ → 모듈 자체의 목적성·자율성 강화
• 결합도 ↓ → 모듈 간 영향 최소화, 재사용 및 유지보수 용이


3. 응집도 및 결합도 종류

구분 응집도의 종류 (낮음 -> 높음) 결합도의 종류 (높음 → 낮음)

나쁜 설계








좋은 설계
우연적 응집
: 관련 없는 기능이 한 모듈에 모임
내용 결합
: 한 모듈이 다른 모듈 내부 코드 직접 참조 (최악)
논리적 응집
: 유사한 성격의 기능을 그룹화 (예: 입력 처리 루틴)
공통 결합
: 전역 변수 공유
시간적 응집
: 특정 시점에 실행되는 기능 집합 (예: 초기화 루틴)
외부 결합
: 어떤 모듈이 외부에 있는 다른 모듈의 데이터를 참조
절차적 응집
: 특정 절차 순서에 따른 기능 그룹화
제어 결합
: 제어 신호(플래그)를 전달하여 동작 제어
교환적 응집
: 동일한 입력 또는 출력 데이터를 사용하는 기능 묶음
스탬프 결합
: 데이터 구조 전체를 전달하나 일부만 사용
순차적 응집
: 한 기능의 출력이 다음 기능의 입력으로 사용
자료 결합
: 필요한 데이터만 매개변수로 전달 (이상적)
기능적 응집
: 모듈 전체가 단일 기능을 수행 (가장 높은 응집도)
 


4. 활용 및 시사점

• 소프트웨어 아키텍처 및 설계 품질의 핵심 척도
• 클린 코드, 마이크로서비스 아키텍처(MSA) 등 현대 개발 패러다임에서도 적용
• 정보관리기술사 시험에서 응집도와 결합도는 반드시 함께 설명해야 하는 핵심 개념

5. 결론

응집도와 결합도는 모듈화(Modularity)의 두 축으로, 높은 응집도와 낮은 결합도를 지향하는 것이 바람직하다.
이는 유지보수성, 확장성, 재사용성을 높여 성공적인 소프트웨어 개발을 가능하게 한다.


+ Recent posts