결합도(Coupling)와 응집도(Cohesion)
결합도(Coupling)와 응집도(Cohesion)
- 소프트웨어 디자인 및 소프트웨어 아키텍처와 관련된 중요한 소프트웨어 공학 개념
- 소프트웨어의 구조와 유지보수 가능성을 평가하고 개선하기 위해 사용
결합도(Coupling)
- 모듈 또는 컴포넌트 간의 상호 의존성을 나타내는 개념
- 결합도가 높으면 소프트웨어가 덜 유연하고 유지보수가 어려울 수 있다
- 낮은 결합도는 모듈 간의 독립성을 높이고 모듈을 개별적으로 수정하거나 교체하는 것이 더 쉬워진다
결합도의 종류
- 느슨한 결합도(Loose Coupling): 모듈 간의 의존성이 낮고, 인터페이스를 통해 통신하는 경우를 말합니다.
- 강한 결합도(Tight Coupling): 모듈 간의 의존성이 높고, 직접적인 변수 또는 함수 호출과 같은 방법으로 통신하는 경우를 말합니다.
응집도(Cohesion)
- 하나의 모듈 또는 컴포넌트 내부의 요소들의 연관성을 나타내는 개념
- 높은 응집도는 모듈 내부의 구성 요소들이 밀접하게 관련되어 있음을 나타내며, 모듈이 하나의 목적을 잘 수행하는 것을 의미
- 응집도가 높으면 모듈 내의 코드를 이해하고 유지보수하기 쉬움
- 낮은 응집도는 모듈 내의 요소들이 서로 관련이 없거나 다양한 목적을 수행하려고 시도하는 경우를 나타내며, 이는 모듈의 이해와 유지보수를 어렵게 만든다
응집도(Cohesion)의 종류
- 기능적 응집도(Functional Cohesion): 모듈 내의 요소들이 하나의 명확한 기능 또는 작업을 수행하는 경우입니다.
- 순차적 응집도(Sequential Cohesion): 모듈 내의 요소들이 순차적으로 실행되는 작업을 수행하는 경우입니다.
- 통신적 응집도(Communicational Cohesion): 모듈 내의 요소들이 서로 관련된 데이터 또는 정보를 공유하며 작업을 수행하는 경우입니다.
- 시간적 응집도(Temporal Cohesion): 모듈 내의 요소들이 동일한 시간 동안 실행되는 작업을 수행하는 경우입니다.
- 절차적 응집도(Procedural Cohesion): 모듈 내의 요소들이 비슷한 목적을 가지고 있지만 하나 이상의 독립적인 하위 프로세스로 나눠질 수 있는 경우입니다.
정리
- 결합도는 모듈 간의 의존성을 나타내는 개념으로 결합도가 높을 수록 덜 유연하고 유지보수가 어렵습니다. 응집도는 모듈 내부의 요소들의 연관성을 나타내는 개념으로 응집도가 높을 수록 모듈이 효율적으로 구성되었다고 볼 수 있습니다. 그러므로 모듈 간의 결합도는 낮추고 응집도는 높혀야합니다.
참고
- ChatGPT-4.0
보완/복습
- 2023.11.03 생성