모듈 - Module
분리된 시스템의 각 기능
모듈의 독립성은 높을수록 좋습니다. (재사용성 증가 / 다른 모듈에 대한 영향 감소 )
모듈의 독립성은 결합도와 응집도에 의해 평가됩니다.
1. 결합도 - Coupling
모듈 간 상호 의존하는 정도
낮을수록 품질이 좋다.
- 결합력이 낮은 순으로 정렬된 종류 (품질이 높은 순)
- 자료 결합도(Data Coupling) - 모듈 간의 인터페이스가 자료 요소로만 구성
- 스탬프 결합도(Stamp Coupling) - 모듈 간의 인터페이스로 배열등의 자료구조가 전달
- 제어 결합도(Control Coupling) - 다른 모듈의 내부 흐름을 제어하기 위해, 제어 신호나 제어 요소를 전달
- 외부 결합도(External Coupling) - 외부 모듈의 내부 변수를 참조
- 공통 결합도(Common Coupling) - 공통 데이터를 여러 모듈이 참조
- 내용 결합도(Content Coupling) - 다른 모듈의 내부 기능 및 자료를 직접 참조 및 수정
2. 응집도 - Cohesion
모듈의 내부 요소들이 서로 관련되어 있는 정도
응집도가 높을수록 품질이 좋다.
- 응집도가 높은 순으로 정렬된 종류 (품질이 높은 순)
- 기능적 응집도(Functional Cohesion) - 모든 기능 요소들이 단일 문제와 연관어 수행
- 순차적 응집도(Sequential Cohesion) - 하나의 활동으로 나온 출력 데이터를 다음 활동에 입력으로 활용
- 교환적 응집도(Communication Cohesion) - 동일한 입력 출력을 사용하여 다른 기능을 수행하는 기능이 존재
- 절차적 응집도(Procedural Cohesion) - 다수의 기능을 가진 모듈이 그 기능을 순차적으로 수행하는 경우
- 시간적 응집도(Temporal Cohesion) - 특정 시간에 처리되는 기능이 있는 모듈
- 논리적 응집도(Logical Cohesion) - 유사한 성격을 가진 요소들을 모은 모듈
- 우연적 응집도(Coincidental Cohesion) - 모듈 내부의 각 요소들이 서로 관련이 없는 모듈
3. 팬인 / 팬아웃 - FanIn / FanOut
- 팬인(FanIn) - 어떤 모듈을 제어하는 모듈의 수
- 팬아웃(FanOut) - 어떤 모듈에 의해 제어되는 모듈의 수
팬인이 높으면 재사용률이 높다는 의미
단 팬인이 높은 경우 장애 발생확률이 높다 (단일 장애점이 발생할 수 있다)
단위 모듈 - Unit Module
한 가지 동작을 수행하는 기능을 모듈로 구현한 것
1. 단위 모듈의 구현 과정
- 단위 기능 명세서 작성
- 입. 출력 기능 구현
- 알고리즘 구현
2. 단위 모듈 테스트
모듈이 정해진 기능을 정확히 수행하는지 검증하는 것
단위 테스트(Unit Test)라고도 한다.
기준이 단위 모듈이므로 시스템 수준의 오류는 찾아낼 수 없다.
2.1 단위 모듈 테스트 케이스
모듈이 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위한 테스트 항목에 대한 명세서
검증의 누락이나 불필요한 검증 반복을 최소화시킬 수 있다.
- ISO/IEC/IEEE 29119-3 표준에 따른 테스트 케이스 구성 요소
- 식별자(Identifier)
- 테스트 항목(Test Item)
- 입력 명세 (Input Specification)
- 출력 명세 (Output Specification)
- 환경 설정 (Environmental Needs)
- 특수 절차 요구 (Special Proceedure Requirement)
- 의존성 기술 (Inter-case Dependencies)
공통 모듈 - Common Module
여러 프로그램에서 공통으로 사용할 수 있는 모듈
- 자주 사용되는 계산식, 매번 필요한 사용자 인증등이 대표적인 공통 모듈 구성요소
- 기능을 명확히 이해할 수 있도록 명세 기법을 준수해야 된다.
1. 공통 모듈 명세 기법의 종류
- 정확성 (Correctness) - 구현 시 해당 기능이 필요하다는 것을 알 수 있도록 정확히 작성
- 명확성 (Clarity) - 기능을 명확하게 이해할 수 있도록 작성
- 완전성 (Completeness) - 구현에 필요한 모든 것을 기술
- 일관성 (Consistency) - 공통 기능들 간 상호 충돌이 발생하지 않도록 작성
- 추적성 (Traceability) - 기능에 대한 요구사항의 출처, 관련 시스템 등의 관계를 파악할 수 있도록 자성
효과적인 모듈 설계 방안
- 모듈의 독립성을 높인다.
- 복잡도와 중복성을 줄인다.
- 일관성을 유지한다.
- 모듈의 기능은 예측이 가능해야 한다.
- 모듈은 시스템의 전반적인 기능과 구조를 이해하기 쉽게 적절하게 분해한다.
- 효과적인 제어를 위해 모듈 간의 계층적 관계를 정의하는 자료가 있어야 한다.
재사용 - Reues
이미 개발된 기능들을 새로운 시스템이나 기능 개발에 사용하기 위해 최적화하는 작업
- 규모에 따른 재사용 분류
- 함수와 객체단위의 재사용
- 컴포넌트 단위이 재사용
- 애플리케이션 단위의 재사용
프로세스 간 통신 - IPC : Inter Process Communication
모듈 간 통신 방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스 집합
- 대표 메서드 5개
- Shared Memory
- Socket
- Semaphores
- Pipes & named Pipes
- Message Queueing
Commnet