[[TableOfContents]] ==== 고전적인 소프트웨어 개발 방법 '폭포수 모델' ==== 고전적인 소프트웨어 개발방법으로 '폭포수 모델'이다. 폭포수 모델은 마치 각각의 과정이 폭포수 처럼 흘러내리는 것에 비유하여 붙여진 이름이다. 고전적인 방법이라고 해서 나쁜 것은 아니다. 이보다 더 단순한 모델은 없으며, 중/소규모의 프로젝트에는 아직까지 매우 쓸만하다. 하지만 폭포수 모델은 매우 큰 단점이 존재한다. 전 단계들의 산출물에 현 단계가 너무 큰 영향받는 것이 그것이다. 특히, 요구사항 조사/분석과정에서 사용자의 요구사항을 조사/분석가가 제대로 얻어내지 못하면 프로젝트가 큰 어려움을 격게 된다. attachment:정보시스템개발/waterfall_model.jpg?width=50% 다음과 같은 장/단점이 존재한다. * 장점 * 가장 오래 사용되어 폭넓게 사용되고 성공사례도 풍부하다. * 매우 단순하여 전체 과정의 이해가 쉽다. * 진행과정을 세분화하면 관리가 용이해 진다. * 단점 * 초기 요구사항 조사/분석과정이 매우 어렵다. * 중요한 결함이 늦게 발견된다. * 전 단계가 마무리되어야 다음 단계로 진행된다. (직렬성) ==== 프로토타입 ==== 이 모델은 폭포수 모델의 단점을 보완한 방식으로 프로토타입이라는 것은 사용자가 원하는 핵심기능을 실제 구현하여 고객에게 평가를 받는 과정을 반복하는 방식이다. 초기에 사용자로부터 요구사항을 확실이 얻어 낼 수 있는 방법이다. 하지만 일반적인 데이터베이스 설계에는 적합한 방식으로 보기는 조금 힘들다. 온라인 게임을 개발하는 방법으로는 적당하다. 왜냐하면 게임을 계속 개발할 것인가 접을 것인가에 대한 타당성을 검토해 볼 수 있기 때문이다. 즉, 요구사항을 잘 모르겠거나 프로젝트를 진행해도 좋을지 나쁠지 간을 보는 방식이다. 이 때 만들어진 프로토타입 자체는 사용자와의 의사소통의 도구가 된다. attachment:정보시스템개발/prototype_model.jpg?width=40% 다음과 같은 장/단점이 존재한다. * 장점 * 요구사항 도출이 어려울 때 사용하면 효과가 있다. * 사용자가 구축될 정보시스템에 대한 이해를 할 수 있다. (부수적으로 품질도 성숙된다.) * 사용자와의 의사소통이 원활해진다. * 단점 * 프로토타입의 결과를 최종 결과물로 오해 할 수도 있다. * 고객이 평가하여 프로젝트를 접을 경우는 비경제적이다. * 고객의 평가와 프로토타입의 정제 단계에서 자주 변경되므로 중간단계 산출물에 대한 문서화가 어렵다. ==== 나선형 모델 ==== 나선형 모델은 폭포수 모델의 장점과 프로토타입 모델의 반복적인 특성을 결합시킨 모델[* Boehm 제안]이다. 특이한 것은 폭포수 모델 및 프로토타입 모델의 장점에 위험 분석 단계가 추가되었다는 것이다. 그래서 대규모 시스템 및 리스크가 큰 시스템 개발에 적합하다고 알려져 있다. attachment:정보시스템개발/spiral_model.jpg?width=70% 다음은 장/단점이다. * 장점 * 요구사항 파악이 용이하다. * 리스크를 관리하므로 위험 부담이 감소된다. * 소프트웨어의 품질을 높일 수 있다. * 단점 * 많은 시간이 소모된다. * 프로젝트 일정이 길어지므로 프로젝트 관리의 어려움이 따른다. * 충분히 검증되지 않은 방법으로 성공사례가 적다.