[sw] 응집도
응집도(Cohesion)
- 응집도는 모듈의 독립성을 나타내는 개념으로, 모듈 내부 구성요소 간 연관 정도입니다.
- 정보은닉의 확장 개념으로, 하나의 모듈은 하나의 기능을 수행하는 것을 의미합니다.
- 응집도는 높을수록 좋습니다.
특징
- 유사기능 영역 구성
- 단일 책임 할당
- 함수 간 상호협력
유형
우연적<논리적<시간적<절차적<통신적<순차적<기능적 응집도 순으로 응집도가 높아집니다. 기능적, 순차적, 통신적 응집도까지는 괜찮습니다.
기능적 응집도(Functional Cohesion)
모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도입니다.
순차적 응집도(Sequential Cohesion)
모듈 내에서 한 활동으로부터 나온 출력 값을 다른 활동이 사용할 경우의 응집도입니다. 기능들이 서로 맞물리는 경우만 사용 가능하여 재사용이 힘듭니다.
2개의 모듈로 나누면 재사용성이 높아집니다. 순차적 -> 기능적 응집도
통신적 응집도(Communicational Cohesion)
동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우의 응집도입니다.
각 기능들이 독립적으로 행동할 수 있는데 동일한 데이터 사용합니다.
절차적 응집도(Procedural Cohesion)
모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도입니다.
데이터를 주고받는게 아니라 단순히 실행 순서로 기능 사이 데이터 관련 없습니다.
ex)
궤도 계산
알람 활성화
궤도 계산 후 알람을 활성화 한다.
시간적 응집도(Temporal Cohesion)
연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우의 응집도입니다.
논리적 응집도(Logical Cohesion)
유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우의 응집도입니다.
경우에 따라 원하는 로직을 수행합니다.
기능들을 외부에서 선택할 수 있도록 flag 변수값을 줍니다.
ex)
flag에 따라 km를 mile로, mile을 flag로 변경하는 메서드
매개변수 flag
if(flag == mile) mile -> km
if (flag == km) km -> mile
이 모듈을 사용하려면 flag 값의 의미를 외부에서 알아야 합니다. flag에 따라 어떤 기능이 실행되는지 내부 구현에 대해 알아야 하고 만약 flag값에 따른 기능처리가 변경이 된다면 이 모듈을 사용했던 모듈도 모두 수정해야 합니다. 따라서 사용X
우연적 응집도(Coincidental)
서로 간에 어떠한 의미 있는 연관 관계도 없는 기능 요소로 구성될 경우의 응집도입니다.
서로 다른 상위 모듈에 의해 호출되어 처리상의 연관성이 없는 서로 다른 기능을 수행할 경우의 응집도입니다.
reference
댓글남기기