모듈화, 응집도, 결합도
· 4 min read
128
모듈화
모듈화의 개념
- 시스템을 분해하고 추상화하여 SW 성능을 향상시키거나, 시스템의 디버깅, 테스트, 통합 및 수정을 용이하도록 하는 SW 설계 기법
모듈화의 장점
- 모듈 재사용성, 개발과 유지보수성
- 복잡성 감소
- 오류 파급효과 최소화
- 기능 분리가능, 인터페이스 단순화
- 낮은 결합도, 높은 응집도
응집도와 결합도 개요
응집도와 결합도의 개념
- 응집도: 하나의 모듈 내부의 처리요소 간 기능적 연관성을 측정하는 척도
- 결합도: 모듈 간의 관련성을 측정하는 척도
응집도와 결합도의 배경
- 최근 MSA 적용에 따른 모듈화의 중요성이 증가되었고, MSA의 각 서비스 단위(컴포넌트)는 응집도가 높고 결합도가 낮게 구현되어야함.
응집도와 결합도 종류 및 설명
응집도의 종류 및 설명
우논시절통순기
종류 | 설명 | 응집도 |
---|---|---|
기능적 | 모든 요소가 단일 기능 수행 | 높음 |
순차적 | 한 기능의 출력이 다른 기능의 입력으로 사용 | ▲ |
통신적 | 동일한 입출력 데이터로 다른 기능 수행 | ⎮ |
절차적 | 기능 요소가 반드시 특정 순서대로 실행 | ⎮ |
일시적 | 기능 요소가 모두 같은 시간에 실행 | ⎮ |
논리적 | 논리적으로 유사하나 관계가 밀접하지 않음 | ⎮ |
우연적 | 모듈 내 요소가 연관이 없음 | 낮음 |
- 가능한 높은 응집도를 추구하여 유지보수 용이성 확보
- 모듈 간 결합도는 최소화하여 각 모듈은 높은 응집도 확보
- Co-incidental -> Logical -> Temporal -> Procedural -> Communicational -> Sequential -> Functional
결합도의 종류 및 설명
내공외제스자
종류 | 설명 | 결합도 |
---|---|---|
자료 | 모듈 간 파라미터 전달 | 낮음 |
스탬프 | 모듈 간 자료구조 전달 | ⎮ |
제어 | 다른 모듈을 제어하기 위해 플래그 전송 | ⎮ |
외부 | 모듈이 SW외부 환경과 연관 | ⎮ |
공통 | 모듈들이 공통 데이터 참조 | ▼ |
내용 | 다른 모듈의 내부 데이터 변경 | 높음 |
- 모듈 상호간 낮은 결합도 추구
- 모듈 간 사이드 이펙트(리플 이펙트) 최소화
- Contents -> Common -> External -> Control -> Stamp -> Data
응집도, 결합도 적용방안
구분 | 내용 | 비고 |
---|---|---|
설계 | 시스템 모듈화, API통신 | 유지보수 용이성 |
개발 | 모듈간 인터페이스 단순화, 명확한 역할 분담 | 의존성 주입 |
모듈성을 높이기 위한 고려사항
- 코드리뷰를 통해 개발단계에서의 의존성 문제, 인터페이스 불일치 등 저해요인 방지
- MSA 설계시 서비스 단위로 높은 응집도, 낮은 결합도를 갖게 설계