정보 처리 기사 필기/1. 소프트웨어 설계
1-4 애플리케이션 설계 - 공통 모듈, 모듈의 평가
ggomgom22
2022. 5. 30. 15:39
공통 모듈
1. 모듈
개념 |
- 전체 프로그램을 기능 단위로 분해
- S/W 성능 향상, 시스템 디버깅, 시험, 통합 및 수정 용이
- 추상화되어 재사용 및 공유 가능한 수준으로 만들어진 기능 단위
- 프로그램이 효율적으로 개발, 관리될 수 있도록 시스템 분해하고 추상화하여 S/W 제품 성능 향상시키거나 시스템 수정 및 재사용, 유지 관리 용이
|
5가지 기본 요소 |
- 입력 요소 : 데이터 입력 부분 a, b(parameter, 매개 변수)
- 출력 요소
- 기능요소
- 기관 요소 : 모듈 내부의 알고리즘
- 내부 자료 요소 : 모듈 내부 기억 장소
|
장점 |
- 효율적 관리 및 성능 향상
- 전체적 S/W 이해 쉬워지고 복잡성 감소
- S/W 시험, 통합, 수정 용이
- 기능 분리되어 인터페이스 단순화
- 오류 파급으로 인한 부작용 최소화
- 모듈 재사용 가능하여 개발/유지보수 용이
|
공유도(Fan-in)/ 제어도(Fan-out) |
- 공유도
- 상위 모듈의 수: 얼마나 많은 모듈이 주어진 모듈 호출하는 지에 대한 척도
- 공유도 높을수록 해당 클래스 사용하는 클래스 수 많음
- 단일 실패점 발생 가능성 잇으므로 중점 관리 및 더 많은 테스트 통한 검증 필요
- 제어도
- 하위 모듈의 수: 주어진 모듈이 호출하는 모듈의 개수
- 제어도 높을 수록 하나의 모듈이 많은 다른 모듈 사용
- 불필요한 기능 호출하고 있지 않은지 추가 검토 진행, 업무 로직 단순화 검토
|
모듈 개수 및 비용 간 상관도 |
|
특징 |
- 프로그램에서 특정 기능 처리할 수 있는 실행 코드
- 다른 프로그램에서 재사용 가능
- 코딩(구현), 컴파일 독립적으로 수행
- 실행은 종속적 수행
- 모듈은 다른 모듈을 호출 할 수도/당할 수도 있음
- 모듈 호출 시 매개 변수 전달하거나 받을 수 있음
- 기본 라인 수는 100라인 이내가 적당
- 모듈 찾아 실행하는 시간 느림
|
2. 공통 모듈
개념 |
- 복잡한 계산식, 반복 사용되는 검증 기능, 연관되어 발생하는 조건식 등의 경우 별도의 공통 모듈로 구성하여 프로젝트 재사용성 향상
- 정보 시스템 구축 시 자주 사용하는 기능들로써 재사용이 가능하게 패키지로 제공하는 독립된 모듈 의미
|
원칙 |
- 정확성(Correctness): 시스템 구현 시 필요 여부 알도록 정확히 작성
- 명확성(Clearity): 해당 기능에 대해 일관되게 이해되고 한 가지로 해석될 수 있도록 작성
- 완전성(Completeness): 시스템 구현 시 필요하고 요구되는 모든 것 기술
- 일관성(Consistency): 상호 충돌 없도록 작성
- 추적성(Traceability)
|
공통 모듈 식별 및 명세 |
- 기능 분석하여 공통 부분 식별
- 단위 시스템 업무 기능 분석하여 공통 부분 식별/후보군 선정
- 후보군 공통 모듈 선정 여부 검토
- 공통 모듈 선정 시 별도의 기능으로 분리
- 공통 부분에 대한 검토 회의
- 공통 부분으로 식별된 기능 시스템 담당자와 검토회의를 통해 공통화 여부 확정
- 업무 선임 개발자와 주요 개발자 식별, 이해관계자와 함께 검토 회의 일정 수립
- 식별된 공통 기능 재사용의 효과성 높은지 검토
- 식별되지 않은 공통 기능 잇을 시 추가하여 효율성 높일 수 있는지 의견 취합
- 공통 기능에 대한 관리 담당자 선별
|
공통 분류의 재사용 범위에 따른 분류 |
- 함수와 객체 재사용
- 컴포넌트 재사용
- 애플리케이션 재사용
|
재사용 종류
재공학 |
기존 소프트웨어 버리지 않고 기능 개선/새로운 소프트웨어로 재활용하는 소프트웨어 재사용 기법 |
역공학 |
SW에 대한 디버깅, 디컴파일 등의 분석 통해 기존 제품에 구현된 구조, 원리, 기술, 알고리즘 등을 역으로 분석하여 재구성 |
재개발 |
기존 시스템 내용을 참조하여 완전히 새로운 시스템 개발, 기존 시스템에 새로운 기능 추가, 기존 시스템의 기능 변경 |
3. 재공학(Re-Engineering)
소프트웨어 재사용 |
- 재사용 가능한 정보: 프로그램 전체, 모듈, 명령어, 소스 코드, 컴포넌트
- 개발된 S/W 반복 사용으로 생산성 향상
- 개발 기간, 비용 줄이기 위해 기능 파악하고 재구성하여 시스템 응용하기 위한 최적화 작업
|
소프트웨어 재사용의 2가지 기본 기술 |
- 생성 중심(Generation Based, 모듈화) : 재사용 단위 찾아 발전. 전자 칩 같은 유용한 S/W 부품 찾아내는 기술
- 합성 중심(Composition Based, 모델화) : 모듈을 생산성있게 조립. S/W 부품(모듈/블록)을 만들어 끼워 맞추는 방법
|
소프트웨어 재사용 이점 |
- 개발 시간과 비용 단축
- 프로젝트 실패의 위험성 감소
- 개발 지식 공유
- S/W 품질 향상
- S/W 개발 생산성 증진
|
재사용 모듈 설계 유의 사항 |
- 이해도 높아야 함
- 공통 기능에의 응집도 최대한 높게 구성
- 모듈 독립성 향상 위해 결합도 최대한 낮게 구성
- 복잡도,중복성 줄이고 일관성 유지
- 기능 예측 가능하며 제한적이지 않도록
- 유지보수 용이
|
모듈 평가 기준 |
- 결합도(연관성): 모듈 간의 관계성 척도
- 응집도(완성도): 한 모듈 내 처리 요소 사이의 기능적 연관 정도
- 결합도 작을수록 응집도 클 수록 좋은 설계
- 결합도 높을 시 시스템 구현 및 유지보수 어려움
- 결합도 낮을 시 몯류 독립성 향상, 재사용성 올라가 활용도 좋음
|
모듈의 평가
1. 소프트웨어 모듈 결합도(Coupling)
자스제외공내
- 모듈 내부가 아닌 외부의 모듈과의 연관도 또는 모듈 간의 상호 의존성
- 소프트웨어 구조에서 모듈 간의 관련성을 측정하는 척도
자료 결합도(Data Coupling) |
- 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호작용이 일어나는 경우의 결합도
- 두 모듈간의 인터페이스가 자료 요소만으로 구성된 결합으로 가장 좋은 결합도록 실인수와 가인수 번지 독립적 사용(모듈이 파라미터나 인수로 다른 모듈에게 데이터 넘겨주고 호출받은 모듈은 받은 데이터에 대한 처리 결과 돌려줌)
|
스탬프 결합도 (Stamp Coupling, 구조 결합) |
- 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도
- 두 모듈 간 같은 레코드 부분적으로 공유하여 모듈 간 독립성 유지
|
제어 결합도 (Control Coupling) |
- 단순 처리할 대상인 값만 전달되는 게 아니라 어떻게 처리를 해야 한다는 제어 요소가 전달되는 경우의 결합도
- 처리하는 방법을 제어 요소로 전달. 모듈 간에는 제어 변수로 종속적인 관계
|
외부 결합도 (Extern Coupling) |
- 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜, 또는 디바이스 인터페이스를 공유할 경우의 결합도
- 외부 변수에 의해 영향 받는 두 모듈이 결합된 관계
|
공통 결합도 (Common Coupling) |
- 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호작용하는 경우의 결합도
- 모듈이 다른 모듈의 내부 자료를 참조 하는 형태의 결합된 관계
|
내용 결합도 (Content Coupling) |
- 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도
- 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 참조하는 형태의 결합된 관계
|
2. 소프트웨어 모듈 응집도
우논시절통순기
우연적 응집도 (Coincidental Cohesion) |
모듈 내부의 루틴들이 뚜렷한 관계 없이 묶인 경우로 응집도 가장 약하고 가장 좋지 않은 모듈 설계 |
논리적 응집도 (Logical Cohesion) |
모듈 내부 루틴들이 같은 범주에 속하는 기능끼리 묶인 모듈 |
시간적 응집도 (Temporal Cohesion) |
모듈 내부 루틴들이 시간적으로 수행 시기가 같은 기능끼리 묶인 모듈 |
절차적 응집도 (Procedure cohesion) |
모듈 내부 루틴들이 수행 시기가 순위가 있는 기능끼리 묶인 모듈 |
통신적 응집도 (Communication cohesion, 정보적, 교환적) |
모듈 내부 루틴들 중 작업 대상이 같은 기능끼리 묶인 모듈 |
순차적 응집도 (Sequential cohesion) |
모듈 내부 루틴들이 이전의 명령어로부터 나온 출력 결과를 그 다음 명령어의 입력 자료로 사용하는 경우의 응집도 |
기능적 응집도 (Functional cohesion, 함수적 응집도) |
모듈 내부가 하나의 단일 기능으로 존재하는 경우로, 프로그램 언어에서 지원받는 라이브러리 |
Reference
https://book.naver.com/bookdb/book_detail.naver?bid=17134434
이기적 정보처리기사 필기 기본서
- 기초부터 탄탄히 잡아주는 영진닷컴의 이기적 수험서!영진닷컴이 자랑하는 수험서 브랜드 ‘이기적’ 시리즈는 쉽고 풍부한 내용으로 기초부터 튼튼하게 쌓아주는 합격의 동반자입니다. 기
book.naver.com