When using the Waterfall Methodology each process is done sequentially. It is also referred to as a linear-sequential life cycle model. When using the waterfall methodology each phase must be completed before the next phase can begin. All the software functionality is delivered at once. The diagram below describes the different phases. The waterfall development approach is best when the solution is very complex and has significant dependencies between the various pieces.
The advantage of waterfall methodology is that it produces highly reliable system with a large growth envelope. Development using waterfall can be constrained to a predefined schedule and provides management with progress visibility. It works best with well defined detailed requirements. Each phase has specific deliverables and review processes in place. The stages are clearly defined with well understood milestones and tasks.
The disadvantage of waterfall methodology is that it takes a long time from requirements to implementation and sometimes the requirements change. It is difficult to go back and make midcourse corrections. It doesn’t provide the customer with frequent progress visibility or work well with poorly defined requirements. It doesn’t deal well with high amounts of risk and uncertainty. Sometimes companies use a hybrid approach which is a combination of both the waterfall and iterative approaches.
The diagram above illustrates the difference between the Waterfall and Agile/Iterative Methodologies. (SS- System Specifications, DD- Detailed Design, CUT- Code & Unit Test, IT- Integration Test, UAT- User Acceptance Testing)