술(述)/풀이

결합도와 응집도

쪼랩전사 2021. 10. 12. 18:40
728x90

"응집도는 높이고, 결합도는 낮춰라."라는 말을 어디선가 한 번쯤 들어봤을 것이다. 심지어는 각각에 대해서 공부도 해봤을 수도 있다. 단지, 잘 기억나지 않는다. 내가 그렇다.

그런 의미로 결합도와 응집도에 관한 내용을 포스팅하겠다.

모듈

결합도와 응집도에 관한 내용을 설명하기에 앞서 모듈이란 것에 대해 설명을 해야 한다.

모듈은 네이버에서 다음과 같이 정의하고 있다.

  • "프로그램을 기능별로 나눈 논리적인 일부분"

그렇다. 어디까지나 논리적으로 분리된 부분을 말한다. 내가 만든 프로그램을 무지성으로 2개로 쪼갠다고 하면 내 프로그램은 두 개의 모듈로 이루어진 프로그램이 된다. 내가 논리적이라고 우기면 2개의 모듈이 맞다.

하지만 이런 식으로 쪼갠 모듈이 모듈로서 적합하다고 묻느냐면 당당히 아니라고 이야기 할 수 있다.

모듈의 장점은 이미 만들어져있다는 것이고, 이를 다른 프로그램을 만드는 데 사용하기 시작하는 순간부터 빛을 발한다.

일반적으로 모듈은 독립성이 강할 때, 좋은 모듈이라고 말한다.

이때, 결합도와 응집도는 모듈의 독립성을 측정하는 지표로 사용된다.

결합도(Coupling)

결합도(의존도)는 다른 모듈을 의존하는 정도이다.

결합도가 낮을수록, 모듈은 높은 독립성을 가진다.

자료 < 스탬프 < 제어 < 외부 < 공통 < 내용 결합도 순으로, 자료 결합도가 가장 낮다.

위의 내용을 자세히 알 필요는 없다.

단순히 하나의 모듈을 변경했을 때, 다른 모듈이 고통스러울수록 결합도가 높은 것이라고 알면 된다.

응집도(Cohesion)

응집도는 한 모듈 내에서 구성 요소 간의 연관 정도이다.

응집도가 높을수록, 모듈은 높은 독립성을 가진다.

기능적 > 순차적 > 정보적 > 절차적 > 시간적 > 논리적 > 우연적 응집도 순으로, 기능적 응집도가 가장 높다.

기능적 응집도는 모듈 내의 모든 구성 요소가 단일 목적을 수행하는 경우를 말한다.

모듈 내의 각 기능이 서로 다른 일을 할수록 응집도가 낮은 것이다.

마치며...

이번 포스팅에서는 모듈의 독립성을 측정하는 지표인 결합도와 응집도에 대해 알아보았다. 그렇다. 그냥 알아만 보았다. 아무리 생각해도 이걸 굳이 외워야 할까 싶다.

그냥 이러한 것이 있다는 것만 알면 되는 일이다. 모듈이 독립성이 높으면 좋다는 말 자체가 너무 당연한 소리다.

'술(述) > 풀이' 카테고리의 다른 글

headless server(헤드리스 서버)  (0) 2021.11.22
횡단 관심사(Cross-cutting concerns)  (0) 2021.11.18
UUID  (0) 2021.11.14
사용자 스토리(User story)  (0) 2021.11.10
버전(Version)  (0) 2021.10.20