개요
하나의 프로그램은 한번에 개발하는 것이 아니라
프로그램을 기능별로 분리하여 부품처럼 개발한 후
이 부품화된 프로그램을 조립하면서
프로그램을 완성하게된다
이 부품화된 프로그램을
모듈, 서브루틴, 프로시저,함수, 라이브러리, 메소드라고 하는데
이러한 모듈을 생성하고 조립하고 관계를 맺는 작업등은
소프트웨어 설계에서 매우 중요한 작업이다
그 중 이 본문은 모듈에 대한 내용을 중점적으로 다룬다
전체 프로그램을 기능 단위로 분해한다
소프트웨어의 성능을 향상시키거나
시스템의 디버깅, 시험, 통합 및 수정을 용이하도록 한다
추상화되어 재사용 및 공유 가능한 수준으로 만들어진
기능 단위를 모듈로 규정한다
프로그램이 효율적으로 개발, 관리될 수 있도록
시스템을 분해하고 추상화하여 소프트웨어 제품의 성능을 향상시키거나
시스템의 수정 및 재사용, 유지 관리를 용이하게 하는 기법이다
모듈의 요소를 설명 하기 위한 예제
2개의 인자를 받아 비교하여 더 큰 값을 가져오는 기능의 모듈
int Max_Value(int a, int b){
int max;
if(a > b){
max = a; // a가 더 큼
} else {
if(a != b){ // a 와 b가 동일하지 않음
max = b; // b가 더 큼
} else {
max = 0; // 두 값이 동일하여 최대값을 가져올 수 없음
}
}
return max;
}
① 입력 요소
② 출력 요소
③ 기능 요소
④ 기관 요소
⑤ 내부 자료 요소
① 공유도
얼마나 많은 모듈이 주어진 모듈을 호출하는가를 나타내는 척도
상위 모듈의 수이다
공유도가 높은 경우 해당 클래스를 사용하는
클래스의 수가 많다는 것을 의미한다
공통 모듈화 즉면에서 잘 설계 되어 있으나
단일 실패점이 발생할 수 있으므로
중점 관리 및 더 많은 테스트를 통한 검증이 필요하다
② 제어도
주어진 모듈이 호출하는 모듈의 개수
하위 모듈의 수이다
제어도가 높은 경우 하나의 모듈이
많은 수의 다른 모듈을 사용한다는 것을 의미한다
불필요한 기능을 호출하고 있지 않은지 추가 검토를 진행하고
업무 로직을 단순화 시킬 수 있는지에 대해서도 검토한다
모듈의 개수가 많을수록 노력 비용은 감소한다(반비례)
모듈의 개수가 많을수록 모듈 통합 비용이 증가한다(비례)
모듈 통합 비용과 모듈 개발 비용이 교차되는 부분의 영역이
최소 노력비용이 된다
전체 소프트웨어 비용은 눈금 곡선 범위에서 결정 되어야 한다
① 모듈의 크기가 너무 작은 경우
② 모듈의 크기가 너무 큰 경우
프로그램에서 공통적으로 사용할 수 있는 모듈이다
복잡한 계산식, 반복 사용되는 검증 기능, 연관 되어 발생하는
조건식 등의 경우 별도의 공통 모듈로 구성하여
프로젝트의 재사용을 향상 시킬 수 있다
공통 모듈은 정보 시스템 구축 시 자주 사용하는 기능들로써
재사용이 가능하게 패키지로 제공하는 독립된 모듈을 의미한다
① 정확성(Correctness) :
② 명확성(Clarity) :
③ 완전성(Completeness) :
④ 일관성(Consistency) :
⑤ 추적성(Traceability) :
① 기능을 분석하여 공통 부분 식별
단위 시스템의 업무 기능을 분석하여
공통 부분을 식별한다
단위 시스템 중
공통으로 사용될 수 있는 기능을 식별하여
후보군으로 선정한다
후보군으로 선정된 기능을
공통 모듈로 선정할 지 여부에 대해 검토한다
공통 모듈로 선정하는 경우
별도의 기능으로 분리한다
② 공통 부분에 대한 검토 회의
공통 부분으로 식별된 기능을
시스템 담당자와 검토회의를 통하여
공통화 여부에 대해 확정한다
업무 선임 개발자와 주요 개발자를 식별하고
이해 관계자가 함께 검토 회의 일정을 수립한다
식별된 공통 기능이
재사용의 효과성이 높은지에 대해 검토한다
식별되지 않는 공통 기능이 있다면 추가하여
효율성을 높일 수 있는지 의견을 취합한다
공통 기능에 대한 관리 담당자를 정한다
① 함수와 객체 재사용
② 컴포넌트 재사용
③ 어플리케이션 재사용