Waterfall - MihkelPLoompuu/AgiilsedTarkvaraarenduseMetoodikad GitHub Wiki
What is waterfall
The waterfall model is a breakdown of developmental activities into linear phases, meaning that each phase is passed down onto each other, where each phase depends on the deliverables of the previous one and corresponds to a specialization of tasks. This approach is typical for certain areas of engineering design. In software development, it tends to be among the less iterative and flexible approaches, as progress flows in largely one direction (downwards like a waterfall) through the phases of conception, initiation, analysis, design, construction, testing, deployment, and maintenance. The waterfall model is the earliest Systems Development Life Cycle approach used in software development. When it was first adopted, there were no recognized alternatives for knowledge-based creative work.
Who uses the Waterfall model?
Project teams and project managers use the Waterfall model to achieve goals based on the needs of their business. The model is used in many different project management contexts, such as in construction, manufacturing, IT and software development.
Phases of the Waterfall model
When used for complex projects, such as software development, the Waterfall development methodology has seven stages:
Requirements. Potential project requirements, deadlines and guidelines for the project are analyzed and placed into a formal requirements document, also called a functional specification. This first phase of development defines and plans the project without mentioning specific processes. It also defines the project scope, team members, stakeholders, process for requirements gathering, reporting of project progress, use of aids such as templates and workflow diagrams, and an overall roadmap of the project. Analysis. The system specifications are analyzed to generate product models and business logic to guide production. This is also when financial and technical resources are audited for feasibility. Design. A design specification document is created to outline technical requirements during the design phase. These include the programming language, hardware, data sources, architecture and services. Coding and implementation. The source code is developed using the models, logic and requirement specifications designated in the previous phases. Typically, the system is coded in smaller components, or units, before being put together. Testing. This is when quality assurance and unit, system and beta tests identify issues that must be resolved. This forces a repeat of the coding stage for debugging. If the system passes integration and testing, the Waterfall process continues forward. Operation and deployment. The product or application is deemed fully functional and is deployed to a live environment. Maintenance. Corrective, adaptive and perfective maintenance is carried out indefinitely to improve, update and enhance the product and its functionality. This could include releasing patch updates and new versions.
Advantages of the Waterfall model
The Agile methodology is often used in place of the Waterfall model. However, there are advantages to the Waterfall vs. Agile approaches, such as the following:
The Waterfall approach lets large or changing teams move toward a common goal that's been defined in the requirements stage. It forces a structured, disciplined approach. It simplifies understanding, following and arranging tasks. It facilitates departmentalization and managerial control based on the schedule or deadlines. It reinforces good coding habits to define before implementing design and then code. It facilitates early system design and specification changes. It clearly defines milestones and deadlines.
Disadvantages of the Waterfall model
Disadvantages of the Waterfall model typically center around the risk associated with a lack of revision and flexibility. Specific issues include the following: Waterfall design isn't adaptive; when a flaw is found, the entire process often needs to start over. The methodology doesn't incorporate midprocess user or client feedback and makes changes based on results. The Waterfall model delays testing until the end of the development lifecycle. It doesn't consider error correction. It doesn't handle requests for changes, scope adjustments and updates well. Waterfall doesn't let processes overlap for simultaneous work on different phases, reducing overall efficiency. No working product is available until the later stages of the project lifecycle. Waterfall isn't ideal for complex, high-risk ongoing projects.