폭포수 모델
폭포수 모델이란 ?
소프트웨어 개발하는 가장 전통적인 방식으로, 선형적임
(앞단계가 끝나야 뒷단계로 진행가능)
상세한 문서가 생성되는 문서 중심의 모델로, 각 단계가 명확히 구분돼있다. 각 단계에서는 산출물이 만들어지고 이 산출물은 다음 단계의 입력 자료로 사용된다. 따라서, 해당 단계의 오류를 수정하지 않고 다음 단계로 넘어가면 그 오류가 끝까지 남아있을 수 있어 초기단계에 오류 해결을 하는 것이 중요함.
절차가 간결하고, 이해하기 쉬워 단계별 진척 사항에 대한 관리가 용이함. 요구 사항의 변화가 적은 프로젝트에 적합함(초기에 어느정도 요구 사항이 확정되고 변화가 적은 프로젝트)
각 단계를 개발하는 절차 중에는 사용자의 요구사항을 반영할 수 있는 체계적인 방법이 없어 개발이 완료되어 동작하는 것을 보기 전엔 사용자가 원하는 것을 정확히 알 수 없음. 초기단계의 오류가 구현 단계에서 발견되거나 개발이 완료돼 사용 중에 발견되면 수정하는데 많은 시간&비용이 든다. 개발이 진행된 이후 새로운 요구사항이 추가되면 프로젝트 전체 일정에 큰 부담을 줌.
사용자가 실제로 소프트웨어 작동 모습을 보려면 구현이 끝나야 한다. 중간에 가시적인 결과를 볼 수 없음.
소프트웨어 개발 단계 : 요구사항 -> 설계 -> 구현 -> 테스팅 -> S/W 제품
요구사항 단계 : 사용자의 문제 해결 or 목적 달성을 위해 소프트웨어가 제공해야 하는 서비스/품질 등과 관련된 제약사항. 고객이 요구하지 않았더라도 당연히 제공돼야 한다고 가정되는 사항들.
* 폭포수 모델은 목적 불확실성을 점진적으로 낮춰가는 방식X (요구사항에 대한 단계가 따로 있고, 무엇을 만들지, 요구사항 등은 초기에 모두 분석하고 개발함. 프로젝트 초기부터 확실히 정하고 불확실성을 처음부터 낮추고 시작함
테스트 레벨에 따른 캐스팅 : 단위 테스팅 - 통합 테스팅 - 시스템 테스팅 - 인수 테스팅
유지보수
- 수정 유지보수 : 개발 중에 발견하지 못 하고 사용 중에 오류 발견했을 때 수정하는 작업
- 적응 유지보수 : 운영체계나 인프라 환경이 변화됐을 때 이 변화를 수용하도록 프로그램 수정하는 작업 (예 : windows-> linux 로 환경 변경됐을 때 적응하도록 유지보수 하기)
- 완전 유지보수 : 기능이나 성능을 개선하거나 새로운 기능 추가하기 위해 프로그램을 수정하는 작업
- 예방 유지보수 : 오류가 발생되기 전에 미연에 방지될 수 있도록 수행하는 작업
Iron Triangle
: 세 요소가 단단하게 연결돼있음
(한 요소가 변화하면 나머지 요소들도 변화함. 그렇지 않으면 quality가 나빠질 수 밖에 없음)
- Scope : 우리가 수행해야 할 일의 양
- Resources : 수행할 때 드는 예산(비용)
- Schedule : 수행하는데 걸리는 기간(일정)
Iron Triangle과 폭포수 모델
-Scope 고정돼있음 : 고객의 통제 아래 있고, 개발자는 늘리거나 줄일 수 없음