01 소프트웨어 재사용
🎈 배경
◾ 소프트웨어 위기로 인한 품질 및 생산성 저하
◾ 소프트웨어 개발의 자동화 기술 발달로 CASE 도구 사용 확대
◾ 소프트웨어 개발 표준화 준수 및 품질확보 노력
🎈 정의
기존 개발 기능, 성능 및 품질을 인정받았던 소프트웨어의 전체 또는 일부분을 활용해 새로운 소프트웨어 구축함
🎈 목적
◾ 신뢰성 : 기능, 안정, 속도 등의 사전 성능 검증됨
◾ 확장성 : 검증된 기능 기반으로 업그레이드 용이
◾ 생산성 : 비용, 시간 위험 등 전체적 개발 프로세스 향상
🎈 소프트웨어 재사용의 대상
1️⃣ 일반적인 지식
- 환경 정보 : 교육 및 활용을 통해 얻어진 지식
- 외부 지식 : 개발 및 특정분야의 참여를 통해 쌓은 지식
2️⃣ 설계 정보
- 기본설계
- 상세설계
3️⃣ 데이터 정보
- 시스템 데이터
- 시험 사례 (Test Cases)
4️⃣ 프로그램 코드
- 모듈
- 프로그램
️5️⃣ 기타
- 투자 대 효과 분석 정보
- 사용자 지침서
- 타당성 조사방법 및 결과
- 프로토타입
- 인력
🎈 소프트웨어 재사용의 원칙
◾ 범용성(Generality) : 특정 응용분야만이 아닌 일반적으로 활용될 수 있는 정도여야 함
◾ 모듈성(Modularity) : 정보은닉과 추상화의 원칙으로 최소한의 결합도 및 최대한의 응집력을 갖도록 해야 함
◾ 하드웨어 독립성 : 가능한 실행 하드웨어 기종과 무관해야 함
◾ 소프트웨어 독립성 : OS 또는 DBMS와 무관하게 운영해야 함
◾ 자기 문서화(Self Documentation) : 모듈의 정확한 기능, 용법, 인터페이스 기술
◾ 일반성(Commonality) : 많은 개발자들에게 공통적으로 필요하고 사용 가능해야 함
◾ 신뢰성(Reliability) : 품질을 믿고 사용할 수 있어야 함
🎈 효과
- 소프트웨어 생산의 TCO 절감
- 높은 품질의 소프트웨어 생산을 위한 공유 및 활용 효과
- 시스템 개발에 대한 정보 공유 및 타 프로젝트의 산출물 공유
- 시스템 구조와 좋은 시스템 구축 방법에 대한 교육적 효과
02 역공학
◾ 이미 만들어진 시스템을 역으로 추적하여 처음의 문서나 설계기법 등의 자료를 얻어내는 일
◾ 소프트웨어 유지보수 단계에 수행
◾ 소프트웨어 생명주기의 마지막 단계에서 얻어지는 프로그램 또는 문서 등을 이용하여 생명주기 초기 단계의 산출물에 해당하는 정보 또는 문서를 만들어 내는 일
INPUT | OUTPUT |
원시코드, 목적코드, 작업 절차, 라이브러리 등 입출력 형태의 자료, 문서 | 구조도, 자료 흐름도, 제어 흐름 그래프, 개체 관계도 |
🎈 필요한 경우
◾ 기 가동 중인 시스템의 유지보수가 어려운 경우
◾ 변경이 빈번하여 시스템 효율이 저하된 경우
◾ 파일 시스템으로 개발된 업무를 관계형 데이터베이스로 재구축하려는 경우
◾ 기본 메인 프레임을 다운사이징하는 경우
🎈 장점
◾ 상용화되거나 기 개발된 소프트웨어의 분석을 도와줌
◾ 기존 시스템의 자료와 정보를 설계 수준에서 분석할 수 있어 유지 보수성을 향상
◾ 기존 시스템 정보를 Repository에 보관하여 CASE의 사용을 용이하게 함
🎈 종류
◾ 논리 역공학 : 원시 코드로부터 정보 추출, 물리적 설계정보를 얻어내는 역할 수행
◾ 자료 역공학 : 기존 데이터베이스를 수정하거나 새로운 데이터베이스 관리시스템으로 전이하는 역할
'TOPCIT > M1 소프트웨어 개발' 카테고리의 다른 글
Ⅰ소프트웨어 공학 개발 (0) | 2022.07.25 |
---|