소프트웨어 디자인: 응집도와 결합의 역설💭

두 가지 상황의 높은 결합도에 대해서 이야기해보겠습니다. 첫 번째는 하나의 동작을 수정했을 때 동작을 하는 객체의 다른 부분을 수정해야 하는 상황이 생기거나, 객체를 포함하는 상위 모듈의 특정 부분을 수정해야 하는 상황이 있고, 두 번째는 하나의 동작을 수정했을 때 수정된 객체와 전혀 상관없는 모듈의 특정 부분을 수정해야 하는 상황이 있습니다. 두 가지 상황 모두 어떤 특징을 가졌는지와 응집도를 말해보고자 합니다. 첫 번째 상황부터 보자면 일반적으로 결합도와 응집도는 반비례라고 생각하지만, 비용의 측면에서는 마냥 그렇지 않을 수 있습니다. 하나의 변경이 개발자가 쉽게 발견하고 예측 가능한 관련된 모듈만 영향을 준다면 그 비용은 작게 들 것입니다. 여기서 결합도의 역설이 등장하는데, 같은 모듈 안에서의 결합도는 비용 측면에서 오히려 응집도도 높다고 볼 수 있습니다. 문제는 두 번째 상황인데, 수정된 객체와 전혀 상관없는 모듈의 수정 필요하다면 응집도가 굉장히 낮다는 뜻입니다. 두 가지 정도를 점검해봐야 하는데, ☝️관련 없는 모듈 간 높은 결합도가 존재하는가 ✌️같은 모듈 안에 있어야 할 객체가 다른 모듈에 퍼져있는가? 두 번째 상황의 해결 방법으로 모듈 내부의 결합을 높이면 외부의 결합이 줄어드는 경향이 있다는 것을 알아야 합니다. 물론, 모듈 간 결합을 해제하는 방법을 찾는 것은 어려울 수 있습니다. 반면에 첫 번째 상황의 응집력을 높이는 것은 비교적 적은 비용으로 시도해 볼 수 있는 챌린지이지 않을까 싶습니다!

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 2월 22일 오후 10:13

 • 

저장 13조회 1,982

댓글 0