[정보처리기사] 1과목 소프트웨어 구축 - 소프트웨어 공학 개념
[ 1 ] 소프트웨어 공학
1. 소프트웨어 공학 (Software Engineering)
소프트웨어의 개발, 운용, 유지보수 등의 생명 주기 전반을 체계적이고 서술적이며 정량적으로 다루는 학문이다.
2. 소프트웨어 공학의 3R
⑴ 역공학(Reverse Engineering)
- 기존 개발된 시스템을 CASE(Computer Adied Software Engineering) 도구를 이용하여 요구 분석서, 설계서 등의 문서로 추출
- 개발 단계를 역으로 올라가 기존 개발된 시스템의 코드나 데이터로부터 설계 명세서나 요구 분석서 등을 도출
⑵ 재공학(Re-Engineering)
- 소프트웨어의 위기를 해결하기 위해 개발의 생산성이 아닌 유지보수의 생산성으로 해결하려는 방법
- 기존 소프트웨어를 폐기하지 않고 기능을 개선시키거나 새로운 소프트웨어로 재활용하는 소프트웨어 재사용 공법
- 예방 유지보수 (Preventive Maintenance) 측면에서 소프트웨어 위기 해결
- 재공학 과정 : 분석(Analysis) -> 재구성(Restructuring) -> 역공학(Reverse Engineering) -> 이관(Migration)
⑶ 재사용(Reuse)
- 이미 개발되어 있는 소프트웨어의 전체 또는 일부분을 다시 사용
- 재사용의 범위 :
-> 함수와 객체 재사용 : 클래스나 함수 단위로 구현한 소스코드를 재사용
-> 컴포넌트 재사용
-> 애플리케이션 재사용
- 재사용 방법
① 합성 중심 (Composition Based, 블록 구성) : 전자 칩과 같은 소프트웨어 부품 즉 블록(모듈) 을 만들어서 끼워 맞추어 소프트웨어를 완성시키는 방법
② 생성 중심 (Generation Based, 패턴 구성) : 추상화 형태로 쓰여진 명세를 구체화하여 프로그램을 만드는 방법
3. 소프트웨어 개발 단계
계획 -> 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수