정처기 감자정처기 감자
SW 설계응집도/결합도

검색

검색어를 입력해 개념, 문제, 필기를 찾습니다.

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

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)

응집도 순서 외우기

응집도 7가지 유형을 낮은 것부터 높은 순서로 외우는 두음법칙입니다.

우연적 → 논리적 → 시간적 → 절차적 → 통신적 → 순차적 → 기능적

첫 글자를 따면 우논시절통순기! 이렇게 외워보세요:

"우리 논산 시절 통통한 순대 기억나?"

"우리가 논 시절 통 순수한 기억뿐"

응집도 두음법칙: 우리 논산 시절 통통한 순대 기억나?
우리 논산 시절 통통한 순대 기억나?

결합도 순서 외우기

결합도 6가지 유형을 높은 것부터 낮은 순서로 외우는 두음법칙입니다.

내용 → 공통 → 외부 → 제어 → 스탬프 → 자료

첫 글자를 따면 내공외제스자! 이렇게 외워보세요:

"내공 외제차 안맞게 스있자."

결합도 두음법칙: 내공 외제차 안맞게 스있자
내공 외제차 안맞게 스있자.

모듈 응집도 (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를 파라미터로 받아 그 합을 반환하는 경우.

Fan-in / Fan-out

응집도·결합도가 모듈 내부와 모듈 간 의존성을 보는 척도라면, Fan-in / Fan-out은 모듈 호출 관계의 방향과 개수를 세는 척도입니다. 모듈 관계 다이어그램에서 화살표가 호출 방향(상위 → 하위)을 나타낼 때 다음과 같이 정의됩니다.

용어의미다이어그램에서 세는 법
Fan-in어떤 모듈을 호출(사용)하는 상위 모듈 수모듈로 들어오는 화살표 개수
Fan-out어떤 모듈이 호출(사용)하는 하위 모듈 수모듈에서 나가는 화살표 개수

Fan-in이 높은 모듈

  • 여러 상위 모듈이 재사용한다는 뜻이므로 재사용성이 높습니다.
  • 그만큼 변경 시 영향 범위가 넓어 관리 비용이 증가합니다.

Fan-out이 높은 모듈

  • 너무 많은 하위 모듈을 호출한다는 뜻으로, 책임이 분산되지 않고 한 모듈에 몰려 있을 가능성이 큽니다.
  • 따라서 Fan-out이 지나치게 높은 모듈은 단순화나 모듈 분리를 검토합니다.

계산 예시

모듈 F의 Fan-in/Fan-out 예시 다이어그램
모듈 F를 기준으로 Fan-in과 Fan-out을 계산

위 다이어그램에서 모듈 F의 Fan-in과 Fan-out을 계산해 봅니다.

  • Fan-in (F로 들어오는 화살표) : A → F, B → F, C → F = 3
  • Fan-out (F에서 나가는 화살표) : F → G, F → H = 2

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

문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.

Footnotes

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


메가커피와 함께, 홈페이지 개선에 참여하세요! ☕
혹시 이용에 불편한 점이나 개선이 필요한 부분을 발견하셨나요? 댓글로 알려주시면 더 나은 감자가 될 수 있어요! 🥔 제보해주신 모든 분께 메가커피 기프티콘을 드립니다! (본인 이메일로 댓글 달아주셔야해요~)

관련 글

(42개)
제목태그업데이트시험
앱 설계(디자인패턴, 응집도-결합도,객체지향) 정보처리기사 실기 모의 시험
앱설계SW설계앱설계
2025-10-08응시
객체 지향 설계 원칙 - SOLID
객체지향SW설계앱설계객체지향
2025-10-11-
럼바우 객체 모델링 - 객(정)동기
객체지향SW설계앱설계객체지향
2025-10-08-
앱설계4개
제목태그업데이트시험
앱 설계(디자인패턴, 응집도-결합도,객체지향) 정보처리기사 실기 모의 시험
앱설계SW설계앱설계
2025-10-08응시
객체 지향 설계 원칙 - SOLID
객체지향SW설계앱설계객체지향
2025-10-11-
럼바우 객체 모델링 - 객(정)동기
객체지향SW설계앱설계객체지향
2025-10-08-
정보처리기사 실기를 위한 디자인 패턴 암기 방법
앱설계SW설계앱설계
2026-09-22-
SW설계38개
제목태그업데이트시험
디자인패턴 정보처리기사 실기 모의 시험
디자인패턴SW설계디자인패턴
2026-07-10응시
릴리스 노트 작성 항목
제품 소프트웨어 패키징SW설계제품 소프트웨어 패키징
2026-06-26-
UI 정보처리기사 실기 모의 시험
UI/UXSW설계UI/UX
2026-05-04응시
애자일(Agile) 방법론
애자일SW설계방법론애자일
2026-04-29-
코딩 컨벤션과 표기법
코딩 스타일SW설계코딩 스타일
2026-04-29-
소프트웨어 비용 산정 기법
비용 산정SW설계비용 산정
2026-04-29-
비기능 요구사항
요구사항SW설계요구사항
2026-04-29-
리팩토링(Refactoring)
리팩토링SW설계리팩토링
2026-04-29-
UI 설계 원칙
UI/UXSW설계UI/UX
2026-04-29-
UI 종류 (CLI·GUI·NUI·OUI·VUI)
UI/UXSW설계UI/UX
2026-04-29-
SW 설계 왕감자 정보처리기사 실기 모의 시험
SW설계SW설계
2025-11-04응시
UML 정보처리기사 실기 모의 시험
UMLSW설계UML
2025-10-08응시
소프트웨어 아키텍처 4+1 뷰 모델
UMLSW설계UML
2025-09-26-
UML 클래스 다이어그램의 6가지 관계
UMLSW설계UML
2025-10-26-
UML 다이어그램
UMLSW설계UML
2025-09-26-
추상 팩토리 abstract factory 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-02-
빌더 builder 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-02-
팩토리 메서드 factory method 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-11-03-
프로토타입 prototype 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-02-
싱글톤 singleton 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-02-
책임 연쇄 chain of responsibility 패턴 - 타입스크립트 예시
디자인패턴SW설계디자인패턴
2025-11-03-
커맨드 command 패턴 - 타입스크립트 예시
디자인패턴SW설계디자인패턴
2025-09-01-
인터프리터 interpreter 패턴 - 타입스크립트 예시
디자인패턴SW설계디자인패턴
2025-09-01-
이터레이터 iterator 패턴 - 타입스크립트 예시
디자인패턴SW설계디자인패턴
2025-09-01-
중재자 mediator 패턴 - 타입스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-01-
메멘토 memento 패턴 - 타입스크립트 예시
디자인패턴SW설계디자인패턴
2025-10-29-
옵저버 observer 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-01-
상태 state 패턴 - 타입스크립트 예시
디자인패턴SW설계디자인패턴
2025-09-01-
전략 strategy 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-01-
템플릿 메서드 template method 패턴 - 타입스크립트 예시
디자인패턴SW설계디자인패턴
2025-09-01-
방문자 Visitor 패턴 - 타입스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-01-
어댑터 adapter 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-02-
브릿지 bridge 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-01-
컴포지트 composite 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-01-
데코레이터 decorator 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-01-
퍼사드 facade 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-01-
플라이웨이트 flyweight 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-01-
프록시 proxy 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-01-
정처기 감자정처기 감자

정보처리기사 합격
도와줄라고 하는 감자

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 3회 이론 압축
  • 26년 3회 코딩 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 3회 이론 압축
  • 26년 3회 코딩 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매
© 2025 재현기획개발. All rights reserved.
  • 정처기 감자의 시작
  • 업데이트 로그
  • 개인정보 처리방침
  • 이용약관
상호명 : 재현기획개발 / 주소: 서울특별시 영등포구 영등포로 150, 지하1층 108호 L145 가라지(당산동1가, 생각공장 당산) / 대표: 김재현 / 전화: 010-8158-7127 / 통신판매업신고: 제2025-서울영등포-1569호 / 이메일: contact@edugamja.com / 사업자등록번호: 573-51-00999