Definition _
The Waterfall methodology is the traditional approach to developing software. Its approach is to tackle the project as a whole and undertake each of the stages of work in sequence, with each subsequent stage depending on the completion of the last. It puts a greater emphasis on the specification phase, where all aspects of the requirements are planned and set out in meticulous detail before coding is started.
What’s involved in the waterfall methodology?
Depending on the scale and complexity of the project this may be set out in a suite of documents covering; requirements, use cases, wireframes, mockups, detailed design and technical design. The approach enables the software to be architected taking into account a full understanding of the complete project with any changes able to be readily accommodated with a limited impact to costs since no code has been written.
Once the specification phase has been completed, the development phase can start and run through to completion. Since the design has been meticulously planned, only minor deviations are expected, enabling the implementation to be accurately planned and monitored. The implementation may be broken up into phases, with each phase tested, approved and deployed according to the plan that can take into account the design.
8 benefits and disadvantages of waterfall
Whilst agile is modern and on-trend, we find that a reasonable number of customers still prefer the Waterfall approach in order to understand the total development cost of a project. We are comfortable with working with various methodologies, the main thing from our point of view is to ensure the customer understands the pros and cons of their chosen method.
Benefits
- Ensures all decisions are made up front before coding starts reducing the likelihood of wasted effort from late decisions having an impact on code already in place.
- Upon completion of the Specification phase enables the remaining phases to be costed as a fixed price
- Enables all aspects of the software design to be optimally architected knowing that it accommodates all the requirements
- Enables more accurate project and resource planning
Disadvantages
- Requires upfront investment in time and understanding to determine the complete software specification
- Does not readily facilitate a change of priorities after completion of the specification
- Requires a level of vision and understanding based on virtual mockups, rather than being able to test out ideas in reality.
- Delays benefits of the use of the new software until later (in contrast to Agile)