1️⃣ 결합도 (Coupling)
모듈 간 의존성의 정도
하나의 모듈이 다른 모듈에 **얼마나 많이 연결되어 있는가?**를 나타냄
✔️ 결합도는 낮을수록 좋다 (❗낮은 결합도 지향)
- 결합도가 높을수록: 모듈이 서로 강하게 의존, 변경에 취약
- 결합도가 낮을수록: 모듈이 독립적, 유지보수·재사용성이 좋음
🔻 결합도 순서 (좋은(낮은) → 나쁜(높은))
자스제외공내
결합도설명
자료 결합(Data Coupling) | 모듈이 데이터만 주고받음 (ex. 함수 매개변수) ✅ 가장 이상적 |
스탬프 결합(Stamp Coupling) | 구조체 같은 불필요한 정보까지 포함된 데이터 전달 |
제어 결합(Control Coupling) | 플래그 등으로 어떤 작업을 할지 지시 |
외부 결합(External Coupling) | OS, 파일포맷 등 외부 시스템 의존성 |
공통 결합(Common Coupling) | 전역 변수를 여러 모듈이 함께 사용 |
내용 결합(Content Coupling) | 다른 모듈의 내부를 직접 접근/수정 ❌ 최악 |
2️⃣ 응집도 (Cohesion)
모듈 내부 구성 요소들이 얼마나 밀접하게 관련되어 있는가?
즉, 한 가지 일에 집중하는가?
✔️ 응집도는 높을수록 좋다 (✅ 높은 응집도 지향)
- 응집도가 높을수록: 모듈이 명확하고 목적이 뚜렷, 이해·재사용 용이
- 응집도가 낮을수록: 모듈이 이것저것 다 함, 혼란과 오류 유발
🔺 응집도 순서 (나쁜(낮은) → 좋은(높은))
우논시절통순기
응집도설명
우연적 응집(Coincidental Cohesion) | 그냥 묶여 있는 함수들, 관련 없음 ❌ 최악 |
논리적 응집(Logical Cohesion) | 비슷한 성격의 함수들이 논리적으로 묶여 있음 (ex. 여러 입출력 처리) |
시간적 응집(Temporal Cohesion) | 시간 순서에 따라 실행되는 작업들 (ex. 초기화 등) |
절차적 응집(Procedural Cohesion) | 순서대로 실행되지만 기능적 연관성 낮음 |
통신적 응집(Communicational Cohesion) | 동일한 데이터에 접근하는 작업들이 묶임 |
순차적 응집(Sequential Cohesion) | 한 작업의 출력이 다음 작업의 입력으로 연결 |
기능적 응집(Functional Cohesion) | 모듈이 단 하나의 목적에 집중 ✅ 가장 이상적 |
✅ 요약 정리
항목결합도 (Coupling)응집도 (Cohesion)
지향 방향 | 낮을수록 좋다 | 높을수록 좋다 |
좋은 구조 | 자스제외공내 순으로 결합도 높음(안좋아짐) | 우논시절통순기 순으로 응집도 높음(좋아짐) |
효과 | 독립성, 유지보수성 향상 | 명확한 기능, 오류 감소, 재사용성 높음 |
'정보처리기사 > 실기' 카테고리의 다른 글
[정보처리기사 실기] 정규화 단계 (1) | 2025.04.20 |
---|---|
[정보처리기사 실기] 애플리케이션 테스트 레벨 4가지 (0) | 2025.04.19 |
[정보처리기사 실기] 자바, C, Python 나누기 (1) | 2025.04.17 |
[정보처리기사 실기] 자바 메모리 영역 관련 문제 (1) | 2025.04.16 |
[정보처리기사 실기] C언어 포인터 형 변환 (0) | 2025.04.15 |