슬기로운 개발생활

[소프트웨어] 결합도(Coupling)와 응집도(Cohension)의 개념

by coco3o
반응형

결합도응집도는 모듈의 독립성을 판단하는 두 가지 지표입니다.

 

결합도는 모듈과 모듈 사이의 의존 정도를 말하고, 응집도는 모듈 내부의 기능적인 집중 정도라고 할 수 있습니다.

 

여기서 이상적인 모듈화는 독립적으로 자신에게 주어진 기능만을 수행함과 더불어 명확한 결과값을 내야 하고,

다른 모듈에 의존성이 높아서 안됩니다.

 

즉, 결합도는 낮을 수록 응집도는 높을 수록 이상적인 모듈화라는 것입니다.

 

지금부터 결합도와 응집도에 대해 자세히 알아보도록 하겠습니다.


결합도(Coupling)

  • 결합도는 모듈과 모듈 간의 의존하는 정보를 측정하는 것이다.
  • 모듈과 모듈간의 상호 의존성을 나타낸다.
  • 독립적인 모듈이 되기 위해서는 결합도가 낮아야 한다.

결합도가 높은 클래스의 문제점

  • 연관된 다른 클래스가 변경되면 더불어 변경해야 한다.
  • 수정하려는 클래스를 이해하기 위해 연관되어있는 다른 클래스를 함께 이해해야 한다.
  • 클래스의 재사용이 힘들다.

결합도가 낮은 클래스의 특징

  • OCP의 원칙을 가진 클래스
    • (OCP; Open Close Principle, 개방 폐쇄의 원칙) : 확장에는 개방되고, 변경에는 폐쇄되어야 한다.
  • 다형성이 좋은 클래스

 

결합도의 종류

결합도(Coupling) ( 약 → 강 순서 )

세기 종류 내용
약함










강함
자료 결합도(Data Coupling) 모듈간의 인터페이스로 전달되는 파라미터를 통해서만 상호 작용이 일어나는 경우
결합도가 제일 낮고 제일 좋은 형태이다.
스탬프 결합도 (Stamp Coupling) 모듈간의 인터페이스로 배열이나 객체, 자료 구조 등이 전달되는 경우
제어 결합도 (Control Coupling) 어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하는 제어 요소를 전달하는 경우
외부 결합도 (External Coupling) 어떤 모듈이 외부에 있는 다른 모듈의 데이터를 참조하는 경우 (데이터, 통신 프로토콜 등)
공통 결합도(Common Coupling) 여러 개의 모듈이 하나의 공통 데이터 영역(전역 변수 참조 및 갱신)을 사용하는 경우
내용 결합도 (Content Coupling) 어떤 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우
결합도가 제일 높고 제일 좋지 않은 형태이다.

응집도(Cohension)

  • 응집도는 모듈 내부의 기능적인 응집 정도를 나타낸다.
  • 정보 은닉의 확장 개념으로 하나의 모듈은 하나의 기능을 수행하는 것을 의미한다.
  • 독립적인 모듈이 되기 위해서는 응집도가 높아야 한다.

응집도가 낮은 클래스의 문제점 

  • 이해하기 힘들다.
  • 재사용과 유지보수가 어렵다.
  • 다른 클래스의 변화에 민감하다.

응집도가 높은 클래스의 특징

  • 단일 책임을 가진 클래스
  • 다른 클래스와 잘 협력할 수 있는 클래스

 

응집도의 종류

응집도(Cohension) ( 강 → 약 순서 )

세기 종류 내용
강함
















약함
기능적 응집도 (Functional Cohesion) 모듈 내부의 모든 기능이 단일 목적을 위해 수행되는 경우
응집도가 제일 높고 제일 좋은 형태이다.
순차적 응집도 (Sequential Cohesion) 모듈 내에서 한 활동으로부터 나온 출력 값을 다른 활동이 사용할 경우
교환적 응집도 (Communication Cohesion) 동일한 입력과 출력을 사용해 다른 기능을 수행하는 활동들이 모여있을 경우
절차적 응집도 (Procedural Cohesion) 모듈이 다수 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우
시간적 응집도 (Temporal Cohesion) 연관된 기능이라기 보단 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우
논리적 응집도(Logical Cohesion) 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우
우연적 응집도(Coincidental Cohesion) 모듈 내부의 각 구성요소들이 연관이 없을 경우
응집도가 제일 낮고 제일 좋지 않은 형태이다.

 

반응형

'📚Computer Science > System software' 카테고리의 다른 글

컴포넌트(Component)란 무엇일까?  (0) 2021.02.11

블로그의 정보

슬기로운 개발생활

coco3o

활동하기