728x90
1. 개념
결합도(Coupling)는 소프트웨어 설계에서 모듈 간의 의존성 정도를 나타내는 개념이다. 쉽게 말해, 한 모듈(또는 클래스, 함수)이 다른 모듈에 얼마나 많이 의존하고 있는지를 나타내며, 이는 시스템의 유지보수성, 확장성, 재사용성에 직접적인 영향을 준다.
728x90
2. 종류
결합도는 일반적으로 다음과 같은 7가지 수준으로 분류된다.
(낮은 결합도 → 높은 결합도 순)
결합도 종류 | 설명 |
자료 결합(Data Coupling) | 한 모듈이 다른 모듈에게 단순한 데이터를 전달. 가장 바람직함. |
스탬프 결합(Stamp Coupling) | 구조체나 객체처럼 데이터 묶음을 전달, 하지만 전체가 아닌 일부만 사용. |
제어 결합(Control Coupling) | 한 모듈이 다른 모듈에 어떻게 동작할지 지시 (ex. 플래그). |
외부 결합(External Coupling) | 외부 시스템, 장치, 포맷에 의존하는 경우. |
공통 결합(Common Coupling) | 여러 모듈이 공통된 전역 변수를 사용하는 경우. 변경이 전파될 위험이 큼. |
내용 결합(Content Coupling) | 한 모듈이 다른 모듈의 내부를 직접 참조 또는 수정. 최악의 경우. |
3. 결합도가 낮아야 하는 이유
- 낮은 결합도는 시스템의 유연성과 안정성을 크게 향상시킨다.
- 유지보수 용이: 하나를 수정해도 다른 모듈에 영향을 덜 줌.
- 테스트 용이: 독립적으로 테스트 가능.
- 재사용성 향상: 다른 프로젝트에서도 쉽게 활용 가능.
- 병렬 개발 가능: 팀원 간 모듈 분업이 쉬움.
4. 예시 (Java 기준)
// 데이터 결합 (좋은 예)
public class OrderService {
public void processOrder(Order order) {
// Order 객체만 받음 → 낮은 결합도
}
}
// 제어 결합 (안 좋은 예)
public class OrderService {
public void processOrder(Order order, boolean isExpress) {
if (isExpress) {
// express 로직
} else {
// 일반 로직
}
}
}
5. 결합도를 낮추는 전략
- 인터페이스 사용 (다형성)
- 의존성 주입 (DI)
- 이벤트 기반 설계 (Observer, Pub-Sub)
- 전역 변수 지양
- 모듈 간 명확한 경계 정의
요약하자면, 결합도는 소프트웨어 모듈 간의 연결 강도를 의미하며, 낮을수록 좋은 설계로 여겨진다. 결합도를 낮추면 코드 유지보수성과 재사용성이 높아지기 때문에, 설계 시 항상 의식적으로 고려해야 하는 중요한 원칙이다.
728x90
'개발 > ETC' 카테고리의 다른 글
템플릿 메소드 패턴 (81) | 2025.05.20 |
---|---|
NoSQL DB 종류 알아보기 (39) | 2025.05.18 |
이진 트리 공부 (74) | 2025.04.30 |
페이지 교체 알고리즘 공부 (191) | 2025.04.28 |
단일 프로세스 시스템 알아보기! (42) | 2025.04.16 |