-> 프로젝트의 성공 확률이 높지 않은 편임 - Success = be completed on-time & on-budget - Challenged = be completed and operational but over-budget, over the time estimate, and offers fewer features and function than originally specified
-> 대형 프로젝트 일수록 성공보다 실패의 확률이 높게 나타남
SW 공학 출현
대량생산체계가 급격한 수요의 증가에 대응할 수 있는 공급 체계를 갖출 수 있게 했다는 사실 - SW 개발에도 이와 같은 원리를 적용 (Software Engineering)
IEEE SW 공학에 대한 정의 = 소프트웨어의 개발, 운용, 유지보수 및 파기에 대한 체계적인 접근 방법 = 사용자 요구사항을 만족하고 품질이 좋은 SW를 최소한의 비용으로 계획된 일정에 맞추어 개발하는 방식을 정의한 방법 및 절차와 산출물
SW 공학 계층 구조
도구 - 개발과정에서 사용되는 툴 지칭 - Estimation (LoC, FP 등) 툴, 요구사항 관리 툴, 설계(UML 등) 툴, Testing 툴, 문서화 툴, Case 툴 - CASE는 SW 개발 전 단계 지원하는 도구
방법론 - 프로세스 중심 방법론 ('70년대) > 자료의 변환과정과 프로세스 강조 > 파일시스템에 기반한 절차적 언어 (Fortran, Cobol, Basic, Pascal, c 등) - 자료 중심 방법론 > 프로그램 개발에 사용할 자료를 정의하고 자료와 자료간의 관계를 분석하여 자료구조를 정의하고 이를 토대로 프로세스 구조를 고안 > DB에 기반한 쿼리 중심의 프로그램 방식 (ADABAS/NATURAL) - OO 방법론 > 객체(Object = Data + Process) 를 캡슐화 함으로써 좀더 쉽게 프로세스의 모듈화, 정보은닉, 코드 재사용의 효율을 꾀하는 방법 > 프로세스 중심 방법론과 자료 중심 방법론의 장점을 묶어 진화한 방법
프로세스 - SW 개발에 필요한 작업 이름, 내용, 결과물 - 영역 > SW 명세 (요구분석) > SW 개발 : 명세를 바탕으로 SW 개발하는 과정 > SW 검증 : Validation(분석, 설계 검토, 단위 테스트 / 검토) & Verification (통합, 시스템, 인수 테스트 / 테스트) > SW 진화 : SW의 버전업 작업
SW 프로세스 : Carnegie Mellon University SEI (Software Engineering Institute) 프로세스 일반적인 정의 - 주어진 목적 달성을 위해 수행하는 행위의 집합 - 도구, 방법, 자료, 사람을 포함 - 프로세스, 기술, 사람 - PSP = 개인들이 설계를 할때, 투입된 시간을 기록 -> 거기 맞도록 돈을 받어 (담배피는 시간도 일하는 시간에 포함) - CMMI