Waterfall and Incremental model in project management. This waterfall model is anathema to many software developers.
It is the basic phased model of a development cycle. It is also known as the one-shot or once-through approach. The model takes its name from the way each phase cascades into the next. It is assumed that activities are normally done in a strict sequence, although there is some scope for reworking stages once they have been completed.
Projects should produce a sequence of deliverables, such as the requirements statement, design documents and software structures, where the output from each phase is an input to the next.
This approach provides for feedback loops activated when there is a need to revisit an earlier stage to redesign, recode and so forth. It is possible to return to any previous phase, although this could well require extensive re-planning.
The ideal is for quality control activities to be associated with each phase, so that once the deliverables of a phase have been signed off they should not need to be reworked.
Waterfall project management is for clearly defined projects
This model is probably best used on projects where requirements have been clearly defined and agreed. Critics of the approach argue that most projects do not have clear requirements at the beginning. As the model relies upon having each phase completed and signed off, it can become bureaucratic and time-consuming. For example, remedying a failing found during acceptance testing might require the participation of staff involved with the requirements, design and construction phases. It works best where there are few changes to requirements during the development cycle, but whether changes will be needed will not be known before the project starts.
Another drawback is the amount of project documentation needed to pass information between stages and the effort needed to keep this up-to-date. Despite these drawbacks, the approach provides convenient points when project sponsors can assess whether the project is still a valid investment.
Incremental model in project management practices
Although the incremental model is similar to the waterfall model, it involves the development and delivery of functionality in fragments or increments. Typically, global requirements are defined and an overall architecture designed. Then the product is developed in increments. After each increment is designed, developed and tested, it is system tested and then becomes operational, so that users get their new system in instalments.
This approach works best when the requirements are relatively well-known. It can work well with larger projects, as these are effectively broken into a series of mini-projects, each delivering an increment.
The incremental model is often used in conjunction with timeboxes. The deadline for completion of the increment is fixed and the features to be delivered by the increment are ranked according to importance. The least important features may be dropped to ensure that the deadline is met. The dropped features can be implemented in a subsequent increment if they are still required.
Project Management and the Iterative model
This model is suited to situations in which the requirements are not clearly understood and where there is a need to begin development quickly to create a version of the product which will demonstrate its look and feel. It is also referred to as an evolutionary approach.
Early versions, or prototypes, of the system are created to help the customer identify and refine requirements and design features. The customer can make suggestions for possible changes (according to the change management process) to be incorporated into a further version of the software, which is then built and evaluated.
A possible drawback associated with this model is not knowing when to stop iterating. The iterative approach is potentially difficult to monitor and control. The incremental and iterative models work well together. An application can be broken down into a number of increments, each of which can be implemented through a series of iterations. The Dynamic Systems Development Method (DSDM) is an approach that formalises the combined incremental/iterative approach.