소프트웨어를 개발할 때 필요한 모든 절차 또는 과정
이 때의 흐름을 체계화한 개념을 '소프트웨어 개발 프로세스 모델'이라 한다.
주어진 자원으로 개발하고 관리하는 방법 구체적으로 정의.
소프트웨어 개발 프로젝트에 대한 전체적인 일정 계획 수립 및
자원 분배, 의사소통 기준결정 및 개발 진행 상황 파악 및 문서 검토
(밑으로 내려갈수록 이전의 모델을 보완하며 진화함)
즉흥적. 일단 개발하고 나중을 생각함. 코딩과 수정 모델이라고도 함.
단일 개발자가 단시간 내 크기가 작은 소프트웨어 개발 시에만 유용
(작작작)
설계나 정해진 절차 없어서 진척사항 파악 어렵고 문서 없어서 유지보수 어려움.
반복적인 수정으로 가독성 하락.
폭포수 -> 산출물 중심
V -> 단계 검증 중심
고전적 생명 주기, 계획 분석, 설계, 구현, 테스트, 유지보수의 단계를 순차적으로 진행. 단계별로 산출물(문서)작성 하며 이상유무 판단 후 다음 단계로 진행 (top-down)
정형화된 절차를 통해 관리 용이, 문서화 체계적, 요구사항 변화 적은 프로젝트에 적합
앞단계가 되어야 진행가능. 단계마다 완벽해야 다음 단계에서 오류가 없음. 사용자가 중간에 가시적인 결과를 볼 수 없다
폭포수 모델 변형, 테스트 단계를 추가 확장하고 어떻게 관련되어 있는지 나타냄
세세한 테스팅으로 오류를 줄임
높은 신뢰도를 요구하는 프로젝트에 적합
여전히 반복이 없기 때문에 변경사항을 다루기 어려움
정식 절차 전, 사용자 요구대로 모형 만들어서 사용자와 의사소통
요구사항이 불분명하거나 변화가 계속 발생하는 경우 적합
구체적 대화 가능
반복을 통한 요구사항명세서 만들 수 있음
결과물 예측 가능으로 개발 초기 만족감, 동기부여
유지보수 노력과 시간 줄음
반복적이기 때문에 투입인력과 비용 산정 어려움, 목표, 종료시점 불명확, 중간 점검 힘듬, 추가비용 발생
위험 최소화를 위해 점진적으로 개발
요구분석 -> 위험분석 -> 프로토타입 개발
기능 요구사항 : 사용자 요구
비기능 요구사항 : 성능
심각한 사태 확률 적음, 사용자의 불만 적음
대규모 프로젝트나 큰 시스템에 적합
반복적인 진행으로 기간 길어지고 관리 어려워짐
위험 관리 전문가가 필요하다는 부담감
개발자가 먼저 릴리즈 1을 개발해 사용자가 사용
개발과 사용이 병행 반복
중요하다고 생각되는 부분부터 개발 후 그 일부를 사용하며 개발 범위 늘림
전체요리 -> 메인요리 -> 후식
도서개발 처럼 1장 쓰고 2장쓰고 ... 10장까지 완성
한꺼번에 많은 비용 필요없음
완전 새로운 시스템에 대해 조직이 받는 충격 완화 및 자연스러운 변화
이미 사용하고 있는 서브시스템이 있어 어떠한 유형으로 개발해야 하는지 알 수 있음
서로 연관된 서브시스템 고려해야함 (의존성)
통합하는데 어려움
도입, 구체화, 구축, 전이의 단계를 거친다.
도입 - 준비 단계, 비지니스 모델링, 요구사항정의 구현, 테스트 거의없음
구체화 - 상세 단계, 비지니스 모델링, 요구사항 정의 등은 줄어들고 분석 및 설계 작업 크게 올라감. 설계 결과에 따라 구현과 단위테스트 점점 시작
구축 - 구현이 가장 많이 이루어지고 베타 릴리즈 나타남. 1, 2번 단계 많이 줄어들고 구현결과에 따른 테스트 작업도 늘어남.
전이 - 완성 단계, 베타 테스트로 사용자가 직접 테스트, 버그제거, 튜닝, 유지보수 담당자 교육
산출 - 모든 단계에서 공통적으로 이루어짐. 일반적인 생명주기 프로세스의 배포 활동과 비슷, 관리는 지속적으로 수행, 모니터링하며 평가
작업을 계속 반복해서 수행하는 반복적 개발
각각의 생명주기를 가지는 여러번의 반복으로 품질향상
프로젝트에 장애가 될 수 있는 위험요소 사전 파악, 처리, 해결하기 때문에 위험 감소
우선순위 높은 코드 먼저 개발 후 붙여나가기 때문에 좋은 품질의 시스템 개발 가능
대규모 프로젝트에 사용되서 문서양이 너무 많음
여러 반복으로 단계별 구분이 명확하지 않다
2022-09-29 문서 형식 및 선형 순차적 모델까지 작성
2022-10-19 완성