공부하는 스누피

[정보처리기사] 모듈의 결합도, 응집도 본문

CS/소프트웨어 공학

[정보처리기사] 모듈의 결합도, 응집도

커피맛스누피 2020. 7. 23. 15:31

1. 모듈

: 모듈화를 통해 분리된 시스템의 기능.

- 단독으로 컴파일이 가능 => 재사용 가능

- 기능적 독립성을 가지고 있음 => 다른 모듈과 과도한 상호작용을 배제함.

- 모듈의 독립성은 결합도(Coupling), 응집도(Cohesion)에 의해 측정되며, 결합도는 독립성과 반비례하고 응집도는 독립성과 비례한다.

 

2. 결합도 Coupling

: 모듈 간에 상호 의존하는 정도 (품질과 반비례)

 

- 종류

a. 자료 결합도 Data Coupling

모듈 간의 인터페이스가 자료 요소로만 구성될 때의 결합도. (정수, 문자 ...)

=> 모듈 간 데이터를 매개 변수나 인수로 넘겨주고, 리턴값을 받는 방식이다.

=> 장점: 모듈 간의 내용을 알지 않아도 된다 (다른 모듈에 대한 변경 영향이 적음)

b. 스탬프 결합도 Stamp Coupling

두 모듈이 동일한 자료 구조를 조회하는 경우의 결합도. (배열, 리스트...)

=> 자료 구조의 변화는 조회하는 모든 모듈 및 조회하지 않는 모듈에게까지도 영향을 미친다.

=> 배열 및 자료 구조는 주소값이 변수에 저장되기 때문에 Stamp는 포인터 역할을 의미한다고 본다.

c. 제어 결합도 Control Coupling

다른 모듈의 논리적인 흐름을 제어하기 위해 제어 신호/제어 요소를 전달하는 결합도. (Function Code, Switch...)

=> 하나의 기능이 분리되어 설계된 경우 or 제어하는 모듈이 대상 모듈의 처리 과정을 다 알고 있는 경우

=> 권리 전도현상: 하위 모듈이 상위 모듈에게 처리 명령을 내리는 현상.

d. 외부 결합도 External Coupling

모듈에서 선언된 데이터를 다른 모듈에서 참조할 때의 결합도.

=>참조되는 데이터의 범위를 제한할 수 있음 (private, package...)

e. 공통(공유) 결합도 Common Coupling

공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도. ex. 전역 변수

=> 데이터가 바뀌면 사용하는 모든 모듈에 영향을 미침 (독립성 약화)

f. 내용 결합도 Content Coupling

모듈이 다른 모듈의 내부 기능 및 내부 자료를 직접 참조하거나 수정할 때의 결합도

=> 모듈에서 다른 모듈의 내부로 제어가 이동하는 경우도 포함.

 

3. 응집도 Cohesion

: 정보 은닉 개념을 확장한 것으로, 모듈이 독립적인 기능으로 정의되어 있는 정도. (품질과 정비례)

 

-종류

a. 기능적 응집도 Functional Cohesion

기능 요소들이 단일 문제와 연관되어 수행되는지.

b. 순차적 응집도  Sequential Cohesion

출력 데이터를 다음 활동의 입력 데이터로 사용.

e.g. 리턴값을 다른 함수의 인수로 넣는 경우

c. 교환적 응집도 Communication Cohesion

동일한 입출력 사용하지만 다른 기능을 수행하는 요소들이 있는지.

d. 절차적 응집도 Procedual Cohesion

다수의 관련 기능을 가질 때 기능들이 순차적으로 수행되는지.

e. 시간적 응집도 Temporal Cohesion

특정 시간에 처리되는 기능을 모아서 하나의 모듈로 만드는 경우.

f. 논리적 응집도 Logical Cohesion

유사한 성격을 갖거나 특정 형태로 분류되는 요소들을 모아서 하나의 모듈로 만드는 경우.

e. 우연적 응집도 Coincidental Cohesion

서로 관련 없는 요소로만 구성된 경우.

Comments