개발/ETC

결합도 공부

devhooney 2025. 5. 8. 07:29
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