[소프트웨어공학] 결합도 & 응집도
[소프트웨어공학] 결합도 & 응집도
모듈의 독립성을 판단하는 두 가지 지표이다.- 결합도
- 모듈과 모듈간의 상호 의존 정도
- 응집도
- 모듈 내부의 기능적인 집중 정도
좋은 모듈화는 용도에 맞게 잘 구분된 기능을 가진 모듈들로 세분화 하는 것
즉, 개별 모듈은 독립적으로 자신에게 주어진 기능만을 수행하고 명확한 결과값을 내 놓아야 하고 다른 모듈에 의존성이 높아선 안된다.
즉, 결합도는 낮을수록 응집도는 높을 수록 이상적인 모듈화이다.
물론 결합도가 극단적으로 낮고 응집도가 극단적으로 높다고 다 좋은건 아니다.
결합도의 종류
자료 결합도 < 스탬프 결합도 < 제어 결합도 < 외부 결합도 < 공통 결합도 < 내용 결합도
- 자료 결합도(Data Coupling)
Call by Value |
- 모듈간의 인터페이스 전달되는 파라미터나 인수를 통해서만 모듈간의 상호 작용
- 깔끔한 Call by value
- 구조 결합도(Stamp Coupling)
하나의 구조를 여러개의 모듈이 같이 사용 |
- 모듈간의 인터페이스로 배열이나 오브젝트, 스트럭쳐 등이 전달되는 경우
- 제어 결합도(Control Coupling)
명령(ex 내림,오름 차순)에 따라 제어가 달라짐 |
- 단순히 처리를 해야 할 대상인 값만 전달되는게 아니라 어떻게 처리를 해야 한다는 제어 요소가 전달되는 경우
- 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어 신호를 이용하여 통신하는 경우이며, 하위 모듈에서 상위 모듈로 제어신호가 이동하여 상위 모듈에게 처리 명령을 부여하는 권리전도현상
- 외부 결합도(External Coupling)
- 어떤 모듈에서 반환한 값을 다른 모듈에서 참조하는 경우
- 공통 결합도(Common Coupling)
- 파라미터가 아닌 모듈 밖에 선언되어 이는 전역 변수를 참조하고 전역변수를 갱신하는식으로 상호작용하는 경우
- Call by reference
- 내용 결합도(Content Coupling)
- 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우
응집도의 종류
응집도 : 전체 시스템을 모듈 단위로 얼마나 잘 분할했는지의 척도
우연적 응집도 < 논리적 응집도 < 시간적 응집도 < 절차적 응집도 < 교환적 응집도 < 순차적 응집도 < 기능적 응집도
- 우연적 응집도
- 모듈 내부의 루틴들이 뚜렷한 관계없이 묶인 경우로 응집도가 가장 약하고 좋지 않은 모듈 설계이다.
- 논리적 응집도
- 모듈 내부의 루틴들이 같은 범주에 속하는 기능끼리 묶인 모듈이다.
- 시기적 응집도
- 모듈 내부의 루틴들이 시간적으로 수행 시기가 같은 기능끼리 존재한다.
- 변수의 초기화, 파일 열기(OPEN) 및 닫기(CLOSE) 등이 여기에 속한다.
- 절차적 응집도
- 모듈 내부의 루틴들이 수행 시기가 순위가 있는 기능끼리 존재하는 경우의 모듈이다.
- 교환적 응집도
- 모듈 내부의 루틴들이 작업 대상이 같은 기능끼리 존재하는 경우의 모듈이다.
- 순차적 응집도
- 모듈 내부의 루틴(구성 요소)들이 이전의 명령어(활동)으로부터 나온 출력 결과(자료)를 그 다음 명령어(활동)의 입력 자료로 사용하는 경우의 응집도
- 기능적(함수적) 응집도
- 모듈 내부가 하나의 단일 기능으로 존재하는 경우로 응집도가 강하고 가장 좋은 모듈
출처
댓글
댓글 쓰기