응집도(Cohesion)란 한 클래스 또는 모듈이 특정 목적 또는 역할을 얼마나 일관되게 지원하는지를 나타내는 척도. / 명령어나 호출문 등의 모듈의 내부 요소들의 서로 관련있는 정도. / 모듈이 독립적인 기능으로 구성됐는지 정도를 의미함. / 응집도가 강할수록 독립적인 모듈. -> 어떤 모듈 또는 클래스의 응집도가 높다는 것은 일련의 서로 연관된 기능이 묶여있다는 것을, 응집도가 낮다는 것은 서로 상관없는 기능들이 묶여있다는 것을 뜻함. / 응집도는 강할수록 좋다.
응집도는 단일 역할 원칙에서만 쓰이는 용어가 아닌 광범위한 용도로 쓰이는 용어. 이 원칙을 잘 따르는 클래스는 두 개 이상의 역할을 맡고 있는 클래스에 비해 응집도가 높고, 관리하기도 더 용이함.
응집도 강한 순서대로
ㆍ기능적 응집도(Functional Cohesion) : 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우의 응집도.
ㆍ순차적 응집도(Sequential Cohesion) : 모듈 내 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용할 경우의 응집도
ㆍ교환적 응집도(Communication Cohesion) : 동일한 입력과 출력을 사용해 서로 다른 기능을 수행하는 구성 요소들이 모였을 경우의 응집도
ㆍ절차적 응집도(Procedural Cohesion) : 모듈의 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우의 응집도
ㆍ시간적 응집도(Temporal Cohesion) : 특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도
ㆍ논리적 응집도(Logical Cohesion) : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우의 응집도
ㆍ우연적 응집도(Coincidental Cohesion) : 모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우의 응집도
결합도(Coupling)란 모듈 간에 상호 의존하는 정도 또는 두 모듈 사이의 연관 관계를 의미함. / 결합도가 약할수록 독립적인 모듈. / 결합도가 낮을수록 좋음
결합도 낮은 순서대로
ㆍ자료 결합도(Data Coupling) : 모듈 간의 인터페이스가 자료 요소로만 구성될 때의 결합도
ㆍ스탬프 결합도(Stamp Coupling) : 모듈 간의 인터페이스로 배열이나 레코드 등의 자료구조가 전달될 때의 결합도
ㆍ제어 결합도(Control Coupling) : 어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해 제어 신로를 통신하거나 제어 요소(Flag)를 전달하는 결합도
ㆍ외부 결합도(External Coupling) : 어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조할 때의 결합도 (전역 변수)
ㆍ공유 결합도(Common Coupling) : 공유되는 공통 데이터 영역(전역변수)을 여러 모듈이 사용할 때의 결합도 (전역변수 덩어리)
ㆍ내용 결합도(Content Coupling) : 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정(public 속성)할 때의 결합도
댓글