A lot of people talk about the Waterfall method? What is it ?
The Waterfall development methodology follows what is called a classic SDLC model, with multiple phases / stages in between, and with defined goals for each of these phases. These stages are typically sequential with one following the other, but there can be some interlap between these stages. Unlike other development models such as the Iterative development method, the Waterfall model is a more simple form of scheduling since the steps in the model do not iterate (you do not end up doing the same steps again and again). A number of people actually call this simplification as one of the problems of the model since there can be a need for such revision and the model does not have provision for such revision.
The Waterfall development model comprises of the following activities / stages.
1. System/Information Engineering and Modeling
2. Software Requirements Analysis
3. Systems Analysis followed by Design based on this analysis
4. Coding (or in a longer form, Code Generation / Implementation)
5. Testing of the generated artifacts from the previous stage
As stated above, in the waterfall development model, the progression from one stage of the process to the next stage is in a sequential manner, so the process of coding follows the design phase; or consider this – one first completes the “requirements specification” stage — the requirements stage of the process generates the requirements for what the application should become (and if required, the requirements can be signed off by the client team as well). When the team is done with the requirements, the next stage is the design process, where the team works on getting the design ready, based on the requirements.
The design stage of the process is where a complete design for the software is made ready, and this forms a “blueprint” for the implementation stage which is next — the process is such that the requirements should reflect the needs of the client and the design should totally be drawn from the requirements stage, and in turn the coding stage uses the design for their work. If the software is complex, then the different components or sections of code made by different members of the team are integrated into the application in a form that the client can eventually use.
After the completion of the stages of implementation and integration of the development components, the software product is then passed onto the testing stage where the testing team tests the completed product after the integration stage; in this phase faults found in the application are fixed. This process of testing and fixing of the defects continues till the faults in the application are resolved to the extent that is satisfactory to the client.
Thus, as a part of the waterfall model, the process mandates a sequential process of moving from one phase to another phase, with the team moving from one phase only when the previous phase is complete and done. The various phases of development in waterfall development model are regarded as discrete, and teams are not expected to move back and forth between the different stages.