본문 바로가기
정보처리기사/실기

[정보처리기사 실기] 결합도(Coupling)와 응집도(Cohesion)

by 보안매크로 2025. 4. 18.

1️⃣ 결합도 (Coupling)

모듈 간 의존성의 정도
하나의 모듈이 다른 모듈에 **얼마나 많이 연결되어 있는가?**를 나타냄

✔️ 결합도는 낮을수록 좋다 (❗낮은 결합도 지향)

  • 결합도가 높을수록: 모듈이 서로 강하게 의존, 변경에 취약
  • 결합도가 낮을수록: 모듈이 독립적, 유지보수·재사용성이 좋음

🔻 결합도 순서 (좋은(낮은) → 나쁜(높은))

자스제외공내

결합도설명
자료 결합(Data Coupling) 모듈이 데이터만 주고받음 (ex. 함수 매개변수) ✅ 가장 이상적
스탬프 결합(Stamp Coupling) 구조체 같은 불필요한 정보까지 포함된 데이터 전달
제어 결합(Control Coupling) 플래그 등으로 어떤 작업을 할지 지시
외부 결합(External Coupling) OS, 파일포맷 등 외부 시스템 의존성
공통 결합(Common Coupling) 전역 변수를 여러 모듈이 함께 사용
내용 결합(Content Coupling) 다른 모듈의 내부를 직접 접근/수정 ❌ 최악

2️⃣ 응집도 (Cohesion)

모듈 내부 구성 요소들이 얼마나 밀접하게 관련되어 있는가?
즉, 한 가지 일에 집중하는가?

✔️ 응집도는 높을수록 좋다 (✅ 높은 응집도 지향)

  • 응집도가 높을수록: 모듈이 명확하고 목적이 뚜렷, 이해·재사용 용이
  • 응집도가 낮을수록: 모듈이 이것저것 다 함, 혼란과 오류 유발

🔺 응집도 순서 (나쁜(낮은) → 좋은(높은))

우논시절통순기

응집도설명
우연적 응집(Coincidental Cohesion) 그냥 묶여 있는 함수들, 관련 없음 ❌ 최악
논리적 응집(Logical Cohesion) 비슷한 성격의 함수들이 논리적으로 묶여 있음 (ex. 여러 입출력 처리)
시간적 응집(Temporal Cohesion) 시간 순서에 따라 실행되는 작업들 (ex. 초기화 등)
절차적 응집(Procedural Cohesion) 순서대로 실행되지만 기능적 연관성 낮음
통신적 응집(Communicational Cohesion) 동일한 데이터에 접근하는 작업들이 묶임
순차적 응집(Sequential Cohesion) 한 작업의 출력이 다음 작업의 입력으로 연결
기능적 응집(Functional Cohesion) 모듈이 단 하나의 목적에 집중 ✅ 가장 이상적

✅ 요약 정리

항목결합도 (Coupling)응집도 (Cohesion)
지향 방향 낮을수록 좋다 높을수록 좋다
좋은 구조 자스제외공내 순으로 결합도 높음(안좋아짐) 우논시절통순기 순으로 응집도 높음(좋아짐)
효과 독립성, 유지보수성 향상 명확한 기능, 오류 감소, 재사용성 높음