TL:DR
- 결합도: 모듈간의 상호 의존 정도
- 응집도: 모듈 내부의 기능적인 집중 정도
- 결합도는 낮을수록, 응집도는 높을수록 좋다.
개요
어느날에 누군가가 결합도와 응집도에 대해 설명해줄 수 있는지 물어보았는데, 분명 들은 적은 있는데 기억이 나지 않고, 엉뚱한 이야기를 해버렸다. (ㅠㅠ)
그래서 이번 기회에 정리해보려고 한다.
결합도
모듈간의 상호 의존 정도
수준
자료 < 스탬프 < 제어 < 외부 < 공통 < 내용
- 자료: 모듈 간에 파라메터를 통해서만 상호작용
- 스탬프: 모듈 간에 파라메터로 객체(리스트 포함)가 전달되는 경우
- 제어: 모듈간에 처리할 파라메터와 처리방식(DCD, Flag)도 함께 전달하는 경우
- 외부: 다른 모듈의 반환값을 다른 모듈에서 참조하는 경우 (A모듈 처리결과를 B모듈에 전달)
- 공통: 모듈 외부에 선언된 전역변수를 참조하고 전역변수를 갱신하는 경우
- 내용: 다른 모듈 내부의 변수, 기능을 사용하는 경우
응집도
모듈 내부의 기능적인 집중 정도
수준
우연적 < 논리적 < 시간적 < 절차적 < 교환적 < 순차적 < 기능적
- 우연적: 연관성 없음
- 논리적: 유사한 성격, 하나로 분류되는 처리요소들이 한 모듈에서 처리
- 시간적: (기능적 연관성과는 별개로) 특정시간에 처리되어야 하는 활동을 한 모듈에서 처리
- 절차적: 모듈 안의 구성요소들이 모듈 내부의 기능을 순차적으로 호출하는 경우
- 교환적: 동일한 입/출력을 사용해 다른 기능을 수행하는 기능들이 모여있는 경우
- 순차적: 모듈 내의 한 활동의 결과를 다른 활동이 사용하는 경우
- 기능적: 모듈 내부의 모든 기능이 단일목적을 위해 수행되는 경우
참고자료