1. 소프트웨어 위기(Software Crisis)
-
1960년 대 많은 수의 소프트웨어 프로젝트가 실패
-
소프트웨어 위기라는 용어는 F. L. 바우어가 1968년 독일 가미시에서 열린 첫번째 나토 소프트웨어 공학 학회에서 처음 사용
✅ 프로젝트 예산이 초과되었다.
✅ 프로젝트 일정이 지연되었다.
✅ 소프트웨어 품질이 낮았다.
✅ 소프트웨어가 요구사항을 만족시키지 못하는 일이 빈번히 일어났다.
✅ 소프트웨어가 고객의 손에 전달되지 못했다.
2. 소프트웨어 공학(Software Engineering)
- The application of a systematic, disciplined, quantifiable approach to development, operation, and maintenance of software; that is, the application of engineering to software (IEEE 610)
즉, 소프트웨어의 개발, 운영 및 유지 보수에 체계적이고, 규율적이고 정량적인 접근 방법을 적용하는 것을 의미하며, 이는 곧 소프트웨어에 공학적으로 접근하는 것을 말한다.
- 공학적 접근 방법: 도구, 프로세스, 방법론을 이용하여 접근
3. SWEBOK: 소프트웨어 공학 지식체계
- Software Engineering Body Of Knowledge
- ACM(미국 컴퓨터협회)과 IEEE Computer Society에서 발간한 전문소프트웨어 엔지니어가 반드시 갖추어야 할 능력을 구성하는 지식영역들의 묶음
4. 소프트웨어 프로젝트 현황
💡 Successful
전통적인 기능으로 일정 및 비용이 초과되지 않고 약속된 기능을 전달하는지로 정의
(iron triangle 3가지 요소(scope, budget, time)를 모두 만족시키는 경우)
현재는 사용자가 만족하는지로 정의
-> 성공률이 전보다 낮아지고, iron triangle 요소의 만족과는 무관해짐
💡 Challenged: 일정 지연/비용 초과/낮은 품질
💡 Failed: 프로젝트 도중에 취소