| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
Tags
- 클론코딩
- 전역변수
- github
- 타입스크립트
- 컴포넌튼
- Strict
- ES5
- 10px
- npm
- 0.25px border
- 당근마켓
- 으
- Websocket
- ZOOM
- 1px border
- 서버리스 #
- TS
- jwt
- 0.75px border
- &연산
- 데이터베이스 #try #이중
- entity
- es6
- font-size
- 문서번호
- TypeScript
- literal
- 0.5px border
- angular
- Props
Archives
- Today
- Total
복잡한뇌구조마냥
[CS] 응집도(Cohesion)와 결합도(Coupling) 정리 본문
🧩 1. 모듈화(Modularity)란?
- 정의: 프로그램을 기능별로 나눈 **독립적인 단위(모듈)**로 구성하는 설계 기법
- 목적: 유지보수성, 재사용성, 확장성 향상
- 핵심 원칙:
- 좋은 설계란 응집도는 높게, 결합도는 낮게 만드는 것이다.
🧱 2. 응집도(Cohesion)
💡 정의
하나의 모듈 내부 구성 요소들이 얼마나 밀접하게 연관되어 있는가를 나타내는 척도
모듈이 하나의 명확한 기능을 수행할수록 응집도가 높다.
🔼 응집도의 종류 (낮음 → 높음)
| 단계 | 응집도 종류 | 설명 | 예 |
| ① | 우연적 응집 (Coincidental) | 서로 관련 없는 기능이 우연히 모임 | 임시로 모아둔 유틸 함수 |
| ② | 논리적 응집 (Logical) | 유사한 기능을 논리적으로 묶음 | 입력 방식별 처리 함수 |
| ③ | 시간적 응집 (Temporal) | 특정 시점에 함께 실행되는 기능 | 프로그램 시작 시 초기화 |
| ④ | 절차적 응집 (Procedural) | 순차적 처리 단계로 묶음 | 로그인 → 검증 → 저장 순 |
| ⑤ | 통신적 응집 (Communicational) | 동일한 데이터에 접근하는 기능 | 같은 파일을 읽는 여러 함수 |
| ⑥ | 순차적 응집 (Sequential) | 한 기능의 결과가 다음 기능의 입력으로 연결 | 데이터 처리 → 저장 |
| ⑦ | 기능적 응집 (Functional) | 하나의 기능만 수행 | 로그인 검증, 결제 처리 등 |
✅ 응집도는 높을수록 좋다.
(한 기능에 집중할수록 유지보수와 테스트가 용이)
🔗 3. 결합도(Coupling)
💡 정의
모듈 간의 의존성 혹은 연결 정도를 나타내는 척도
결합도가 낮을수록 모듈 간 독립성이 높아지고 수정이 쉬워진다.
🔽 결합도의 종류 (낮음 → 높음)
| 단계 | 결합도 종류 | 설명 | 예시 |
| ① | 자료 결합 (Data Coupling) | 필요한 데이터만 인자로 전달 | login(id, pw) 처럼 단순 데이터 전달 |
| ② | 스탬프 결합 (Stamp Coupling) | 자료구조 전체를 인자로 전달 | User 객체 전체 전달 후 일부만 사용 |
| ③ | 제어 결합 (Control Coupling) | 제어 신호(플래그 등)를 전달 | true/false로 동작 분기 |
| ④ | 외부 결합 (External Coupling) | 외부 장치나 인터페이스 공유 | 동일 파일, 포트, 프로토콜 공유 |
| ⑤ | 공통 결합 (Common Coupling) | 전역 변수, 공용 데이터 공유 | 전역 변수 globalVar 사용 |
| ⑥ | 내용 결합 (Content Coupling) | 한 모듈이 다른 모듈 내부 접근 | A 모듈이 B의 내부 변수 수정 |
✅ 결합도는 낮을수록 좋다.
(독립성이 높고 변경의 영향이 적음)
⚖️ 4. 요약 정리
| 항목 | 응집도(Cohesion) | 결합도(Coupling) |
| 의미 | 모듈 내부의 관련성 | 모듈 간의 의존성 |
| 방향 | 높을수록 좋음 | 낮을수록 좋음 |
| 이상적 상태 | 기능 단일화 | 독립성 확보 |
| 핵심 키워드 | 집중 | 분리 |
| 기억법 | “응집도는 ↑, 결합도는 ↓” |
✍️ 한 줄 요약
💡 좋은 프로그램 = 응집도는 높게, 결합도는 낮게!
LIST
'공통 > CS' 카테고리의 다른 글
| [CS] CUI / GUI / NUI / OUI 정리 — 유저 인터페이스 (+ 터치 제스처) (0) | 2025.11.01 |
|---|---|
| [CS] 프로세스 스케줄링(Process Scheduling) 기법 (0) | 2025.11.01 |
| [CS] 소프트웨어 아키텍처 4+1 뷰 모델 정리 (0) | 2025.10.31 |
| [CS] 테스트 오라클(Test Oracle) 정리 (0) | 2025.10.31 |
| [CS] UML 정리 (다이어그램 종류, 관계, 표기법 등) (0) | 2025.10.30 |