728x90
반응형
SMALL
1. 소프트웨어 재사용(Software reuse)
이미 개발되어 인정받은 소프트웨어의 전체 혹은 일부분을 다른 소프트웨어 개발이나 유지에 사용하는것.
소프트웨어 개발의 품질과 생산성을 높이기 위한 방법으로, 기존에 개발된 소프트웨어와 경험, 지식을 소프트웨어에 적용한다. |
클래스, 객체 등의 소프트웨어 요소는 소프트웨어 재사용성을 크게 향상시켰음 |
소프트웨어 부품(모듈)의 크기가 작고, 일반적일수록 재사용률이 높음 |
재사용이 가능한 요소
- 전체 프로그램
- 부분코드
- 프로세스
- 시험계획
- 응용분야에 관한 지식
- 설계에 관한 결정
- 논리적 데이터 모형
- 시스템 구조에 관한 지식 등
장- 단점
장점 | 개발 시간과 비용을 단축시킴 소프트웨어 품질을 향상시킴 소프트웨어 개발의 생산성을 향상시킴 프로젝트 실패의 위험을 감소시킴 시스템 구축 방법에 대한 지식을 공유하게 됨 시스템 명세, 설계, 코드 등의 문서를 공유하게 됨 |
단점 | 어떤 것을 재사용할 것인지 선정해야 함 시스템에 공통적으로 사용되는 요소들을 발견해야 함 프로그램의 표준화가 부족함 새로운 개발 방법론을 도입하기 어려움 재사용을 위한 관리 및 지원이 부족함 기존 소프트웨어에 재사용 소프트웨어를 추가하기 어려움 프로그램 언어가 종속적임 소프트웨어 요소의 내부와 함꼐 인터페이스 요구 사항의 이해가 필요함 라이브러리 안에 포함시킬 사용 요소의 명확한 결정 기준이 없음 |
방법
합성 중심(composition - based) | 전자 칩과 같은 소프트웨어 부품, 즉 블록(모듈)을 만들어 끼워 맞추어 소프트웨어를 완성시키는 방법 블록 구성 방법이라고도 함 |
생성 중심(generation - based) | 추상화 형태로 써진 명세를 구체화하여 프로그램을 만드는 방법 패턴구성방법이라고도 함 |
2. 소프트웨어 재공학(Software reengineering)
새로운 요구에 맞도록 기존 시스템을 이용하여 보다 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상시키는 것
- 유지보수 비용이 소프트웨어 개발 비용의 대부분을 차지하는 문제를 염두에 두어, 기존 소프트웨어의 데이터와 기능들의 개조 및 개선을 통해 유지보수성과 품질을 향상시키려는 기술
- 유지보수 생산성 향상을 통해 소프트웨어 위기를 해결하는 방법
- 기존 소프트웨어의 기능을 개조하거나 개선하므로, 예방(preventive) 유지보수 측면에서 소프트웨어 위기를 해결하는 방법이라고 할 수 있음
- 자동화된 도구를 사용하여 소프트웨어를 분석하고, 수정하는 과정을 포함함
- 소프트웨어 수명이 연장되고, 소프트웨어 기술이 향상됨
- 소프트웨어에서 발생할 수 있는 오류가 줄어들고, 비용이 절감됨
등장배경
- 기존의 소프트웨어가 노후 되어 새로운 소프트웨어로 대치해야 할 경우 현재 시스템보다 훨씬 좋은 시스템을 만들 수 있다는 보장이 없음
- 현재 소프트웨어 품질이 더 좋은 소프트웨어로 교체된다고 해도 사용상 문제점이 없다고 장담할 수 없음
- 새로운 소프트웨어 개발에도 기존 시스템과의 호환성이 100%이루어질 수도 없을 뿐만 아니라, 사용자의 교육에도 많은 영향을 줄 수 있다.
목적과 목표
- 유지보수 및 기술 향상
- 유지보수의 생산성 향상
- 소프트웨어 요소들을 추출하여 정보 저장소에 저장
- 소프트웨어 수명 연장
목표
복잡한 시스템을 다루는 방법 구현 | 시스템이 복잡해질수록 시스템을 다루는 방법이 필요하여 이를 위해 자동화 도구 등을 사용할 수 있음 |
다른 뷰의 생성 | 기존 시스템 개발에 대한 관점 외에 다른 방향의 관점을 생성함 |
잃어버린 정보의 복구 및 제거 | 시스템이 계속적인 개발을 거치면서 잃어버린 정보를 복구하거나 필요 없는 정보를 제거함 |
부작용의 발견 | 의도되지 않았던 내용이 구현될 경우 이를 발견함 |
고수준의 추상 | 추상화된 어려운 내용을 여러 형태로 추출하여 이해에 도움을 줌 |
재사용 용이 | 재사용이 가능한 모듈을 추출하여 제사용이 용이하도록 함 |
주요 활동
분석(analysis) | 기존 소프트웨어의 명세서를 확인하여 소프트웨어의 동작을 이해하고, 재공학 대상을 선정하는 것 |
개조(restructuring, 재구성) | - 상대적으로 같은 추상적 수준에서 하나의 표현을 다른 표현 형태로 바꾸는 것 - 기존 소프트웨어의 구조를 향상시키기 위하여 코드를 재구성 하는 것으로 소프트웨어의 기능과 외적인 동작은 바뀌지 않음 |
이식(migration, portable) | - 기존 소프트웨어를 다른 운영체제나 하드웨어 환경에서 사용할 수 있도록 변환하는 작업 |
역공학(reverse engineering) | -기존 소프트웨어를 분석하여 소프트웨어 개발 과정과 데이터 처리 과정을 설명하는 분석 및 설계 정보를 재발견하거나 다시 만들어 내는 작업 -정공학(일반적인 개발 단계)과는 반대 방향으로 기존 코드를 복구하는 방법 -대상 소프트웨어가 있어야 하며, 이로부터 작업이 시작됨 -기존 소프트웨어의 구성 요소와 그 관계를 파악하여 설계도를 추출하거나, 구현과는 독립적인 추상화된 표현을 만듦 *코드역공학, 데이터 역공학 아래표 참고 -역공학의 가장 간단하고 오래된 형태 : 재문서화(redocumentation) |
코드 역공학 | 데이터 역공학 |
코드 -> 흐름도 -> 자료 구조도 -> 자료 흐름도 순으로 재생함 | 코드 -> 자료 사전 -> 개체 관계도 순으로 재생함 |
728x90
반응형
LIST
'전공공부 > 소프트웨어공학' 카테고리의 다른 글
CASE와 정보저장소 (0) | 2021.11.22 |
---|---|
소프트웨어 유지보수 (0) | 2021.11.16 |
소프트웨어 위험 관리 (0) | 2021.11.16 |
소프트웨어 품질 보증 (0) | 2021.11.15 |
검사 (0) | 2021.11.09 |
댓글