프로젝트와 클라이언트의 니즈와 주어진 상황에 따라, 적합한 프로젝트 방법론을 택할 수 있는 능력은 매우 중요하다고 할 수 있습니다. 소프트웨어마다 성향이 다르기 때문에, 모두 똑같은 개발 모형으로 설계하기란 쉽지 않습니다. 점점 상황이 다양해지는 시점에서, PM은 올바르고 명확한 방법론을 제시할 수 있어야 합니다. 이번 시간에는 다양한 소프트웨어 개발 모델 중 하나인 Waterfall 모델에 대해서 알아보도록 하겠습니다.
한 번 떨어지면, 거슬러 올라갈 수 없는 폭포수처럼, 소프트웨어 개발 과정도 한 단계를 확실히 끝낸 후에 다음 단계로 넘어간다는 의미에서 붙여진 명칭입니다. Waterfall 모델은 가장 오래된 접근 방식 중 하나이며, 여전히 많은 상황에서 사용됩니다.
Waterfall 모델은 Linear Sequential Model로, 전 단계로 돌아가는 것이 허용되지 않는 선형 모델입니다. 그렇기 때문에 완전히 순차적으로 한 단계, 한 단계를 진행해야 하며, 다시 돌아갈 수 없기 때문에 해당 단계에서 많은 노력을 들여야 합니다.
또한, 각 단계가 끝날 때 산출물이 나오는 Document-Driven 방법입니다. + 최초로 개발 단계를 나눈 방법론.
📖 과정
시스템이나 소프트웨어에 대한 요구사항을 수집하고 분석합니다. + 요구사항을 분석하고 타당성을 검토합니다.
요구사항을 기반으로 시스템 아키텍처와 소프트웨어 디자인을 개발합니다.
이 단계에서는 1단계의 요구사항을 만족시킬 수 있는 제품을 설계합니다.
설계된 시스템과 소프트웨어를 개발하고 코딩합니다. 시뮬레이션과 mock-up test, 각종 부품의 테스트를 거쳐 시제품을 만듭니다.
구현된 소프트웨어를 테스트하고 검증합니다. 시제품의 시험과 재설계를 반복하여 설계가 완성됩니다.
소프트웨어가 출시된 이후에도 유지보수를 수행하여 문제를 해결하고 새로운 요구사항을 수용합니다. 제품을 대량 생산할 수 있는 공장을 짓고 유지관리를 도울 수 있는 서비스 체계를 완성합니다.
☘️ 장점과 단점, 그리고 사용
PM은 Waterfall Model을 좋아합니다. Process Visibility가 좋으며, Seperation of Tasks 용이, 각 단계의 컨트롤, 모니터링 등 관리가 용이하기 때문입니다. 큰 단점은 "Blocking States"와 전 단계로 돌아가지 못한다는 것입니다.
Waterfall 모델은 매우 정형화되어 있어, 각 단계에서 어떠한 일을 수행해야 하는지가 매우 명확하게 정의되어 있습니다.
이 모델은 각 단계별로 개발 작업을 할당하고 추적하기 쉽기 때문에 프로젝트 일정과 예산을 관리하기 쉽다는 장점이 있습니다.
제품을 고객에게 인도하는 (Delivery) 시점이 명확하다는 점이 있습니다. 이 것은 기능, 품질, 운영관리에 대한 요구조건이 분명하기 때문입니다.
요구사항이나 디자인이 변경되었을 때 유연하게 대처하기 어렵다는 단점이 있습니다.
각 단계가 진행된 뒤에 설계에 변경이 생기면 큰 문제가 발생할 수 있습니다.
이전 단계로 돌아가서 수정을 하는 것이 불가능하기 때문에, 초기에 요구사항을 정확하게 수집해야 하며, 그렇지 않으면 개발 프로젝트의 일정과 예산에 부정적인 영향을 미칠 수 있습니다.
"Blocking States" : 해당 단계 이외에는 아무 단계도 수행하지 못하는 단점
Waterfall 모델은 간단한 소프트웨어 개발 프로젝트에는 적합하지만, 크고 복잡한 프로젝트에는 적합하지 않을 수 있습니다. 이런 경우에는 Agile 모델과 같은 유연한 접근 방식이 더 적합할 수 있습니다.
– 하드웨어의 유연성이 없기 때문에 소프트웨어의 기능에 대한 결정을 구현될 때까지 미루는 것은 일반적으로 불가능하다.
– 이러한 시스템에서는 이러한 분석이 가능하도록 사양 및 설계 문서가 완전해야 합니다. 규격 및 설계의 안전 관련 문제는 일반적으로 구현 단계에서 수정하는 데 매우 비용이 많이 필요합니다.
– 시스템의 하드웨어는 유사한 모델을 사용하여 개발될 수 있으며, 기업들은 하드웨어와 소프트웨어에 공통된 모델을 사용하는 것이 더 쉽다는 것을 알게 됩니다. 여러 회사가 참여하는 경우에는 서로 다른 하위 시스템의 독립적인 개발을 허용하기 위해 완전한 규격이 필요할 수 있습니다.