[CS] Coupling(결합도) & Cohension(응집도)

nayu1105·2023년 5월 25일

CS

목록 보기
2/4

Module

모듈은 프로그램을 구성하는 구성 요소로, 관련된 데이터와 함수를 하나로 묶은 단위를 의미한다.

보통 하나의 소스 파일에 모든 함수를 작성하지 않고, 함수의 기능별로 따로 모듈을 구성한다. 이러한 모듈을 합쳐 하나의 파일로 작성하는 방식으로 프로그램을 만든다.

위처럼 프로그램 코드를 기능별로 나눠서 독립된 파일에 저장하여 관리하는 방식을 모듈화 프로그래밍이라고 한다.


모듈의 독립성이 높아야 하나의 모듈을 수정하더라도 다른 모듈에게 영향을 주지 않고, 오류가 발생해도 쉽게 발견하고 해결할 수 있다.

모듈의 독립성은 결합도(Coupling)응집도(Cohesion)에 의해 측정된다.

독립성을 높이려면 모듈의 결합도는 약하게, 응집도는 강하게, 모듈의 크기는 작게 만들어야 한다.

Coupling (결합도)

모듈 간에 상호 의존하는 정도 또는 두 모듈 사이의 연관 관계

결합도가 약할수록 모듈의 독립성이 높아진다.

자료 결합도 < 스탬프 결합도 < 제어 결합도 < 외부 결합도 < 공통 결합도 < 내용 결합도

종류내용
자료 결합도
Data Coupling
모듈간의 인터페이스로 전달되는 파라미터를 통해서만 상호 작용이 일어나는 경우
스탬프 결합도
Stamp Coupling
모듈간의 인터페이스로 배열이나 객체, 자료 구조 등이 전달되는 경우
제어 결합도
Control Coupling
어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하는 제어 요소를 전달하는 경우
외부 결합도
External Coupling
어떤 모듈이 외부에 있는 다른 모듈의 데이터를 참조하는 경우
공통 결합도
Common Coupling
여러 개의 모듈이 하나의 공통 데이터 영역(전역변수 참조 및 갱신)을 사용하는 경우
내용 결합도
Content Coupling
어떤 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우

Cohension(응집도)

모듈의 내부 요소들의 서로 관련되어 있는 정도

응집도가 강할수록 모듈의 독립성이 높아진다.

우연적 응집도 < 논리적 응집도 < 시간적 응집도 < 절차적 응집도 < 통신적 응집도 < 순차적 응집도 < 기능적 응집도

종류내용
우연적 응집도
Functional Cohesion
모듈 내부의 각 구성요소들이 연관이 없을 경우
논리적 응집도
Sequential Cohesion
유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우
시간적 응집도
Communication Cohesion
연관된 기능이라기 보단 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우
절차적 응집도
Procedural Cohesion
모듈이 다수 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우
통신적 응집도
Temporal Cohesion
동일한 입력과 출력을 사용해 다른 기능을 수행하는 활동들이 모여있을 경우
순차적 응집도
Logical Cohesion
모듈 내에서 한 활동으로부터 나온 출력 값을 다른 활동이 사용할 경우
기능적 응집도
Coincidental Cohesion
모듈 내부의 모든 기능이 단일 목적을 위해 수행되는 경우

0개의 댓글