모듈 혹은 클래스간의 상호 의존 정도를 의미한다.
결합도가 낮을 수록 독립성이 높아지며 재사용성과 유지 보수가 용이하다.
오름차순, 내려갈수록 결합도 높아짐
| 이름 | 설명 |
|---|---|
| 자료 결합도 | 모듈간의 인터페이스 전달되는 파라미터를 통해서만 모듈간의 상호 작용이 일어나는 경우 |
| 스탬프 결합도 | 모듈간의 인터페이스로 배열이나 오브젝트, 스트럭쳐등이 전달되는 경우 |
| 제어 결합도 | 단순히 처리를 해야할 대상인 값만 전달되는게 아니라 어떻게 처리를 해야 한다는 제어 요소가 전달되는 경우 |
| 외부 결합도 | 어떤 모듈에서 반환한 값을 다른 모듈에서 참조해서 사용하는 경우 |
| 공통 결합도 | 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역변수를 갱신하는 식으로 상호작용하는 경우 |
| 내용 결합도 | 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용 하는 경우 |
내부 요소들이 얼마나 밀접하게 관련되어 있는지를 의미한다.
응집도가 높을 수록 관련성 높게 함께 작동하는 것을 의미하며, 일관된 목적을 가지고 있다는 것이다.
오름차순, 내려갈수록 응집도 높아짐.
| 이름 | 설명 |
|---|---|
| 우연적 응집도 | 모듈 내부의 각 구성요소들이 연관이 없을 경우 |
| 논리적 응집도 | 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우 |
| 시간적 응집도 | 연관된 기능이라기 보단 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우 |
| 절차적 응집도 | 모듈이 다수의 관련 기능을 가질 떄 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우 |
| 통신적 응집도 | 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여있을 경우 |
| 순차적 응집도 | 모듈 내에서 한 활동으로 부터 나온 출력값을 다른 활동이 사용할 경우 |
| 기능적 응집도 | 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우 |
설계시 결합도는 낮추고 응집도는 높히는 것이 이상적이다.