소프트웨어 개발 방법론의 시초로 계획, 분석, 설계, 구현, 테스트 등 개발에 필요한 모든 단계가 선형전으로 진행이 되며, 이전의 단계가 완료되어야만 다음 단계로 진행이 되는 모델이다. 마치 폭포가 한 방향으로 흘러내리며, 이를 거슬러 올라갈 수 없음을 표현하기 위해 waterfall (폭포) 모델이라 불린다.
waterfall 방법론은 이전의 단계를 모두 완료해야만 다음 단계로 넘어갈 수 있어 업무 수행 능력과 예측 가능성을 높이며 프로젝트 일정 동안의 작업 능률을 높인다.
이전 단계가 완료되어야만 다음 단계로 넘어가기 때문에, 프로젝트 초기에 정확한 요구 사항을 파악하지 못하거나, 요구 사항이 변경되면 프로젝트 일정이 크게 지연될 수 있다. 실제 실무 현장에서의 경우 모든 프로세스가 완료되기 까지 몇 년이 걸리기도 한다고 한다. 또한 오랜시간을 걸쳐 요구사항과 동일하게 개발을 완료했다 하더라도 사용자의 변심이나 새로운 기술 적용이 필요하기도 하다.
waterfall 방법론의 단점들이 나타나기 시작하며 에자일 방법론이 새롭게 등장하게 된다. 이 방법론은 개발에 필요한 모든 프로세스를 연속적인 반복 주기로 진행하며, 각 단계에서 고객 요구 사항에 대한 빠른 대처와 변경 사항에 대한 유연한 대처 능력을 갖추게 된다.
이 방법론은 일정한 주기로 작은 규모의 작업을 반복 진행하면서도 프로세스의 유연함 덕분에 waterfall 방법론 대비 적은 비용으로 빠른 결과물을 나타낸다는 특징을 가지고 있다.
에자일 빠른 결과물을 얻을 수 있고, 프로세스의 유연함 덕분에 고객 요구 사항에 대한 빠른 대처와 변경 사항에 대한 유연한 대처 능력을 갖추게 된다. 또한 작은 규모의 작업을 반복 진행하면서도 폭포수 모델 대비 적은 비용으로 결과물을 나타낸다는 특징을 가지고 있다.
고객이 예상하는 요구사항과 개발자 혹은 팀원 간 판단한 요구사항이 다르게 인식할 가능성이 있다. 소통 부족이나 문서화의 실수, 개발자의 역량 등 다양한 요인으로 나타나게 된다. 또한 에자일 방법론은 프로세스에 따라 유연하게 대처할 수 있도록 개발자는 waterfall 방법론 대비 높은 개발 역량을 지니고 있어야 한다.
두 방법론은 각각 장단점이 있으며, 프로젝트의 목적과 개발 환경에 따라 선택되어야 한다.
폭포수 모델은 계획과 예측 가능성을 높이고, 해당 프로세스가 진행될 수록 작업 능률이 향상된다. 그러나 변경 사항에 대한 대처 능력이 제한적이며, 프로젝트 초기에 정확한 요구 사항을 파악해야 한다.
에자일 방법론은 빠른 결과물을 얻을 수 있으며, 고객 요구 사항에 대한 빠른 대처와 변경 사항에 대한 유연한 대처 능력을 갖추고 있습니다. 그러나 소통의 부재, 개발 역량에 따라 기존의 요구사항과 나타나는 결과물이 크게 달라질 수 있다.