소프트웨어 공학의 정의
소프트웨어 위기를 극복하고, 품질 높은 소프트웨어를 효율적으로 개발하기 위한 학문
3R
역공학, 재공학, 재사용을 통해 소프트웨어 생산성을 극대화함
1. 역공학 Reverse Engineering
- 개발 단계를 역순으로 거슬러 올라감
- 이미 개발된 시스템을 분석 → 요구 분석서, 설계서 등의 문서를 추출
2. 재공학 Re-Engineering
- 유지보수의 생산성을 통해 소프트웨어 위기를 해결하기 위한 한 방법
- 예방 유지보수(Preventive Maintenance)를 통한 소프트웨어 위기 해결
재공학 과정
분석(Analysis) → 재구성(Restructuring) → 역공학(Reverse Engineering) → 이관(Migration)
3. 재사용 Reuse
- 이미 개발된 소프트웨어의 전체 or 일부를 다시 사용
- 비용 절감, 실패 위험률 감소
재사용의 범위
재사용 방법 2가지
- 합성 중심(Composition Based, 블록 구성): 모듈 조합
- 생성 중심(Generation Based, 패턴 구성): 추상화
소프트웨어 개발 단계
계. 분. 설. 구. 테. 유
- 계획
- 요구사항 분석
- 설계
- 시스템 구조 설계
- 프로그램 설계
- 사용자 인터페이스 설계
- 구현
- 테스트
- 구현된 소프트웨어가 요구사항을 만족하는지 검사
- 유지보수
- 문제점 수정, 새로운 기능 추가
- 가장 많은 비용 발생