응집도와 결합도 차이: 높아야 하는 것과 낮아야 하는 것
모듈 내부의 응집도와 모듈 사이의 결합도를 구분하고, 기능적·순차적 응집도와 자료·내용 결합도의 판단 기준을 비교해요.
응집도는 한 모듈 내부 요소들이 같은 목적에 얼마나 밀접하게 연결되는지, 결합도는 서로 다른 모듈이 얼마나 의존하는지를 뜻해요. 일반적으로 응집도는 높이고 결합도는 낮추는 방향으로 설계해요. ‘높다·낮다’보다 먼저 모듈 안인가, 모듈 사이인가를 구분하세요.
같은 ‘관련 정도’라도 대상이 달라요
| 구분 | 응집도(Cohesion) | 결합도(Coupling) |
|---|---|---|
| 보는 범위 | 한 모듈 내부 | 서로 다른 모듈 사이 |
| 묻는 내용 | 내부 작업이 하나의 목적을 위해 모였나? | 상대의 데이터·처리 방식에 얼마나 의존하나? |
| 일반적인 설계 방향 | 높게 | 낮게 |
| 변경할 때의 관찰 | 한 목적의 수정이 한곳에 모이는가 | 한 모듈 수정이 다른 모듈 수정까지 요구하는가 |
Microsoft의 도메인 분석 문서도 명확한 하나의 목적과, 다른 서비스를 동시에 수정하지 않고 바꿀 수 있는지를 각각 응집과 느슨한 결합의 판단에 사용해요. 의존을 모두 없애라는 뜻은 아니에요. 필요한 협력은 공개된 인터페이스를 통해 분명하게 표현해요.
응집도: 무엇 때문에 함께 모였나요?
정보처리기사의 전통적인 일곱 단계 분류를 낮은 쪽부터 높은 쪽으로 정리했어요.
| 유형 | 함께 묶인 이유 | 보기에서 찾을 단서 |
|---|---|---|
| 우연적(Coincidental) | 뚜렷한 관련 없이 모임 | 서로 관계없는 작업의 모음 |
| 논리적(Logical) | 성격이 비슷한 작업 중 하나를 선택 | 여러 입력 방식 등을 종류별로 묶고 선택 |
| 시간적(Temporal) | 비슷한 시점에 실행 | 시작·종료 시 처리할 작업을 모음 |
| 절차적(Procedural) | 정해진 실행 순서를 지킴 | 작업 순서의 연관성이 중심 |
| 교환적·통신적(Communicational) | 같은 입력·출력 자료를 다룸 | 동일한 자료를 사용하는 여러 처리 |
| 순차적(Sequential) | 앞 처리의 출력이 뒤 처리의 입력 | 처리 결과를 다음 단계에 전달 |
| 기능적(Functional) | 모두 하나의 명확한 기능에 기여 | 단일한 목적을 수행하는 작업들 |
용어는 교재에 따라 교환적·통신적처럼 번역이 달라질 수 있어요. 이름뿐 아니라 영어와 정의를 함께 확인해요. 단순히 ‘순서대로 실행한다’면 절차적, 데이터가 앞 단계의 출력에서 다음 단계의 입력으로 이어진다면 순차적이라는 단서가 더 강해요.
결합도: 다른 모듈의 무엇을 알고 있나요?
아래는 해당 시험 분류의 약한 쪽부터 강한 쪽으로 나열한 것이에요.
| 유형 | 의존하는 방식 | 구분할 단서 |
|---|---|---|
| 자료(Data) | 필요한 개별 데이터를 매개변수로 전달 | 계산에 필요한 값 전달 |
| 스탬프(Stamp) | 구조체·레코드 같은 자료 구조를 전달 | 구조 전체의 형식에 의존 |
| 제어(Control) | 상대의 처리 경로를 정하는 제어 정보를 전달 | 처리 방식을 지시하는 플래그 |
| 외부(External) | 외부에서 정한 형식·프로토콜·장치 인터페이스 등에 의존 | 외부 규약의 변경이 여러 모듈에 영향 |
| 공통(Common) | 공통 데이터 영역을 공유 | 여러 모듈이 같은 전역 자료를 사용 |
| 내용(Content) | 다른 모듈의 내부 자료·처리에 직접 관여 | 상대 내부를 직접 참조·수정 |
매개변수가 불리언이라고 무조건 제어 결합도는 아니에요. 실제 업무 데이터인지, 상대에게 어떤 알고리즘을 실행할지 지시하는 정보인지 봐야 해요. 객체를 전달하는 현실의 모든 설계가 나쁘다는 뜻도 아니에요. 시험 분류에서는 무엇을 공유하고 어느 범위에 의존하는지 판단하는 것이 먼저예요.
짧은 설계 예시로 적용해요
아래는 새로 만든 설명용 예시이며 기출 원문이 아니에요.
| 상황 | 판단 | 이유 |
|---|---|---|
| 할인액 계산에 상품 금액과 할인율만 전달 | 자료 결합의 예 | 필요한 개별 값만 전달해요 |
| 할인율만 필요한 함수에 회원의 전체 레코드 전달 | 스탬프 결합의 예 | 회원 구조의 형식까지 공유해요 |
| 명령 번호에 따라 상대 모듈이 조회·삭제 중 하나를 실행 | 제어 결합의 예 | 호출자가 상대의 동작 방식을 지시해요 |
| 다른 모듈의 비공개 저장 공간을 직접 수정 | 내용 결합의 예 | 상대의 내부 구현에 의존해요 |
| 검증 결과를 변환 단계의 입력으로 넘기는 작업들을 모음 | 순차적 응집의 단서 | 앞 출력과 뒤 입력이 이어져요 |
‘가장 높다·낮다’는 보기 범위까지 읽어요
전체 분류에서는 기능적 응집도가 가장 높고, 자료 결합도가 가장 낮아요. 그러나 보기 중 가장 강한 응집도를 묻는데 기능적이 없으면, 제시된 유형끼리 비교해야 해요.
- 정보처리기사 2022년 2회 79번: 모듈 사이의 관련 정도를 응집도라고 설명한 ②가 저장된 정답이에요. 모듈 내부·사이의 정의가 뒤바뀌었는지 확인해요.
- 2021년 2회 73번: 보기 중 가장 강한 응집도는 ① 순차적이에요. 전체 단계의 최댓값과 보기 안의 최댓값을 구분해요.
- 2021년 2회 61번: 보기 중 가장 약한 결합도는 ④ 스탬프예요. 자료 결합도가 보기에 없는 경우예요.
각 문항을 푼 뒤 ‘어느 쪽이 더 좋다’만 말하지 말고, 정의의 대상과 실제 의존 방식을 한 문장으로 설명해 보세요. 현재 수록 지문·보기·정답은 2026년 10월 29일에 대조했어요.
개념 확인 자료
기출에서 확인해 보세요
수록된 실제 문항으로 이동해 직접 답을 골라보세요.