옐그's 코딩라이프

[TOPCIT][01] II. 소프트웨어 재사용 (에센스 정리 요약) 본문

TOPCIT

[TOPCIT][01] II. 소프트웨어 재사용 (에센스 정리 요약)

옐그멍이 2022. 11. 27. 15:03

학습 목표

1. 소프트웨어 재사용의 개념, 목적, 대상, 현실 적용방안, 효과, 고려사항 등을 이해한다.

2. 역공학의 개념, 필요한 이유, 장점, 고려사항에 대해 이해한다.

 

핵심 키워드

- 재사용, 역공학

- 코드 재사용, 소프트웨어 표준화

- 소프트웨어 유지보수

 

01 소프트웨어 재사용

소프트웨어 재사용(Reuse) 개요

소프트웨어 재사용은 기존의 소프트웨어 또는 소프트웨어 지식을 활용해, 새로운 소프트웨어를 구축하는 일임. 

 

소프트웨어 재사용 배경

- 소프트웨어 위기로 인한 품질 및 생산성 저하

- 소프트웨어 개발의 자동화 기술 발달로 CASE 도구 사용 확대

- 소프트웨어 개발 표준화 준수 및 품질확보 노력

 

소프트웨어 재사용 정의

- 소프트웨어 재사용이란 사용 소프트웨어 개발관련 지식(기능, 모듈, 구성 등)을 표준화하여 개발 생산성을 높이기 위하여 반복적으로 사용하기에 적합하도록 구성하는 방법

- 기존 개발 기능, 성능 및 품질을 인정받았던 소프트웨어의 전체 또는 일부분을 다시 사용하여 신규 개발되는 소프트웨어의 품질과 생산성 및 신뢰성을 높이고 개발 일정 및 비용을 감소시켜 주는 대응방안

- 기존 개발 모듈이나 프로그램, 산출물 등을 동일한 응용 분야, 서로 다른 응용업무, 혹은 서로 다른 기업 간에 다시 사용하거나 일부 수정 후 재사용할 수 있는 개념

 

소프트웨어 재사용의 목적

- 신뢰성 : 기능, 안정, 속도 등의 사전 성능 검증됨

- 확장성 : 검증된 기능 기반으로 upgrade 용이

- 생산성 : 비용, 시간 위험 등 전체적 개발 프로세스 향상

 

소프트웨어 재사용의 대상

일반적인 지식, 설계 정보, 데이터 정보, 프로그램 코드, 기타 등등

 

소프트웨어 재사용의 원칙

1. 범용성 : 특정 응용분야만이 아닌 일반적으로 활용될 수 있는 정도여야 함

2. 모듈성 : 정보은닉과 추상화의 원칙으로 최소한의 결합도 및 최대한의 응집력을 갖도록 하는 특성이 있어야 함

3. 하드웨어 독립성 : 가능한 실행 하드웨어 기종과 무관해야 함

4. 소프트웨어 독립성 : OS 또는 DBMS와는 무관하게 운영해야 함

5. 자기문서화 : 모듈의 정확한 기능, 용법, 인터페이스를 기술함

6. 일반성 : 많은 개발자들에게 공통적으로 필요하고 사용 가능해야 함

7. 신뢰성: 품질을 믿고 사용할 수 있어야 함

 

실무에서 재사용 구현의 문제점

- 공통으로 사용할 수 있는 소프트웨어 모듈 발견 어려움

- 소프트웨어의 표준화 부족

- 소프트웨어 모듈의 내부 인터페이스 요구사항의 이해 곤란

- 변경으로 인한 부차적 영향으로 이해 곤란

- 재사용을 위한 소프트웨어 부품은 개발비가 더 들 수 있음

- 재사용의 효익은 오랜 시간이 경과 후 나타남

- 현존하는 소프트웨어 부품에서 재사용 부품의 추출이 비현실적임

 

소프트웨어 재사용의 장애요인

- 관리자와 개발 담당자들의 거부 반응

- 재사용 기술적용의 동기 결여

- 소프트웨어 표준화의 부재

- 사회적 또는 법적 장애

 

소프트웨어 재사용의 장애요인 제거 대책

- 새로운 설계 및 개발 방법론의 활용

- 재사용 소프트웨어 라이브러리의 구축

- 자동화 도구(CASE)의 활용

- 보상제도의 확립 등

 

소프트웨어 재사용의 효과

- 소프트웨어 생산의 TCO 절감

- 높은 품질의 소프트웨어 생산을 위한 공유 및 활용효과

- 시스템 개발에 대한 정보공유 및 타 프로젝트의 산출물 공유

- 시스템 구조와 좋은 시스템 구축방법에 대한 교육적 효과

 

02 역공학

역공학의 정의

역공학이란 소프트웨어 공학의 한 분야로 이미 만들어진 시스템을 역으로 추적하여 처음의 문서나 설계기법 등의 자료를 얻어 내는 일. 시스템을 이해하여 수정하는 소프트웨어 유지보수 단계에 수행하는 일련의 활동

 

역공학의 Input과 Output

Input : 원시코드, 목적콛, 작업철차, 라이브러리 등 입출력 형태의 자료, 문서

Output : 구조도, 자료 흐름도, 제어 흐름 그래프, 개체 관계도

 

역공학이 필요한 경우

- 기 가동중인 시스템의 유지보수가 어려운 경우

- 변경이 빈번하여 시스템 효율이 저하된 경우

- 파일 시스템으로 개발된 업무를 관계형 데이터베이스로 재구축하려는 경우

- 기본 메인 프레임을 다운사이징 하는 경우

 

역공학의 장점

- 상용화되거나 기 개발된 소프트웨어의 분석을 도와줌

- 기존 시스템의 자료와 정보를 설계 수준에서 분석할 수 있어 유지 보수성을 향상

- 기존 시스템 정보를 Repository에 보관하여 CASE의 사용을 용이하게 함

 

역공학의 종류

논리역공학 : 원시코드로부터 정보를 추출하여 물리적 설계 정보저장소에 저장, 물리적 설계정보를 얻어내는 역할 수행

자료역공학 : 기존 데이터베이스를 수정하거나 새로운 데이터베이스 관리시스템으로 전이하는 역할 수행

 

 

728x90