본문 바로가기
Category/정보처리기사

결합도(Coupling)란?

by Corinee 2024. 10. 14.
728x90
반응형

결합도(Coupling)모듈 간의 상호 의존성을 나타내는 소프트웨어 설계의 개념입니다. 모듈 간에 얼마나 강하게 연결되어 있는지를 나타내며, 한 모듈이 다른 모듈의 변경에 얼마나 영향을 받는지를 평가하는 지표입니다.

결합도가 높으면 모듈 간의 의존성이 크기 때문에 유지보수확장이 어렵고, 결합도가 낮으면 모듈 간의 독립성이 높아 유연성재사용성이 높아집니다. 좋은 소프트웨어 설계에서는 결합도를 낮추고, 모듈 간의 독립성을 높이는 것이 중요합니다.

결합도의 종류 (낮은 결합도 → 높은 결합도)

  1. 료 결합도(Data Coupling):
    • 모듈 간에 단순한 데이터 값만을 전달하는 경우입니다. 모듈 간의 데이터 교환이 매개변수로만 이루어지며, 서로의 내부 구조에 의존하지 않습니다.
    • 장점: 모듈 간의 의존성이 낮고, 서로 독립적입니다. 가장 바람직한 결합도입니다.
    • 예시: 두 모듈이 정수나 문자열 등의 기본 자료형을 매개변수로 주고받을 때.
  2. 탬프 결합도(Stamp Coupling):
    • 모듈 간에 구조체나 객체 같은 복합 자료형을 전달하는 경우입니다. 모듈이 전달받은 데이터의 구조를 알아야 하므로 의존성이 조금 더 높습니다.
    • 예시: 구조체나 객체를 매개변수로 전달하는 경우.
  3. 어 결합도(Control Coupling):
    • 한 모듈이 다른 모듈의 동작을 제어하기 위한 정보(예: 플래그)를 전달하는 경우입니다. 한 모듈이 다른 모듈의 동작 방식에 영향을 미치므로 결합도가 높습니다.
    • 예시: 호출하는 모듈이 제어 플래그를 전달하여, 호출된 모듈의 실행 흐름을 결정할 때.
  4. 부 결합도(External Coupling):
    • 두 모듈이 외부에서 정의된 데이터 형식, 프로토콜, 인터페이스에 의존하는 경우입니다. 외부의 요소에 의존하기 때문에 결합도가 높습니다.
    • 예시: 모듈들이 외부 파일 형식, 프로토콜, 데이터베이스 구조에 의존할 때.
  5. 통 결합도(Common Coupling):
    • 여러 모듈이 전역 변수를 공유하는 경우입니다. 하나의 모듈에서 전역 변수를 변경하면, 다른 모듈도 영향을 받기 때문에 결합도가 높습니다.
    • 예시: 전역 변수나 공통 데이터 영역을 사용하여 여러 모듈이 데이터를 공유하는 경우.
  6. 용 결합도(Content Coupling):
    • 한 모듈이 다른 모듈의 내부 기능이나 자료를 직접 참조하거나 수정하는 경우입니다. 이는 가장 높은 결합도로, 모듈 간에 강한 의존성을 가집니다.
    • 예시: 한 모듈이 다른 모듈의 변수나 함수 내부를 직접 참조하거나 수정하는 경우.

결합도 낮추기의 중요성

  • 유지보수성 향상: 결합도가 낮으면, 한 모듈이 변경되더라도 다른 모듈에 미치는 영향이 적습니다. 따라서 수정 및 유지보수가 용이합니다.
  • 재사용성 증가: 결합도가 낮은 모듈은 다른 프로젝트나 시스템에서 재사용하기 쉽습니다.
  • 독립성 보장: 모듈 간의 독립성이 보장되면, 각 모듈을 개별적으로 테스트하고 디버깅할 수 있어 개발 효율성이 높아집니다.

결합도와 응집도

  • 결합도는 모듈 간의 의존성을 나타내며, 낮을수록 좋습니다.
  • 응집도(Cohesion)는 모듈 내부의 기능적 관련성을 나타내며, 높을수록 좋습니다.

결합도는 낮추고, 응집도는 높이는 것이 좋은 소프트웨어 설계의 원칙입니다.