1. 소프트웨어 공학
(1) 재공학과 재사용(Software Reuse)
①②③④⑤⑥⑦⑧
① 소프트웨어 재공학(Software Reengineering)의 개념 및 목표
- 소프트웨어 위기를 개발의 생산성이 아닌 유지보수의 생산성으로 해결하려는 방법을 의미한다.
- 재구조화는 재공학의 한 유형으로 사용자의 요구사항이나 기술적 설계의 변경 없이 프로그램을 개선하는 것이다.
- 소프트웨어 재공학 관점에서 가장 연관 깊은 유지보수 유형은 예방 유지보수(Preventive Maintenance)이다.
- 재사용을 수월하게 하며 소프트웨어의 수명을 연장하는 것을 목표로 한다.
② 재공학의 장점
- 개발 시간과 비용을 감소시킨다.
- 프로젝트 실패의 위험을 감소시킨다.
- 소프트웨어의 품질 및 생산성을 향상시킨다.
- 구축 방법에 대한 개발 지식을 공유할 수 있다.
③ 재공학의 과정
- 분석(Analysis): 기존 소프트웨어의 명세서를 확인하여 소프트웨어의 동작을 이해하고 재공학 대상을 선정하는 것이다.
- 재구성(Restructing): 소프트웨어 구조를 향상시키기 위해 코드를 재구성하는 것이다.
- 역공학(Reverse Engineering): 원시 코드를 분석하여 소프트웨어 관계를 파악하고 기존 시스템의 설계 정보를 재발견하여 다시 제작하는 작업이다.
- 이식(Migration): 기존 소프트웨어 시스템을 새로운 기술 또는 하드웨어 환경에서 사용할 수 있도록 변환하는 작업이다.