본문 바로가기
Java

응집도와 결합도

by Jordy-torvalds 2020. 2. 8.
반응형

응집도, 결합도

  • 좋은 소프트웨어 설계를 위해서는 결합도는 낮추고 응집도는 높이는 것이 바람직하다.

결합도

  • 모듈(클래스) 간의 상호 의존 정도로서 결합도가 낮으면 모듈간의 상호 의존성이 줄어들어 객체의 재사용이나 수정, 유지보수가 용이하다.
  • 두 개의 요소에 대해서 하나의 변경이 다른 것의 변경을 요구하는 정도.
  • 변화가 전파되는 정도. 일종의 파급효과.

응집도:

  • 하나의 모듈 내부에 존재하는 구성 요소들의 기능적 관련성으로 응집도가 노퓨은 모듈은 하나의 책임에 집중하고 독립성이 높아져 재사용이나 기능의 수정, 유지보수가 용이하다.
  • 응집이란 시스템에 변경이 필요할 때 하나의 요소에서 변화하는 부분의 정도.
  • 쉽게 말하자면, 한가지 변경 요청에 대해서 변경이 일어날 때 전체가 다 같이 변하면 응집도가 높은 것이고, 작은 부분만 변경이 일어나면 응집도가 낮은 것이다.
  • 높은 응집도가 좋은 이유는, 변화의 요청에 대한 대응이 명확해지기 때문이다. 만약 응집도가 낮아서 어떤 변경에 대해서 한 요소의 일부분만 변경이 일어나게 된다면, 그 중에서 어떤 부분이 변경이 되야 할지를 파악해야 하고, 그것이 그 변경되지 않은 부분에 정말 영향을 미치지 않았는지에 대해서도 검증을 해야 할 부담이 있기 때문이다.
  • 변하려면 전체가 같이 변하는 것이 부분만 변경되는 것보다 비용이 적게 든다는 것이다. 보통 덩치가 큰 모듈은 이런 단점을 가진다.

결론:

  • 켄트 벡은 결론에서 비용의 관점을 봤을 때 낮은 응집도(큰 모듈) 보다는 높은 결합도(여러 요소에 걸처 변화의 파문이 일게 되는 것)가 훨씬 큰 비용증가(기하급수적으로)를 보인다고 이야기 했다.

참고 자료

반응형