본문 바로가기

CS 공부

CS) 응집도 ( Cohesion )

1. 응집도 ( Cohesion )란?

응집도란 모듈 ( 클래스, 함수, 컴포넌트 등 ) 내부의 요소들이 서로 관련되어 있는 정도를 의미합니다.

  • 높은 응집도: 모듈이 하나의 명확한 목적을 가짐 → 유지보수성과 재사용성이 높아짐
  • 낮은 응집도: 여러 목적이 섞여 있어 유지보수와 재사용이 어려움
 

2. 응집도의 유형

응집도는 낮은 수준 → 높은 수준으로 여러 가지 유형이 있습니다.

유형 설명
우연적 응집 ( Coincidental Cohesion ) 관련 없는 기능들이 한 모듈에 우연히 포함됨
논리적 응집 ( Logical Cohesion ) 비슷한 작업(예: 여러 포맷으로 출력)이 한 모듈에 포함됨
시간적 응집 ( Temporal Cohesion ) 특정 시점(예: 초기화 과정)에서 실행되는 기능들이 포함됨
절차적 응집 ( Procedural Cohesion ) 특정 순서로 실행되는 작업들이 포함됨
통신적 응집 ( Communicational Cohesion ) 동일한 데이터 집합을 사용하는 작업들이 포함됨
순차적 응집 ( Sequential Cohesion ) 하나의 출력이 다음 기능의 입력으로 사용됨
기능적 응집 ( Functional Cohesion ) 모듈이 단 하나의 기능만 수행 (가장 높은 응집도)
 

3. 응집도를 높이는 방법

응집도를 높이면 코드의 유지보수성과 재사용성이 향상된다.

  • 하나의 모듈이 하나의 책임을 가지도록 설계하기 ( SRP: Single Responsibility Principle )
  • 관련 없는 기능을 분리하고 관련된 기능을 묶기
  • 캡슐화를 통해 모듈 내부의 결합도를 낮추기
  • 함수나 클래스를 작고 명확하게 유지하기
 

4. 결론

  • 응집도는 좋은 소프트웨어 설계를 위한 핵심 요소 중 하나다.
  • 높은 응집도를 유지하면 유지보수성과 가독성이 향상되며, 코드의 재사용성이 증가한다.