결합도 (Coupling) / 응집도 (Cohesion)

HJJEONG·2025년 4월 19일
0

자기개발

목록 보기
8/10

결합도란?

모듈 간에 상호 의존하는 정도 또는 두 묘듈 사이의 연관 관계이다.
결합도가 약할수록 품질이 높고, 강할수록 품질이 낮다.

결합도의 종류와 강도

내용 결합도 > 공통 결합도 > 외부 결합도 > 제어 결합도 > 스탬프 결합도 > 자료 결합도

내-공-외-제-스-자 순으로 암기하면 된다.

  • 내용 결합도(Content Coupling):
    한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할 때의 결합도
  • 공통(공유) 결합도(Common Coupling):
    • 공유 되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도
    • 파라미터가 아닌 모듈 밖에 선언된 전역 변수를 사용하여 전역 변수를 갱신하는 방식으로 상호작용하는 때의 결합도
  • 외부 결합도(External Coupling):
    어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조할 때의 결합도
  • 제어 결합도(Control Coupling):
    • 어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해 제어 신호나 제어 요소를 전달하는 결합도
    • 하위 모듈에서 상위 모듈로 제어 신호가 이동하여 하위 모듈이 상위 모듈에게 처리 명령을 내리는 권리 전도 현상이 발생하게 된다.
  • 스탬프(검인) 결합도(Stamp Coupling):
    모듈 간의 인터페이스로 배열이나 레코드 등의 자료 구조가 전달될 때의 결합도
  • 자료 결합도(Data Coupling):
    모듈 간의 인터페이스가 자료 요소로만 구성될 때의 결합도

응집도란?

모듈의 내부 요소들이 서로 관련되어 있는 정도
응집도가 강할수록 품질이 높고, 약할수록 품질이 낮다.

응집도의 종류와 강도

기능적 응집도 > 순차적 응집도 > 교환적 응집도 > 절차적 응집도 > 시간적 응집도 > 논리적 응집도 > 우연적 응집도

기-순-교-절-시-논-우 순으로 암기하면 된다.

  • 기능적 응집도(Functional Cohesion)
    모듈 내부의 모든 기능 요소들단일 문제와 연관되어 수행될 경우의 응집도
  • 순차적 응집도(Sequential Cohesion)
    모듈 내 하나의 활동으로부터 나온 출력 데이터 -> 다음 활동의 입력데이터 로 사용할 경우의 응집도
  • 교환(통신)적 응집도(Communication Cohesion)
    동일한 입력과 출력을 사용하여 서로 다른 기능을 수행하는 구성 요소들이 모였을 경우의 응집도
  • 절차적 응집도(Procedural Cohesion)
    모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우의 응집도
  • 시간적 응집도(Temporal Cohesion)
    특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도
  • 논리적 응집도(Logical Cohesion)
    유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우의 응집도
  • 우연적 응집도(coincidental Cohesion)
    모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우의 응집도

즉, 좋은 품질을 가진 소프트웨어이려면 결합도는 낮고, 응집도는 높아야 한다.

profile
문제를 해결하는 개발자

0개의 댓글