복잡한뇌구조마냥

[CS] 응집도(Cohesion)와 결합도(Coupling) 정리 본문

공통/CS

[CS] 응집도(Cohesion)와 결합도(Coupling) 정리

지금해냥 2025. 10. 31. 00:44

🧩 1. 모듈화(Modularity)란?

  • 정의: 프로그램을 기능별로 나눈 **독립적인 단위(모듈)**로 구성하는 설계 기법
  • 목적: 유지보수성, 재사용성, 확장성 향상
  • 핵심 원칙:
  • 좋은 설계란 응집도는 높게, 결합도는 낮게 만드는 것이다.

🧱 2. 응집도(Cohesion)

💡 정의

하나의 모듈 내부 구성 요소들이 얼마나 밀접하게 연관되어 있는가를 나타내는 척도
모듈이 하나의 명확한 기능을 수행할수록 응집도가 높다.

🔼 응집도의 종류 (낮음 → 높음)

단계 응집도 종류 설명
우연적 응집 (Coincidental) 서로 관련 없는 기능이 우연히 모임 임시로 모아둔 유틸 함수
논리적 응집 (Logical) 유사한 기능을 논리적으로 묶음 입력 방식별 처리 함수
시간적 응집 (Temporal) 특정 시점에 함께 실행되는 기능 프로그램 시작 시 초기화
절차적 응집 (Procedural) 순차적 처리 단계로 묶음 로그인 → 검증 → 저장 순
통신적 응집 (Communicational) 동일한 데이터에 접근하는 기능 같은 파일을 읽는 여러 함수
순차적 응집 (Sequential) 한 기능의 결과가 다음 기능의 입력으로 연결 데이터 처리 → 저장
기능적 응집 (Functional) 하나의 기능만 수행 로그인 검증, 결제 처리 등

✅ 응집도는 높을수록 좋다.
(한 기능에 집중할수록 유지보수와 테스트가 용이)


🔗 3. 결합도(Coupling)

💡 정의

모듈 간의 의존성 혹은 연결 정도를 나타내는 척도
결합도가 낮을수록 모듈 간 독립성이 높아지고 수정이 쉬워진다.

🔽 결합도의 종류 (낮음 → 높음)

단계 결합도 종류 설명 예시
자료 결합 (Data Coupling) 필요한 데이터만 인자로 전달 login(id, pw) 처럼 단순 데이터 전달
스탬프 결합 (Stamp Coupling) 자료구조 전체를 인자로 전달 User 객체 전체 전달 후 일부만 사용
제어 결합 (Control Coupling) 제어 신호(플래그 등)를 전달 true/false로 동작 분기
외부 결합 (External Coupling) 외부 장치나 인터페이스 공유 동일 파일, 포트, 프로토콜 공유
공통 결합 (Common Coupling) 전역 변수, 공용 데이터 공유 전역 변수 globalVar 사용
내용 결합 (Content Coupling) 한 모듈이 다른 모듈 내부 접근 A 모듈이 B의 내부 변수 수정

✅ 결합도는 낮을수록 좋다.
(독립성이 높고 변경의 영향이 적음)


⚖️ 4. 요약 정리

 

항목 응집도(Cohesion) 결합도(Coupling)
의미 모듈 내부의 관련성 모듈 간의 의존성
방향 높을수록 좋음 낮을수록 좋음
이상적 상태 기능 단일화 독립성 확보
핵심 키워드 집중 분리
기억법 “응집도는 ↑, 결합도는 ↓”  

✍️ 한 줄 요약

💡 좋은 프로그램 = 응집도는 높게, 결합도는 낮게!

LIST