다섯 살도 알 수 있게 · SW공학

결합도와 응집도가 뭐예요?

챕터끼리 서로 얽혀있는 정도와, 챕터 안이 한 주제로 뭉쳐있는 정도를 함께 보는 이야기예요.

2장5장7장2장을 고쳤는데 5장, 7장까지 다 다시 써야 해요

2장을 고쳤는데 5장, 7장까지 다 다시 써야 해요.한 챕터를 고칠 때 다른 챕터까지 손대야 하는 건, 챕터끼리 너무 얽혀서예요.

한 챕터 안에 요리법, 역사, 시가 다 뒤섞여 있어요독자는 이 챕터가 뭘 말하려는 건지 헷갈려요

한 챕터 안에 서로 안 맞는 얘기가 뒤섞여 있어요.독자는 이 챕터가 뭘 말하려는 건지 헷갈려요.

지도 보는 법만환전 안내만챕터끼리는 느슨하게(낮은 결합도), 챕터 안은 한 주제로(높은 응집도)두 챕터는 목차로만 이어지고, 서로의 세부 내용은 몰라도 돼요

챕터끼리는 느슨하게, 챕터 안은 한 주제로 뭉치게 해요.두 챕터는 목차로만 이어지고, 서로의 세부 내용은 몰라도 돼요.

챕터 경계 분명히어디까지가 이 챕터인지 또렷하게
참조 최소화다른 챕터 참조는 꼭 필요할 때만
한 챕터 = 한 주제챕터 안 내용을 한 주제로 통일
필요한 것만 노출챕터 속 세부 내용은 감추고 입구(제목·목차)만 보여줘요
나쁜 예: 높은 결합도, 낮은 응집도좋은 예: 낮은 결합도, 높은 응집도챕터 사이 선이 적을수록 결합도가 낮고, 챕터 안 점 색(주제)이 하나일수록 응집도가 높아요

왼쪽은 챕터가 서로 다 얽혀 있고, 오른쪽은 이웃 챕터와만 이어져요.챕터 사이 선이 적을수록 결합도가 낮고, 챕터 안 점 색(주제)이 하나일수록 응집도가 높아요.

결합도 0은 비현실적이에요챕터끼리 목차·각주 정도는 서로 참조해요결합도 목표는 0이 아니라 "딱 필요한 만큼만"이에요

결합도 0, 응집도 100%는 비현실적이에요.결합도 목표는 0이 아니라 "딱 필요한 만큼만"이에요.

한 줄로

결합도는 챕터(모듈)끼리 서로 얼마나 얽혀있는지, 응집도는 한 챕터 안이 얼마나 하나의 주제로 뭉쳐있는지를 재는 잣대예요. 좋은 설계는 결합도는 낮게, 응집도는 높게 가요.

결합도(Coupling)는 모듈 간 상호의존 정도를 뜻하며 낮을수록 한 모듈의 변경이 다른 모듈에 영향을 덜 미쳐요. 응집도(Cohesion)는 한 모듈 안의 요소들이 하나의 책임에 얼마나 집중되어 있는지를 뜻하며 높을수록 이해하고 재사용하기 쉬워요. 좋은 소프트웨어 설계의 기본 원칙은 저결합·고응집이에요.

어른들은 이렇게 불러요

결합도
Coupling
챕터끼리 서로 얼마나 얽혀있나. 낮을수록 한 챕터를 고칠 때 다른 챕터를 덜 건드려요.
응집도
Cohesion
챕터 안이 한 주제로 뭉쳐있나. 높을수록 그 챕터를 이해하기 쉬워요.
모듈화
Modularity
책을 챕터 단위로 나누는 것 자체. 결합도·응집도를 따지는 전제가 돼요.
인터페이스
Interface
챕터의 '입구' — 목차나 제목. 속사정을 감추고 이것만 보여줘요.
정보 은닉
Information Hiding
필요한 것만 보여주고 나머지는 감추는 원칙. 결합도를 낮추는 실제 기법이에요.
제품계열 방법론
Product Line Engineering
공통 자산이 잘 나뉘어야 재사용이 쉬워요. 결합도·응집도는 핵심 자산 설계에 바로 쓰여요. → 같은 틀, 다른 표지
좋은 소프트웨어의 조건
Conditions of Good Software
결합도·응집도는 유지보수성과 가장 직결돼요. 결합도·응집도는 그 조건 중 하나인 유지보수성을 떠받쳐요. → 좋은 책의 조건
디자인 패턴
Design Pattern
저결합·고응집을 돕는 검증된 해법. GoF 패턴이 대표적이에요.
다음 이야기
출간 전 시나리오 리허설 →
다른 용어도 그림책으로 보고 싶다면 요청하기 →