IT Professional Engineering/SW
모듈화(응집도/결합도)
GilliLab IT
2024. 11. 11. 18:00
728x90
반응형
모듈화(응집도/결합도)
소프트웨어 개발에서 모듈화는 프로그램을 분해하고 추상화하여 성능을 향상시키고, 테스트, 통합 및 수정을 용이하게 하는 중요한 설계 및 구현 기법입니다. 이 글에서는 모듈화의 정의와 원리, 장점, 기법에 대해 자세히 살펴보겠습니다.
응집도와 결합도
응집도
응집도는 모듈 내의 요소들이 서로 관련되어 있는 정도를 나타냅니다. 응집도가 높을수록 모듈의 품질이 좋습니다. 응집도는 다음과 같은 단계로 구분됩니다:
- 우연적 응집도 (Coincidental Cohesion): 모듈 내의 요소들이 아무런 관련 없이 우연히 모여 있는 경우. 가장 낮은 응집도.
- 논리적 응집도 (Logical Cohesion): 유사한 성격을 가진 기능들이 하나의 모듈에 포함된 경우. 예를 들어, 여러 종류의 입력 처리를 하나의 모듈에서 처리하는 경우.
- 시간적 응집도 (Temporal Cohesion): 특정 시점에 실행되는 기능들이 하나의 모듈에 포함된 경우. 예를 들어, 초기화 작업을 하나의 모듈에서 처리하는 경우.
- 절차적 응집도 (Procedural Cohesion): 특정 절차를 따르는 기능들이 하나의 모듈에 포함된 경우. 예를 들어, 데이터 처리 후 결과를 출력하는 기능들이 하나의 모듈에 포함된 경우.
- 통신적 응집도 (Communicational Cohesion): 동일한 입력이나 출력을 사용하는 기능들이 하나의 모듈에 포함된 경우. 예를 들어, 동일한 데이터베이스를 사용하는 기능들이 하나의 모듈에 포함된 경우.
- 순차적 응집도 (Sequential Cohesion): 한 기능의 출력이 다음 기능의 입력으로 사용되는 경우. 예를 들어, 데이터 처리 후 그 결과를 다른 기능에서 사용하는 경우.
- 기능적 응집도 (Functional Cohesion): 모듈 내의 모든 요소들이 하나의 기능을 수행하는 경우. 가장 높은 응집도.
결합도
결합도는 모듈 간의 상호 의존성을 나타냅니다. 결합도가 낮을수록 모듈의 품질이 좋습니다. 결합도는 다음과 같은 단계로 구분됩니다:
- 내용 결합도 (Content Coupling): 한 모듈이 다른 모듈의 내부 기능이나 데이터를 직접 참조하는 경우. 가장 높은 결합도.
- 공통 결합도 (Common Coupling): 여러 모듈이 공통의 전역 데이터를 사용하는 경우.
- 외부 결합도 (External Coupling): 모듈이 외부의 인터페이스를 통해 데이터를 주고받는 경우.
- 제어 결합도 (Control Coupling): 한 모듈이 다른 모듈의 제어 흐름을 변경하는 경우. 예를 들어, 플래그 변수를 통해 다른 모듈의 동작을 제어하는 경우.
- 스탬프 결합도 (Stamp Coupling): 모듈 간에 구조체나 객체와 같은 복합 데이터를 전달하는 경우.
- 자료 결합도 (Data Coupling): 모듈 간에 단순 데이터를 전달하는 경우. 가장 낮은 결합도.
모듈화 원리
- 분할과 정복: 큰 문제를 작은 문제로 나누어 해결하는 원리
- 정보 은폐: 모듈 내부의 구현 세부 사항을 감추고, 인터페이스를 통해서만 접근하도록 하는 원리
- 모듈의 독립성: 각 모듈이 독립적으로 동작할 수 있도록 설계하는 원리
모듈화 장점
- 효율적 관리: 모듈 단위로 관리가 용이하여 유지보수 비용 절감
- 개발 편의성: 모듈 단위로 개발이 가능하여 개발 속도 향상
- 재사용성: 모듈을 재사용할 수 있어 개발 비용 절감
- 품질 향상: 모듈 단위로 테스트가 가능하여 소프트웨어 품질 향상
모듈화 기법
- 설계
- Module: 기능 단위로 모듈을 설계
- Component: 재사용 가능한 컴포넌트 단위로 설계
- Service: 서비스 단위로 설계하여 유연성 향상
- 구현
- Macro: 매크로를 사용하여 코드의 재사용성 향상
- Inline: 인라인 함수를 사용하여 성능 최적화
- Function: 함수 단위로 구현하여 코드의 가독성 향상
모듈화는 소프트웨어 개발에서 중요한 역할을 하며, 이를 통해 개발 비용을 절감하고 소프트웨어의 품질을 향상시킬 수 있습니다.
728x90
반응형