반응형
공통 모듈
모듈
1) 모듈의 개념
- 프로그의 효율적인 관리를 위해 프로그램을 기능 단위로 분해한 것
- 인터페이스가 단순해지고 소프트웨어의 이해가 쉬워짐
- 재사용이 가능하기 때문에 프로그램 개발과 유지보수가 용이
- 소프트웨어 통합, 수정 및 테스트가 용이하며 오류의 파급 효과가 적음
- 다른 모듈들을 호출하거나 호출을 당할 수 있으며 종속적으로 수행
2) 모듈의 기본 요소
① 입력 : 모듈에 데이터가 입력되는 부분(매개 변수, Parameter)
② 출력 : 연산의 결과를 상위 모듈로 반환(Return)하는 부분
③ 기능 : 모듈이 수행하는 기능이 정의된 부분
④ 기관 : 모듈 내부 기능이 수행되는 알고리즘을 의미
⑤ 내부 자료 : 모듈 내부의 데이터들을 의미
3) 공유도와 제어도
① 공유도(Fan-in)
- 해당 모듈을 사용(호출)하는 상위 모듈들의 개수
- 공유도가 높다는 것은 해당 모듈의 호출이 가능한 상위 클래스가 많다는 것
- 이상적인 모듈 설계지만, 단일 실패 지점이 발생할 가능성이 있으므로 중점적인 관리가 필요
② 제어도(Fan-out)
- 해당 모듈이 사용하는 하위 모듈들의 개수
- 제어도가 높다는 것은 해당 모듈이 호출할 수 있는 하위 클래스가 많다는 것
- 불필요한 호출이 있는지, 업무 로직을 좀 더 단순화할 수 있는지 검토가 필요
4) 모듈 설계 시 고려사항
- 모듈의 크기가 작을수록 모듈의 개수가 많아지므로 모듈을 통합하는 비용이 커짐
- 모듈의 크기가 클수록 모듈의 개수가 적어지므로 모듈의 개방 비용이 커짐
- 모듈 통합 비용과 개발 비용을 적절히 조절하여 최소 노력 비용을 산정
- 가급적 100라인 이내로 설계
공통 모듈
1) 공통 모듈의 개념
- 프로그램에서 공통적으로 사용할 수 있는 모듈
- 정보 시스템 구축 시 자주 사용하는 기능들을 모듈화하여 재사용이 가능한 패키지로 제공하는 것
2) 공통 모듈의 설계 원칙
① 정확성(Correctness) : 시스템 구현에 필요 여부를 정확히 판단할 수 있도록 설계
② 명확성(Clarity) : 기능의 구성이 한 가지로 해석될 수 있도록 일관되게 설계
③ 완전성(Completeness) : 시스템 구현에 필요한 모든 요구사항을 수행할 수 있도록 설계
④ 일관성(Consistency) : 상호 충돌 없이 적용될 수 있도록 설계
⑤ 추적성(Traceability) : 요구사항 출처, 관련 시스템 등의 관계를 파악할 수 있도록 설계
3) 공통 모듈의 재사용 범위
① 함수와 객체 재사용 : 클래스나 메소드 단위로 재사용
② 컴포넌트 재사용
- 컴포넌트 단위로 재사용
- 해당 컴포넌트의 인터페이스를 통해 통신
③ 애플리케이션 재사용 : 공통된 업무에 대한 기능을 제공하도록 구현된 애플리케이션을 공유
4) 공통 모듈의 식별과 명세
① 공통 부분 식별
- 단위 시스템의 업무 기능을 분석하여 공통으로 사용될 수 있는 부분을 식별하여 후보군으로 선정
- 검토 회의를 통해 후보군으로 선정된 기능의 공통 모듈 선정 여부를 결정
② 검토 회의
- 개발자와 이해관계자가 함께 검토회의 일정을 수립
- 식별된 공통 기능이 재사용의 효과성이 높은지 검토
- 식별되지 않은 공통 기능이 있다면 추가하여 효율성을 높일 수 있는지 의견을 취합
- 공통 기능에 대한 관리 담당자를 정함
소프트웨어 재공학
1) 소프트웨어 재사용
① 소프트웨어 재사용의 개념
- 개발 자원을 줄이기 위해 기능을 파악하고 재구성하여 시스템에 적용하는 최적화 작업
- 소프트웨어를 개발할 때 재사용이 가능한 정보를 찾아 재사용이 가능한 코드로 발전시키는 것
- 개발 지식의 공유가 가능하여 소프트웨어의 품질과 개발의 생산성을 높임
- 이미 검증된 모듈을 재사용하기 때문에 프로젝트 실패의 위험을 줄여줌
② 소프트웨어 재사용의 기본 기술
- 생성 중심(모듈화, Generation Based)
- 추상화 형태로 쓰여진 명세를 구체화하여 재사용 단위를 찾아 발전시키는 기술
- 패턴 구성 방법
- 합성 중심(모델화, Composition Based)
- 모듈을 조립하여 소프트웨어를 완성시키는 기술
- 블록 구성 방법
③ 재사용 모듈 설계의 유의사항
- 결합도는 약하게, 응집도는 높게 구성
- 누구나 쉽게 이해하고 사용할 수 있도록 사용법이 공개
- 공유도는 높이고, 제어도는 낮추어 설계되었는지 검토
- 효과적인 제어를 위해 모듈 설계가 계층적으로 제시
- 모듈은 유지보수가 용이하고 지나치게 제한적이지 않아야함
2) 소프트웨어 재공학
① 소프트웨어 재공학의 개념
- 소프트웨어의 위기를 개발의 생산성이 아닌 유지보수의 생산성으로 해결하는 방법
- 시스템에 대한 재분석을 통해 공학적으로 우수한 시스템으로 발전시키는 학문
- 도구를 사용하여 정보 저장소의 정보를 충분히 활용하여 분석
- 분석, 재구성, 역공학, 이식 활동 등으로 구분 가능
② 소프트웨어 재공학의 과정
- 분석(Analysis)
- 재구성(Restructuring)
- 역공학(Reverse Engineering)
- 이식(Migration)
③ 역공학
- 소프트웨어를 분석하여 소프트웨어 개발 과정과 데이터 처리 과정에 대한 정보를 재발견하거나 다시 만들어 내는 작업
- 프로그램으로부터 데이터, 아키텍처, 데이터 프로세스에 대한 분석 및 설계 정보를 추출
- 외계인 코드를 분석하여 구성 요소와 그 관계를 파악하여 설계도를 추출
- 코드의 역공학 : 소스코드를 분석하여 자료 흐름도를 생성
- 데이터의 역공학 : 소스코드를 분석하여 자료 사전을 생성
※ <이기적> 환상의 콤비 정보처리기사 책으로 공부하며 정리한 내용입니다.
반응형
'Certificate > 정보처리기사' 카테고리의 다른 글
[정보처리기사] 소프트웨어 아키텍처 ( 정리, 공부 ) (0) | 2023.01.04 |
---|---|
[정보처리기사] 모듈의 성능 평가 ( 정리, 공부 ) (0) | 2022.12.22 |
[정보처리기사] UI 설계 ( 정리, 공부 ) (1) | 2022.12.20 |
[정보처리기사] UI 요구사항 ( 정리, 공부 ) (0) | 2022.12.19 |
[정보처리기사] UI 표준 ( 정리, 공부 ) (1) | 2022.12.16 |