본문 바로가기
안드로이드/Android

[CS] 응집도(Cohesion)와 결합도(Coupling)

by jinwo_o 2024. 12. 8.

모듈(Module)

  • 크기와 상관없이 클래스나 패키지, 라이브러리 등 프로그램을 구성하는 임의의 요소
  • 프로그램을 구성하는 시스템을 기능 단위로 독립적인 부분으로 분리한 것
  • 단순히 규모가 큰 것을 작게 여러 개로 나눈 조각이 아니라, 하나 이상의 논리적인 기능을 수행하기 위한 명령어들의 집합

 

응집도(Cohesion)

 

  • 모듈에 포함된 내부 요소들이 하나의 책임/ 목적을 위해 연결되어 있는 연관된 정도
  • 응집도가 높으면, 변경 대상과 범위가 명확해지는 장점이 있어서 코드를 수정하기 쉬워진다.

  • 높은 응집도 : A 모듈 안에 a 라는 기능을 위해 모여있고 긴밀하게 연결되어 협력하고 있다.
  • 낮은 응집도 : A 모듈이 아닌 곳에 a 기능들이 흩어져 있다던가 또는 A 모듈에 a 기능 외에 b, c, d 기능들도 섞여서 복잡하게 구현되어 있다.

 

결합도(Coupling)

  • 모듈이 다른 모듈에 의존하는 정도의 척도

  • 높은 결합도 : 유지보수를 위해 b 기능을 수정하려면 b 기능이 모여있는 B 모듈을 수정해야 한다. 그러나 b 기능이 다른 모듈들(A, D, E, F, I, E)과 연관되어 있다면, 다른 모듈의 소스도 확인해야 한다. 경우에 따라 다른 모듈들까지 수정해야 할 수도 있으므로, 유지보수 작업이 더욱 복잡하고 어려워질 수 있다.
  • 낮은 결합도 : A 모듈은 다른 모듈들을 참조하는 부분이 거의 없다.

 

좋은 소프트웨어

  • 모듈의 독립성이 높다.
  • 낮은 결합도를 가지고 있다.
  • 높은 응집도를 유지한다.

 

[설계 용어] 응집도와 결합도

High Cohesion, Low Coupling, 응집도와 결합도 라는 설계관련 용어는 프로그래밍에 익숙하지 않은 사람들에게는 쉽게 익숙해지기가 처음에는 어려울 것 같아요.

medium.com

 

모듈(Module)과 모듈화(Modularization)

모듈이란 프로그램을 구성하는 시스템을 기능 단위로 독립적인 부분으로 분리한 것이다. 단순히 규모가 큰 것을 작게 여러 개로 나눈 조각이 아니라, 하나 이상의 논리적인 기능을 수행하기 위

velog.io