응집도(Cohesion)는 모듈을 이루고 있는 각 요소들이 공통의 목적을 달성하기 위해 얼마나 관련되어 있는지를 나타내는 개념이다. 응집도가 높다는 것은 모듈이 하나의 명확한 목적을 위해 잘 통합되어 있다는 뜻이며, 이런 모듈이 좋은 설계로 평가된다. 결합도(Coupling)가 모듈 사이의 의존도를 재는 지표인 것과 대비된다. 응집도는 모듈 '안'의 관련성, 결합도는 모듈 '사이'의 의존성을 본다.
바람직한 모듈 설계는 응집도는 강하게, 결합도는 약하게 유지하는 것이다. 응집도가 강하면 모듈의 목적이 명확해져 이해와 유지보수가 쉬워지고, 결합도가 약하면 모듈이 독립적이라 수정이 다른 모듈에 미치는 영향이 작다. 가장 이상적인 조합은 기능적 응집도를 가지면서 모듈 간에 최소한의 데이터만 주고받는 자료결합도다.
응집도는 유형별로 강도가 갈린다. 기능적 응집도는 모듈이 단일한 하나의 기능을 수행하는 가장 강한 응집도다. 순차적 응집도는 한 활동의 출력 자료가 그다음 활동의 입력 자료로 이어지는 형태다. 교환적(통신적) 응집도는 모듈 안의 요소들이 동일한 입력 데이터나 출력을 공유하는 형태이고, 논리적 응집도는 유사한 기능을 가진 요소들을 논리적으로 묶은 낮은 수준의 응집이다. 약한 것부터 강한 순서는 논리적, 시간적, 절차적, 교환적, 순차적, 기능적이다.
모듈화 설계와도 이어진다. 모듈을 나누는 목적은 오류의 파급 효과를 줄이고 재사용과 관리를 쉽게 하는 것이므로, 모듈의 동작은 늘 예측 가능하도록 정의해야 한다. 높은 응집도가 모듈 설계의 기본 목표로 제시된다.
예제
시험에서는 '모듈의 응집도가 약한 것부터 강한 순서로 옳게 나열된 것은?'처럼 순서를 묻는 문제가 나온다. 논리적→시간적→기능적 순으로 오르는 순서를 외우면 된다. '한 활동의 출력이 다음 활동의 입력으로 사용되는 응집도는?'이라는 정의형 문제의 답은 순차적 응집도이고, '공통의 목적을 달성하기 위한 관련 정도를 나타내는 것은?'의 답은 응집도다. '기능적 응집도와 자료결합도'의 짝이 이상적인 모듈의 조합으로 출제되기도 한다.
대표 기출 3문항
모듈의 응집력(Cohesion)에 대한 설명 중 틀린 것은?
모듈의 응집도란 모듈안의 요소들이 서로 관련되어 있는 정도를 말한다.
기능적 응집도(Functional Cohesion)는 한 모듈 내부의 한 기능요소에 의한 출력자료가 다음 기능 원소의 입력 자료로서 제공되는 형태이다.
교환적 응집도(Communication Cohesion)는 동일한 입력과 출력을 사용하는 소작업들이 모인 모듈에서 볼 수 있다.
논리적 응집도(Logical Cohesion)는 유사한 성격을 갖거나 특정형태로 분류되는 처리요소들로 하나의 모듈이 형성되는 경우이다.
정답과 해설 보기
정답 ② · 모듈의 응집력에 대한 설명 중 틀린 것을 고르는 문제이다. 기능적 응집도는 모듈 내 모든 기능 요소들이 단일 문제를 수행하기 위해 결합된 가장 바람직한 응집도로, 문제의 2번처럼 한 기능 요소의 출력이 다음 기능 요소의 입력으로 제공되는 형태는 순차적 응집도에 해당하는 설명이다.
기능적 응집도는 한 기능의 출력이 다음 기능의 입력이 되는 형태이며, 교환적 응집도는 동일한 데이터를 사용하는 형태이다.
모듈을 이루고 있는 각 요소들이 공통의 목적을 달성하기 위하여 얼마나 관련이 있는가를 나타내는 것을 무엇이라고 하는가?
결합도(coupling)
응집도(cohesion)
구조도(structure)
일치도(unity)
정답과 해설 보기
정답 ② · 모듈 내부 요소들의 기능적 관련성 정도를 나타내는 용어를 묻는 문제이다. 응집도(cohesion)는 하나의 모듈을 이루는 내부 요소들이 공통의 목적을 달성하기 위해 얼마나 밀접하게 관련되어 있는가를 나타내는 척도로, 응집도가 강할수록 좋은 모듈이다.
모듈 내부 요소 간 관련성을 나타내는 것은 응집도(cohesion)이며, 결합도는 모듈 간 의존성을 의미한다.
모듈을 설계하기 위해서 바람직한 응집도(cohesion)와 결합도(coupling)의 관계는?
응집도는 약하고 결합도는 강해야 한다.
응집도는 강하고 결합도는 약해야 한다.
응집도도 약하고 결합도도 약해야 한다.
응집도도 강하고 결합도도 강해야 한다.
정답과 해설 보기
정답 ② · 좋은 모듈 설계를 위한 응집도와 결합도의 바람직한 관계를 묻는 문제이다. 응집도는 모듈 내부 요소들의 관련성 정도이고 결합도는 모듈 간의 의존성 정도인데, 이상적인 설계는 모듈 안에서는 하나의 목적에 집중하고 모듈 밖과는 느슨하게 연결되는 것이다.