소프트웨어 모듈 응집도와 결합도
SW설계응집도/결합도
읽는데 10분 소요
처음 쓰여진 날: 2025-09-24
마지막 수정일: 2025-09-24
조회수: 18
요약
소프트웨어 설계의 핵심 원칙인 응집도(Cohesion)와 결합도(Coupling)의 개념을 이해하고, 각 7가지, 6가지 유형을 예시와 함께 알아봅니다. 정보처리기사 실기 대비 문제로 학습을 마무리합니다.
각 응집도와 결합도의 유형별 특징과 순서를 암기하는 것이 중요합니다.
응집도와 결합도 한눈에 보기
소프트웨어의 품질을 결정하는 중요한 두 가지 척도는 응집도와 결합도입니다.
- 응집도(Cohesion): 모듈 내부의 요소들의 밀접 정도를 나타냅니다. 높을수록 좋습니다.
- 결합도(Coupling): 모듈과 모듈 간의 상호 의존 정도를 나타냅니다. 낮을수록 좋습니다.
아래 표는 응집도와 결합도 모두 높은 순서대로 정렬되어있습니다.
응집도 (Cohesion) - 높을수록 좋음 | 결합도 (Coupling) - 낮을수록 좋음 |
---|---|
기능적 (Functional) | 내용 (Content) |
순차적 (Sequential) | 공통 (Common) |
통신적(교환적) (Communicational) | 외부 (External) |
절차적 (Procedural) | 제어 (Control) |
시간적 (Temporal) | 스탬프 (Stamp) |
논리적 (Logical) | 자료 (Data) |
우연적 (Accidental) |
모듈 응집도 (Cohesion)
응집도는 하나의 모듈이 단일 기능을 수행하기 위해 그 구성요소1 들이 얼마나 긴밀하게 협력하는지를 나타내는 척도입니다. 응집도가 높을수록 모듈의 독립성이 높아져 재사용과 유지보수가 용이해집니다.
응집도별 핵심 키워드
응집도 유형 | 핵심 키워드 |
---|---|
기능적 | 단일 목적 |
순차적 | 이전 기능의 출력을 다음 기능의 입력으로 사용, 기능간의 의존성 |
통신적(교환적) | 동일한 입력 및 출력 데이터 |
절차적 | 입출력 간 연관성은 없으나 순서에 따라 실행 |
시간적 | 특정 시간에 함께 실행 |
논리적 | 유사한 성격, 특정 분류 |
우연적 | 아무런 관련이 없음 |

기능적 응집도 (Functional Cohesion)
- 모듈 내부의 모든 기능이 단일 목적을 수행하기 위해 구성된 경우입니다. 가장 이상적인 응집도입니다.
- 예시:
원의_넓이_계산
모듈은 반지름을 입력받아 원의 넓이를 계산하는 단 하나의 기능만 수행합니다.
순차적 응집도 (Sequential Cohesion)
- 한 기능의 출력이 다른 기능의 입력으로 사용되는 순차적인 관계를 가진 기능들을 묶은 경우입니다.
- 때문에 기능간의 의존성이 존재합니다.
- 예시:
파일_처리
모듈에서파일_읽기()
함수의 출력(파일 내용)이데이터_압축()
함수의 입력으로 사용되는 경우.
통신적(교환적) 응집도 (Communicational Cohesion)
- 동일한 입력 데이터를 사용하거나 동일한 출력 데이터를 생성하는 기능들을 묶은 경우입니다.
- 예시:
학생_정보_출력
모듈이 '학번'을 입력받아 해당 학생의이름_조회()
,성적_조회()
,주소_조회()
기능을 수행하고 출력하는 경우.
절차적 응집도 (Procedural Cohesion)
- 모듈 내 기능들이 정해진 순서에 따라 실행되어야 할 때 이를 하나의 모듈로 묶은 경우입니다.
- 예시:
사용자_데이터_처리
모듈데이터_읽기()
,데이터_유효성_검사()
,데이터_저장()
함수를 순서대로 호출하는 경우.
시간적 응집도 (Temporal Cohesion)
- 특정 시간에 함께 실행되어야 하는 기능들을 묶은 경우입니다.
- 예시: 프로그램 시작 시 함께 실행되어야 하는 초기화 코드들(변수 초기화, 환경 설정, 로그 파일 열기)을 모아놓은
initialize
모듈.
논리적 응집도 (Logical Cohesion)
- 유사한 성격을 갖거나 특정 분류에 속하는 기능들을 하나의 모듈로 묶은 경우입니다.
- 예시: 모든 종류의
입력
작업을 처리하는 모듈. 마우스, 키보드, 터치스크린 입력이 모두 한 함수 내에서 case문으로 분기 처리됩니다.
우연적 응집도 (Accidental Cohesion)
- 모듈 내부의 구성요소들이 아무런 관련이 없는 경우입니다. 가장 낮은 수준의 응집도입니다.
- 예시:
Utils
모듈에 서로 관련 없는 함수들(e.g.,sendEmail
,calculateSum
,printReport
)을 모아놓은 경우.
모듈 결합도 (Coupling)
결합도는 모듈 간에 서로 얼마나 의존하는지를 나타내는 척도입니다. 결합도가 낮을수록 한 모듈의 변경이 다른 모듈에 미치는 영향이 적어져 시스템의 유지보수성과 확장성이 향상됩니다.
결합도별 핵심 키워드
결합도 유형 | 핵심 키워드 |
---|---|
내용 | 다른 모듈 내부 변수나 기능 직접 사용 |
공통 | 전역 변수 참조 및 갱신 |
외부 | 외부 데이터 형식, 통신 프로토콜 공유 |
제어 | 제어 요소 전달 |
스탬프 | 자료구조 전달 |
자료 | 최소한의 데이터만 파라미터로 주고받음 |

