응집이란 무엇입니까?

hi·2023년 3월 16일
0

아키텍처

목록 보기
5/7
post-thumbnail

응집이란 무엇입니까

Cohesion은 한 모듈의 구성 요소가 동일한 모듈 안에 얼마나 포함되어 있는지를 나타냅니다. 즉, 모듈을 구성하는 요소들이 얼마나 서로 연관되어 있는가에 관한 것입니다.


응집도의 측정 범위

기능적 응집 (Functional Cohesion)

모듈의 각 파트는 다른 파트와 연관되어 있고 기능상 꼭 필요한 모든 것이 모듈에 들어있습니다.

순차적 응집 (Sequential Cohesion)

한쪽 모듈에서 데이터를 출력하면 다른 모듈에서 그것을 입력 받는 형태로 상호작용합니다.

소통적 응집 (Communication Cohesion)

두 모듈이, 각자 정보에 따라 작동하거나 어떤 출력을 내는 형태로 Communication Chain을 형성합니다. 예를 들면, 데이터베이스에 레코드를 추가하면 그 정보에 따라 이메일이 생성되는 경우입니다.

절차적 응집 (Procedural Cohesion)

두 모듈은 정해진 순서대로 실행되어야 합니다.

일시적 응집 (Temporal Cohesion)

모듈은 시점 의존성 (Timing Dependency)에 따라 연관됩니다. 예를 들어, 많은 시스템들이 시동할 때 그다지 관련 없어보니는 것들을 초기화하는 경우가 많은데, 이런 작업들이 일시적으로 응집되었다고 할 수 있습니다.

논리적 응집 (Logical Cohesion)

모듈의 내부 데이터는 기능적이 아니라, 논리적으로 연관되어 있습니다. 예를 들면, 텍스트, Serialize 객체, 스트림 형태로 받은 데이터를 변환하는 모듈이 그렇습니다. 서로 연관된 작업들이지만 하는 일은 전혀 다릅니다. 논리적 응집의 좋은 예론 StringUtils 패키지에서 찾아볼 수 있습니다. StringUtils 패키지에는 각기 다른 작업을 수행하는 정적 메서드가 많지만 서로 연관성은 없습니다.

동시적 응집 (Coincidental Cohesion)

같은 소스 파일에 모듈 구성 요소가 들어 있지만 그 외에는 아무 연관성도 없습니다. 이는 좋지 않은 형태의 응집입니다.

0개의 댓글