소프트웨어 모듈 응집도와 결합도

SW설계응집도/결합도
읽는데 10분 소요
처음 쓰여진 날: 2025-09-24
마지막 수정일: 2025-09-24

요약

소프트웨어 설계의 핵심 원칙인 응집도(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)

  • 두 모듈이 필요한 최소한의 데이터(단순 파라미터)만을 주고받는 경우입니다. 가장 이상적인 결합도입니다.
  • 예시: 덧셈 모듈이 두 개의 숫자 ab를 파라미터로 받아 그 합을 반환하는 경우.

정보처리기사 실기 대비 문제

기출
문제
다음 괄호 안에 공통으로 들어갈 응집도 유형을 적으시오. ( ) 응집도는 이전 기능의 출력을 다음 기능의 입력으로 사용하는 경우의 응집도이다. ( ) 응집도는 한 기능이 작업을 수행한 결과가 다음 기능의 입력으로 연결되는 형태의 응집도로 기능간의 의존성이 존재한다.
답변
정답정답 보기
기출
문제
다음 보기의 응집도를 높은 것부터 낮은 순으로 나열하시오.
보기
답변
1:
2:
3:
4:
5:
6:
7:
정답정답 보기
문제
결합도를 높은 것부터 낮은 순으로 나열하시오.
보기
답변
1:
2:
3:
4:
5:
6:
정답정답 보기
문제
모듈 내부의 요소들이 하나의 목적을 위해 얼마나 긴밀하게 연관되어 있는지를 나타내는 척도는 무엇인가?
답변
정답정답 보기
문제
모듈 간의 상호 의존성 정도를 나타내며, 낮을수록 좋은 설계로 평가받는 것은 무엇인가?
답변
정답정답 보기
기출
문제
응집도 유형 중, 모듈 내 모든 기능이 단일 목적을 수행하기 위해 구성된 응집도를 ( ) 응집도라고 한다.
보기
답변
정답정답 보기
문제
결합도 유형 중, 두 모듈이 필요한 최소한의 데이터만을 파라미터로 주고받아 가장 바람직한 것으로 평가받는 결합도를 ( ) 결합도라고 한다.
보기
답변
정답정답 보기
기출
문제
다른 모듈 내부에 있는 변수나 기능을 또 다른 모듈에서 사용하는 경우의 결합도를 ( ) 결합도라고 한다.
보기
답변
정답정답 보기
기출
문제
모듈 간의 인터페이스로 배열이나 객체, 구조 등 자료구조가 전달되는 경우의 결합도를 ( ) 결합도라고 한다.
보기
답변
정답정답 보기
기출
문제
파라미터가 아닌 모듈 밖에 선언된 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 모듈 간 데이터를 주고받는 경우의 결합도를 ( ) 결합도라고 한다.
보기
답변
정답정답 보기
기출
문제
결합도 중 제어 요소가 전달되는 경우의 결합도를 영어로 ( ) Coupling이라고 한다.
보기
답변
정답정답 보기
기출
문제
입출력 간 연관성은 없으나 순서에 따라 실행되어야 하는 경우의 응집도를 ( ) 응집도라고 한다.
보기
답변
정답정답 보기
기출
문제
동일한 입력 데이터를 사용하거나 동일한 출력 데이터를 생성하는 기능들을 묶은 경우의 응집도를 ( ) 응집도라고 한다.
보기
답변
정답정답 보기

Footnotes

  1. 모듈 내부의 요소들(함수, 변수, 클래스 등)을 의미합니다.