내용 결합도 (Content Coupling)
- 한 모듈이 다른 모듈의 내부 기능이나 데이터를 직접 참조하거나 수정하는 경우입니다. 가장 높은 수준의 결합도입니다.
- 예시: A 모듈이 B 모듈의 코드 중간으로 분기하거나, B 모듈 내부의 지역 변수를 직접 사용하는 경우.
공통 결합도 (Common Coupling)
- 여러 모듈이 하나의 전역 변수나 공통 데이터 영역을 공유하여 사용하는 경우입니다.
- 예시: 여러 모듈이
GlobalConfig
라는 전역 객체의 설정 값을 읽고 수정하는 경우.
외부 결합도 (External Coupling)
- 두 모듈이 외부에서 정의된 데이터 형식, 통신 프로토콜, 또는 특정 하드웨어를 공유하는 경우입니다.
- 예시: 두 모듈이 외부 파일의 특정 포맷을 공유하여 데이터를 읽고 쓰는 경우.
제어 결합도 (Control Coupling)
- 한 모듈이 다른 모듈의 동작을 제어하는 제어 신호(Flag, Switch)를 전달하는 경우입니다.
- 예시: A 모듈이 B 모듈을 호출하면서
정렬_방식
플래그를 전달하여 B 모듈이 오름차순으로 동작할지 내림차순으로 동작할지 결정하게 하는 경우.
스탬프 결합도 (Stamp Coupling)
- 두 모듈이 자료 구조(객체, 레코드 등)를 주고받지만, 그중 일부 데이터만 사용하는 경우입니다.
- 예시:
학생
객체(학번, 이름, 주소, 연락처 포함)를주소_출력
모듈에 전달하지만, 모듈은주소
필드만 사용하는 경우.
자료 결합도 (Data Coupling)
- 두 모듈이 필요한 최소한의 데이터(단순 파라미터)만을 주고받는 경우입니다. 가장 이상적인 결합도입니다.
- 예시:
덧셈
모듈이 두 개의 숫자a
와b
를 파라미터로 받아 그 합을 반환하는 경우.
정보처리기사 실기 대비 문제
기출 | |
문제 | 다음 괄호 안에 공통으로 들어갈 응집도 유형을 적으시오.
( ) 응집도는 이전 기능의 출력을 다음 기능의 입력으로 사용하는 경우의 응집도이다.
( ) 응집도는 한 기능이 작업을 수행한 결과가 다음 기능의 입력으로 연결되는 형태의 응집도로 기능간의 의존성이 존재한다. |
답변 | |
정답 | 정답 보기 |
기출 | |
문제 | 다음 보기의 응집도를 높은 것부터 낮은 순으로 나열하시오. |
보기 | |
답변 | 1: 2: 3: 4: 5: 6: 7: |
정답 | 정답 보기 |
문제 | 결합도를 높은 것부터 낮은 순으로 나열하시오. |
보기 | |
답변 | 1: 2: 3: 4: 5: 6: |
정답 | 정답 보기 |
문제 | 모듈 내부의 요소들이 하나의 목적을 위해 얼마나 긴밀하게 연관되어 있는지를 나타내는 척도는 무엇인가? |
답변 | |
정답 | 정답 보기 |
문제 | 모듈 간의 상호 의존성 정도를 나타내며, 낮을수록 좋은 설계로 평가받는 것은 무엇인가? |
답변 | |
정답 | 정답 보기 |
기출 | |
문제 | 응집도 유형 중, 모듈 내 모든 기능이 단일 목적을 수행하기 위해 구성된 응집도를 ( ) 응집도라고 한다. |
보기 | |
답변 | |
정답 | 정답 보기 |
문제 | 결합도 유형 중, 두 모듈이 필요한 최소한의 데이터만을 파라미터로 주고받아 가장 바람직한 것으로 평가받는 결합도를 ( ) 결합도라고 한다. |
보기 | |
답변 | |
정답 | 정답 보기 |
기출 | |
문제 | 다른 모듈 내부에 있는 변수나 기능을 또 다른 모듈에서 사용하는 경우의 결합도를 ( ) 결합도라고 한다. |
보기 | |
답변 | |
정답 | 정답 보기 |
기출 | |
문제 | 모듈 간의 인터페이스로 배열이나 객체, 구조 등 자료구조가 전달되는 경우의 결합도를 ( ) 결합도라고 한다. |
보기 | |
답변 | |
정답 | 정답 보기 |
기출 | |
문제 | 파라미터가 아닌 모듈 밖에 선언된 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 모듈 간 데이터를 주고받는 경우의 결합도를 ( ) 결합도라고 한다. |
보기 | |
답변 | |
정답 | 정답 보기 |
기출 | |
문제 | 결합도 중 제어 요소가 전달되는 경우의 결합도를 영어로 ( ) Coupling이라고 한다. |
보기 | |
답변 | |
정답 | 정답 보기 |
기출 | |
문제 | 입출력 간 연관성은 없으나 순서에 따라 실행되어야 하는 경우의 응집도를 ( ) 응집도라고 한다. |
보기 | |
답변 | |
정답 | 정답 보기 |
기출 | |
문제 | 동일한 입력 데이터를 사용하거나 동일한 출력 데이터를 생성하는 기능들을 묶은 경우의 응집도를 ( ) 응집도라고 한다. |
보기 | |
답변 | |
정답 | 정답 보기 |
Footnotes
-
모듈 내부의 요소들(함수, 변수, 클래스 등)을 의미합니다. ↩