소프트웨어 개발 프로세스 모델
폭포수 모델
- 폭포에서 물이 떨어지듯이 다음 단계로 넘어가는 모델(고전적인 생명주기)
- 초기에 개발된 전통적인 모델
- 공장 생산라인과 유사하다, 소프트웨어를 순차적으로 개발

폭포수 모델의 개발절차
- 각 단계가 끝날때 마다 확실한 산출물(결과물)이 있어야함
- 요구 분석 명세서라는 문서를 작성하며
- 명세서를 기준으로 이상 유무를 확인하고 다음 단계로 넘어감
폭포수 모델 장점
- 관리가 용이
- 체계적으로 문서화 가능
- 요구 사항의 변화가 적은 프로젝트에 적합 (특징)
폭포수 모델 단점
- 각 단계는 앞 단계가 완료 되어야 수행가능
- 만약 후반부에 문제 발생시 문제가 있는 경우 그 단계까지 앞으로 가야한다.
- 결과물이 완벽하게 작성되어야 다음 단계에 오류를 넘겨주지 않음
- 사용자가 마지막 쯤 되어야 결과물을 볼 수 있음
V 모델
- 폭포수 모델의 변형으로, 그와 동일하지만 테스트 부분을 세분화 하였음,
- 폭포수 모델이 산출물 중심이라면 V 모델은 각각의 단계를 검증하는데 초점을 두고 있음
V 모델의 장점
- 소프트 웨어 개발에 검증과 확인 과정을 거쳐서, 개발에 대한 오류를 줄일 수 있음
- 요구 사항이 적은 소프트웨어를 개발하기 용이
V 모델의 단점
- 폭포수 모델의 변형이기 때문에, 개발 하는동안 반복이 힘듦

프로토타입 모델
- 완전한 소프트웨어 개발 이전, 사용자의 요구대로 모형을 만들고, 사용자 의사소통
- Ex) 아파트 모델하우스
프로토타입 모델의 개발
- 프로토타이핑 : 프로토타입을 만드는 것
- 개발자는 사용자의 초기 요구사항을 반영해 1차 프로토타입(입출력 화면)을 만들고, 이를 사용자에게 보여준다.
- 사용자는 1차 프로토타입을 보면서 수정요구를 하고, 이를 반영하여 2차 프로토 타입 제작
- 사용자의 요구가 불투명하고 요구사항의 변화가 계속 많이 발생하는 경우에 적합
프로토타입 모델의 장점
- 대화가 명시적으로 원활하게 대화 할 수 있음 -> 요구사항 분석 UP
- 이를 통해, 사용자의 요구가 충분히 반영된 요구분석명세서 제작 가능
- 개발 초기의 만족감을 가질 수 있음
- 사용자의 요구가 충분히 반영 되므로, 유지보수의 필요한 노력과 시간 단축 가능
프로토타입 모델 단점
- 반복적인 개발 단계로 인해 필요한 투입 인력과 비용 산정이 어려움
- 프로토타입은 완전히 동작할 수 없음에도 빠른시간 안에 결과가 나올것이라 사용자가 착각할 수 있음
- 프로토 타이핑 과정을 관리, 통제 하기 어려움
- 소프트웨어 개발 목표나 종료 시점이 불명확해질 수 있음
- 추가 비용 발생 가능
프로토타입 모델의 개발 절차
- 요구사항 정의 및 분석
- 프로토타입 설계
- 프로토타입 개발
- 사용자에 의한 프로토타입 개발
- 사용자에게 보여주고 피드백을 받음
- 개발자는 피드백을 반영해 2차 설계를 한뒤 2차 프로토타입 개발
- 위 과정을 반복하여, 추가 요구 사항이 없을 때 최종 프로토타입 생성
나선형 모델
- 점진적으로 시스템을 개발하는 모델
- 개발 과정이 반복적이고 점진적으로 진행되는 나선 모양
- 목표 설정 -> 위험 분석 -> 구현 및 테스트 -> 평가 및 다음 단계 수립의 활동 반복
- 실제로 많이 못봤음, 대부분 에자일로 개발

나선형 모델의 개발 절차
- 계획 및 요구 분석 단계
- 개발 의도를 파악해, 프로젝트의 목표를 명확히 하고, 여러 제약 조건들속 대한을 고려
- 위험 분석 단계
- 나선형 모델의 특징
- 프로젝트 수행에 방해되는 위험 요소를 찾아 작성 및 논의
- 심각한 위험 존재 시 프로젝트 존속 여부 논의
- 개발 단계
- 프로토타입 개발, 다른 모델과 동일
- 사용자 평가 단계
- 사용자가 만족할 때 까지 반복하여 최종 제품을 개발
단계적 개발 모델
단계적 개발 모델 – 점증적 개발 방법
- 중요하다고 생각 되는 부분부터 차례대로 개발 후 그 일부를 사용하면서 개발 범위를 점차 늘려간다.
- Ex) 코스 요리에서 전체 요리-메인 요리-후식으로 하나가 끝나면 또 하나를 먹음
- 핵심은: 개발 범위의 증가
점증적 개발 방법 – 소프트웨어 개발
- 요구 분석 명세서에 명시된 시스템을 기능에 따라 독립성이 높은 서브 시스템으로 분할
- 각 서브 시스템을 단계적으로 릴리즈하여 완성하는 방법
점증적 방법의 장단점
- 한번에 많은 비용 필요 없음
- 소프트웨어를 단계적으로 도입하면 자연스러운 변화 가능
- 서브 시스템이 서로 관련이 있어 처음 설계 시 이후에 개발된 다른 서브 시스템과의 연관성을 고려해야함
- 기존에 개발된 서브 시스템과 통합 시 어려움을 겪을 수 있음
단계적 개발 모델 – 점증적 개발 방법
- 시스템 전체를 일차적으로 개발하여 인도 후, 각 서브 시스템의 기능과 성능을 변경 및 보강하여 완성도를 높인다.
- 초기의 요구 사항이 불 분명할 시 적합
- 핵심: 반복 = 품질의 증가