모듈이란?
그 자체로 하나의 완전한 기능을 수행할 수 있는 독립된 실체.
- 독립성
- 수많은 조합.
- 단독 컴파일
- 재사용
모듈화란?
소프트웨어의 성능을 향상시키거나 복잡한 시스템의 수정, 재사용, 유지 관리 등이 용이하도록 기능 단위의 모듈로 분해하는 설계 및 구현 기법.
모듈화 기법
- 루틴 : 소프트웨어에서 특정 동작을 수행하는 일련의 코드로 기능을 가진 명령들의 모임.
- 메인 루틴 : 프로그램의 주요한 부분. 전체의 개략적인 동작 절차를 표시하도록 만들어진 루틴. 서브 루틴 호출.
- 서브 루틴 : 메인 루틴에 의해 필요할 때마다 호출되는 루틴.
공통 모듈 구현이란?
기능을 분할하고 추상화하여 성능을 향상시키고, 유지보수를 효과적으로 하기위한 공통 컴포넌트 구현 기법.
모듈 간의 결합도는 줄이고, 응집도는 높인 공통 모듈 구현 권장.
응집도 (Cohesion) : 높을수록 좋은 품질 _ 우논시절통순기
우연적 < 논리적 < 시간적 < 절차적 < 통신적 < 순차적 < 기능적
1. 우연적 응집도 (Coincidental) : 서로 간에 어떠한 의미 있는 연관 관계도 없는 기능 요소로 구성될 경우의 응집도.
서로 다른 상위 모듈에 의해 호출되어 처리상의 연관성이 없는 서로 다른 기능을 수행할 경우의 응집도.
2. 논리적 응집도 (Logical) : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우의 응집도.
3. 시간적 응집도 (Temporal) : 연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우의 응집도.
4. 절차적 응집도 (Procedural): 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도.
5. 통신적 응집도 (Communication) : 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우의 응집도.
6. 순차적 응집도 (Sequential) : 모듈 내에서 한 활동으로부터 나온 출력 값을 다른 활동이 사용할 경우의 응집도.
7. 기능적 응집도 (Functional) : 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도.
결합도 (Coupling) : 낮을수록 좋은 품질 _ 자스제외공내
자료 < 스탬프 < 제어 < 외부 < 공통 < 내용
1. 자료 결합도 (Data) : 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호 작용이 일어나는 경우의 결합도.
한 모듈의 내용을 변경하더라도 다른 모듈에는 영향을 미치지 않음.
2. 스탬프 결합도 (Stamp) : 배열, 객체, 구조 등이 전달되는 경우의 결합도. 두 모듈이 동일한 자료 구조를 조회하는 경우의 결합도. 자료 구조의 어떠한 변화는 모든 모듈에 영향을 미침.
3. 제어 결합도 (Control) : 한 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어 신호를 이용해 통신하는 경우의 결합도. 하위 모듈에서 상위 모듈로 제어 신호가 이동하여 상위 모듈에게 처리 명령을 부여하는 권리 전도 현상이 발생하는 결합도.
4. 외부 결합도 (External) : 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프토콜, 또는 디바이스 인터페이스를 공유할 경우의 결합도. 외부 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조할 때의 결합도.
5. 공통 결합도 (Common) : 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호 작용하는 경우의 결합도. 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도.
6. 내용 결합도 (Content) : 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도. 하나의 모듈이 직접적으로 다른 모듈의 내용을 참조할 때 두 모듈은 내용적으로 결합되어 있는 경우의 결합도.
팬인 & 팬아웃
팬인 : 어떤 모듈을 제어하는 모듈의 수. 모듈 자신을 기준으로 모듈에 들어옴. 팬인이 높으면 재사용 측면에서 설계가 잘 됨. 단일 장애의 발생 가능. 관리 및 테스트 비용 증가.
팬아웃 : 어떤 모듈에 의해 제어되는 모듈의 수. 모듈 자신을 기준으로 모듈에서 나감. 팬아웃이 높으면 불필요한 모듈 호출 여부 검토 및 단순화 여부 검토 필요.
시스템 복잡도 최적화 : 높은 팬인. 낮은 팬아웃 설계.
공통 모듈 테스트
IDE 도구 활용하여 디버깅 수행.
- 화이트박스 테스트 : 응용 프로그램의 내부 구조와 동작 검사. 테스트 케이스를 다양하게 하여 테스트.
- 메서드 기반 테스트 : 공통 모듈의 외부에 공개된 메서드 기반의 테스트. 메서드에 서로 다른 파람 값을 호출하여 테스트.
- 화면 기반 테스트 : 화면에 직접 데이터 입력하여 테스트.
- 테스트 드라이버 / 테스트 스텁 활용 테스트 : 기능을 테스트할 수 있는 화면 또는 하위 모듈이 구현되지 않은 경우 수행.
테스트 드라이버 - 상위 모듈 없는 경우 / 테스트 스텁 - 하위 모듈 없는 경우.
'정보처리기사' 카테고리의 다른 글
암호화 DES | AES (0) | 2022.10.05 |
---|---|
8.3 배치 프로그램 (1) | 2022.10.04 |
8.1 형상 관리 (1) | 2022.10.04 |
7.5 데이터 조작 프로시저 최적화 (1) | 2022.09.30 |
7.4 절차형 SQL (1) | 2022.09.30 |