The Waterfall method is a software development process. Invented by Dr. Winston W. Royce in 1970, it is the oldest methodology in the field of development.
It is based on a step-by-step progression through the development cycle, like a waterfall. Generally speaking, the process can be broken down into cinq main phases.
Source : wikipédia.org
In the first phase, the various elements required for the development of the application are defined and written down in a document. The system is then analyzed to generate the models and business logic that will be used in the application.
Then comes the design stage, which is aimed at clearly defining how to technically implement the business logic defined by the analysis. Then comes the time to write the source code to implement the models, business logic and service integrations.
Afterwards, the application is rigorously tested to discover possible bugs and problems that need to be resolved. Depending on the results, the code can be modified. Finally, the last step is the deployment of the application, which will however need to be maintained and updated over time.
This methodology has several advantages. It is appropriate for large projects conducted by large teams whose members can be replaced over time. For this reason, all the elements required for the design of the application are noted and documented and new members will be able to adapt quickly.
It also introduces discipline into the design and structure of the project with detailed procedures at each stage. This model also allows for changes in the software design at the beginning of the project, since code writing does not begin until after the design is complete. Finally, it is ideal for projects submitted on specific dates, since each step can be planned in detail.
On the other hand, the waterfall method also has drawbacks. Because of these drawbacks, it has lost popularity since its invention to more modern models such as the agile method.
Its main flaw is its lack of adaptability once the writing of code has started.. An error in the design can be disastrous, and a problem discovered during testing forces a major step backwards in the process.
Similarly, a change in the requirements of the customer or end user of the application will force a return to the design stage that will cost time and money. Finally, by following this model, testing usually occurs only at the end of the process and bugs or problems will therefore only be discovered very late in the process.