01.소프트웨어 재사용
가) 소프트웨어 재사용(Reuse)의 개요
(정의) 사용 소프트웨어 개발관련 지식(기능, 모듈, 구성등)을 표준화하여 개발 생산성을 높이기 위하여 반복적으로 사용하기에 적합하도록 구성하는 방법
(목적) 신뢰성, 확장성, 생산성
(참고) Tailoring : '재단하다'의 뜻으로 조직의 표준 프로세스를 개별 프로젝트 환경에 맞게 재단하여 적용한다는 의미
나) 소프트웨어 재사용의 대상
1.일반적인 지식 | 환경정보 : 교육 및 활용을 통해 얻어진 지식 외부지식 : 개발 및 특정분야의 참여를 통해 쌓은 지식 |
2.설계 정보 | 기본설계 , 상세설계 |
3.데이터 정보 | 시스템 데이터, 시험 사례 |
4.프로그램 코드 | 모듈, 프로그램 |
5.기타 | 투자대 효과분석 정보, 사용자 지침서, 타당성 조사방법 및 결과, 프로토타입, 인력 |
다) 소프트웨어 재사용의 원칙
1.범용성(Generality) 2.모듈성(Modularity) 3.하드웨어 독립성 4.소프트웨어 독립성 5.자기 문서화(Self Documentation) 6.일반성(Commonality) 7.신뢰성(Reliability)
라) 실무에서 재사용 구현의 문제점
비용측면 | 재사용을 위한 소프트웨어 부품은 개발비가 더 들 수 있다 |
시간측면 | 사용에 대한 효익의 효과는 오래 걸린다 |
소프트웨어 이해측면 | 변경으로 인한 부차적인 이해가 곤란하다 |
소프트웨어 모듈의 내부 인터페이스 요구사항의 이해가 곤란하다 | |
표준화측면 | 소프트웨어 표준화 부족하다. |
재사용 대상 추출 측면 | 현존하는 소프트웨어 부품에서 재자사용 부품의 추출이 비현실적이다. |
공통으로 사용할 수 있는 소프트웨어 모듈을 찾기가 어렵다. |
마) 소프트웨어 재사용의 장애요인 및 대책
재사용 장애요인 | - 관리자와 개발담당자의 거부 반응 - 재사용 기술 적용의 동기 결여 - 소프트웨어 표준화의 부재 -사회적 또는 법적 장애 |
|
재사용 장애요인 제거 대책 | 기술적 방안 | -새로운 설계 및 개발 방법론 활용 -재사용 소프트웨어 라이브러리의 구축 -자동화 도구(CASE)의 활용 |
관리.제도적 방안 | -보상제도의 확립 -능동적인 경영전략 -조직의 변화 |
바) 재사용 적용 시 고려사항
문화 측면 | 재사용 문화 조성을 위한 제도 장착 |
환경 측면 | 초기 투자를 통한 재사용 환경의 구축 |
개발방법론 측면 | 체계화된 재사용 기반의 소프트웨어 개발 프로세스 |
하향식/상향식 개발 접근법 | |
재사용 컴포넌트에 대한 Granularity | |
지속적 관리 측면 | 지속적인 라이브러리의 개선 및 보강 |
생산성 측면 | 도구(tool)의 지원이 있는 재사용 |
재사용 컴포넌트에 대한 정보 집합의 관리 | |
소프트웨어 생산성 평가 및 척도 | |
생산성 향상이 가능한 재사용 | |
산출물 측면 | 소프트웨어의 재사용 대상 산출물 |
사) 소프트웨어 재사용의 효과
1. 소프트웨어 생산의 TCO(Total Cost of Ownership:총소유비용) 절감
2. 높은 품질의 소프트웨어 생산을 위한 공유 및 활용효과
3. 시스템 개발에 대한 정보공유 및 타 프로젝트의 산출물 공유
4. 시스템 구조와 좋은 시스템 구축방법에 대한 교육적 효과
02.역공학
가) 역공학의 정의
(정의) 이미 만들어진 시스템을 역으로 추적하여 처음의 문서나 설계기법 등의 자료를 얻어 내는 일을 말한다. 이것은 시스템을 이해하여 수정하는 소프트웨어 유지보수 단계에 수행하는 일련의 활동이다.
(역공학의 Input/Output)
Input | Output |
원시코드, 목적코드, 작업절차, 라이브러리 등 입출력 형태의 자료, 문서 | 구조도, 자료 흐름도, 제어 흐름 그래프, 개체 관계도 |
나) 역공학이 필요한 경우
1. 기 가동중인 시스템이 유지보수가 어려운 경우
2. 변경이 빈번하여 시스템 효율이 저하된 경우
3. 파일 시스템으로 개발된 업무를 관계형 데이터베이스로 재구축 하려는 경우
4. 기본 메인 프레임을 다운사이징 하는 경우
다) 역공학의 장점
1. 상용되거나 기 개발된 소프트웨어의 분석을 도와줌
2. 기존 시스템의 자료와 정보를 설계 수준에서 분석할 수 있어 유지 보수성을 향상
3. 기존 시스템 정보를 Repository에 보관하여 CASE의 사용을 용이하게 함
라) 역공학의 종류
종류 | 설명 |
논리역공학 | 원시코드로부터 정보를 추출하여 물리적 설계 정보저장소에 저장 물리적 설계정보를 얻어내는 역할 수행 |
자료역공학 | 기존 데이터베이스를 수정하거나 새로운 데이터베이스 관리시스템으로 전이하는 역할 수행 |
'TOPCIT > TOPCIT교재' 카테고리의 다른 글
V.소프트웨어 아키텍처 설계 - 손선희 (1) | 2022.07.18 |
---|---|
소프트웨어 설계 원리와 구조적 설계 - 손기봉 (0) | 2022.07.18 |
자료구조와 알고리즘 - 이강욱 (0) | 2022.07.18 |
1. 소프트웨어 공학 개요 - 문경숙 (0) | 2022.07.18 |
프로그래밍 언어와 개발환경 - 배준호 (0) | 2022.07.18 |