IEIP_Note

모듈화 Modularization

모듈 Module
- 프로그램을 구성하는 시스템을 기능 단위로 독립적인 부분으로 분리한 것
- 하나 이상의 논리적인 기능을 수행하기 위한 명령어들의 집합
장점
1). 프로그램의 효율적인 관리가 가능해지고, 성능이 향상된다.
2). SW 이해와 용이성 증대와 복잡성이 감소한다.
3). 기능의 분리가 가능해지고, 인터페이스가 단순해진다.
4). 모듈의 재사용이 가능해지기 때문에 개발과 유지보수가 수월해진다.

모듈화 원리

원리 설명
모듈 독립성
Module Independency
낮은 결합도와 높은 응집도 가지게 된다.
분할과 정복
Divide & Conquer
모듈 단위로 분할했기 때문에
복잡한 문제가 발생해도, 문제가 발생한 모듈에서 해결이 가능하다.
데이터 추상화
Data Abstraction
각 모듈 자료 구조에 접근하고 수정하는 함수 내에
자료 구조의 표현 내역을 은폐할 수 있다.
정보 은닉
Information Hiding
외부에서 변경해선 안되는 모듈을 타 모듈로부터 은폐한다,

모듈화 측정 지표


모듈화 유형

모듈화 유형 / 설계 측면

유형 설명
Module 설계 시 연관된 기능을 한 부분에 모아두고
라이브러리 형태로 사용한다.
Component Binary 형태의 재 사용이 가능한 형태
인터페이스에 의해 Logic 수행할 수 있는 모듈 단위
Service 기존 Component보단 느슨한 결합 형태의 기능을 제공하는 모듈 단위
느슨한 결합 Loosely Coupled
- 다른 class를 직접적으로 사용하는 class의 의존성 줄여서
  코드의 재사용성과 유연성을 높이는 기법

모듈화 유형 / 구현 측면

유형 설명
function 프로그램 구현 시, 프로그램 일부 코드로 특정 작업을 수행하는
상대적으로 다른 코드에 비해 독립적인 Module
Macro 프로그램에서 반복되는 부분에 특정한 이름 부여하고
해당 이름을 통해서 실행할 수 있게 하는 기법
Inline 프로그램 구현 시 반복되는 부분에 특정 이름 부여
해당 이름 통해서 실행할 수 있게 하는 프로그램 기법

결합도 Coupling

특징 설명
모듈 연관성 없음 서로 다른 상위 모듈에서 호출, 처리 상 연관성이 없는 다른 기능 수행
인터페이스 의존성 자료 전달이 인터페이스 통과하여 인터페이스 복잡성에 의존적이다.
복잡성 감소 낮은 결합도를 통해 복잡성이 감소한다.
파급효과 최소화 에러 발생 시 오류가 전파, 다른 오류의 원인이 되는 파급효과를 최소화

결합도 유형

유형 설명
내용 결합도
Content Coupling
다른 모듈 내부의 변수, 기능을 다른 모듈에서 사용하는 경우의 결합도
하나의 모듈이 직접적으로 다른 모듈 내용 참조할 때
두 모듈은 내용적으로 결합되어 있는 경우의 결합도
공통 결합도
Common Coupling
Parameter가 아닌 모듈 외부에 선언된 전역 변수 참조하고
해당 변수를 갱신하는 식의 상호작용을 하는 경우의 결합도
외부 결합도
Externel Coupling
두 개의 모듈이 외부에서 도입된 통신 프로토콜이나
디바이스 인터페이스를 공유하고 있는 경우의 결합도
제어 결합도
Control Coupling
어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로
제어 신호를 이용하여 통신하는 경우의 결합도

하위 모듈에서 상위 모듈로 제어 신호가 이동하여
하위 모듈이 상위 모듈에게 처리 명령을 부여하는
권리 전도 현상이 발생하는 결합도 (역천 易天이라고 이해하자..)
스탬프 결합도
Stamp Coupling
모듈 간 인터페이스로 배열, 객체, 구조 등이 전달되는 경우의 결합도

두 모듈이 동일한 자료 구조를 조회하는 경우의 결합도,
자료 구조의 변화가 발생하면, 해당 자료 구조 참조하는
모든 모듈에게도 영향을 준다.
자료 결합도
Data Coupling
모듈 간 인터페이스로 전달되는 파라미터를 통해서만
모듈 간 상호작용이 일어나는 경우의 결합도

한 모듈의 내용을 변경해도, 다른 모듈에겐 영향이 가지 않으므로
가장 바람직한 결합도라고 할 수 있다.
(모듈 간 의존성 낮음. / Stamp Coupling과는 상반되는 특성)

응집도 Cohesion

특징

(1). 유사 기능 영역 구성
- class 목적에 부합하는 같은 기능 영역의 함수들로 구성한다.

(2). 단일 책임 할당
- 함수의 개수가 상대적으로 적고, 오로지 자신만이 할 수 있는 책임을 할당 받는다.

(3). 함수 간 상호협력
- 하나의 함수에 많은 기능을 넣지 않고 다른 함수와 협력한다.

응집도 유형


유형 설명
우연적 응집도
Coincidental Cohesion
서로 간 어떤 의미 있는 연관 관계도 없는
기능 요소로 구성될 경우의 응집도

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