What is a waterfall model in software development

Waterfall model

The waterfall model is a process model in software development that describes a linear and sequential development method. It consists of five to seven project phases that structure the development of a software, application or web application.

As soon as a phase is completed, the next development step follows and the results of the previous phase flow into the next phase. Each phase is defined by different tasks and goals, with the entirety of the phases describing the life cycle of the software through to delivery.

Background [edit]

The waterfall model was the first method widely used in the software industry. As a traditional process model, in contrast to agile models with individual sprints, it is not iterative, but can be supplemented by feedback loops and loopbacks. It is still used today in different variants if the requirements and characteristics of a software can be clearly defined in the conception phase.

General information on the topic [edit]

The first mention of a phased model is due to Winston Royce. In his essay “Managing the Development of Large Software Systems” in 1970, he described a development method for large software projects that is divided into phases. However, he also criticized this approach and suggested an alternative that is more similar to prototyping. Royce referred to the "Nine Phase Stage-Wise Model" by Herbert Benington, which he published in 1956. While Benington provided nine phases, Royce reduced these to seven phases. None of them used the term waterfall model - the use of the language goes back to a treatise from 1976, which mainly deals with the requirements for software.[1]

How it works [edit]

The original waterfall model consists of seven consecutive phases:[2]

  • System requirements: The first phase deals with requirements that do not affect the digital product itself, but rather business-relevant aspects such as price and availability. Documentation and security aspects are also specified here. Generally speaking, non-functional requirements are used here.
  • Software requirements: In the second phase, the functional requirements for the software are defined. The question of what the software must be able to do is answered here and specified in a so-called specification sheet, which also includes the results of the first phase.
  • Requirements analysis: In the requirements analysis phase, the functions of the software are broken down and structured so that individual functional elements and functional units can be separated from one another. The requirements analysis should examine the functions for their feasibility and importance. The result of this phase is a specification sheet that contains the requirements that need to be developed.
  • Program design: The technical design is now implemented on the basis of the specifications and functional specifications. This phase also includes decisions about the information architecture and the technologies used, such as programming languages, class libraries and program processes. The result of the program design is usually recorded in diagrams that describe the theoretical behavior of the software.
  • implementation: During the implementation, the structures and processes are implemented taking into account the systemic framework conditions and goals. The software design becomes a program that is directly related to an operating system, one or more programming languages ​​and the infrastructure. The result is usually an executable software that is available in a beta version, for example.
  • Testing: The implementation phase is followed by testing of all software components, modules and the entire system. Integration with certain operating systems is also checked. If errors and conflicts occur, these must be resolved immediately. This can lead to increasing total costs, since possible errors can be traced back to different phases and are not always justified in the previous phase.
  • introduction: The software is introduced after acceptance by the client. Updates and maintenance work may be necessary before the product goes on sale or is delivered to the customer.

Various teams and experts work on these phases. Until the implementation phase, the client, project management and senior developers are usually required. From implementation onwards, the developers do the work, whereby the testing of the software is often dealt with separately - also by independent test laboratories. Marketing and service experts are sometimes also involved in the introduction. In large companies and corporations, the modified, more precisely structured SDLC method (systems development life cycle), which is based on the waterfall model, is used.[3] There are also other variants of the model that, for example, introduce iterative elements in the form of loops in order to identify and correct errors and bugs in upstream phases.

Advantages / disadvantages [edit]

Some advantages and disadvantages of the waterfall model:[4][5][6]

Advantages [edit]

  • The logical structure of the model can often avoid conceptual errors.
  • The model leads to extensive technical documentation, which is a relief for new programmers and developers and is also helpful in the test phase.
  • The progress of the project can be monitored using milestones.
  • The total costs can be estimated relatively precisely if no conflicts arise.

Disadvantages [edit]

  • Conflicts, bugs and program errors sometimes lead to rising costs and significant additional work. The same applies if the client is not satisfied.
  • The specifications that are made at the beginning are often difficult for the client to understand because they are more abstract than what the software is actually supposed to do. Especially with outsourced projects, this can be a decisive disadvantage, as the release date has to be postponed and the market may have changed during this time.
  • The delivery of the software takes longer because the departments do not work simultaneously and each phase cannot begin until the previous phase has been completely completed.

Meaning for programming [edit]

The waterfall model is one of the best-known process models in software development. It has been used successfully for decades - now only for smaller projects where the specifications are clear. The disadvantages mentioned above, however, also led analysts and developers to design alternative models, which are summarized under the name of agile software development.[7] The main problem with the waterfall model is that changes and revisions are not necessarily provided for by the logical processes. The feedback from customers, testers and engineers during the development is partly missing and the integration of the software into an existing system takes place in a single operation (Big Bang). These disadvantages can be avoided by modifying the project phases - as is the case with the spiral model - but agile methods that use other structural elements such as roles and sprints in Scrum or the principles of extreme programming have been much more popular for some years. They are usually more economical, lead to results faster and are more transparent for customers to understand.

References Edit]

  1. ↑ Software Requirements: Are they really a problem? static.aminer.org. Retrieved on July 28, 2016
  2. ↑ Managing the Development of large Software Systems softwarelifecyclepros.com. Retrieved on July 28, 2016
  3. ↑ Tutorial: The Software Development Life Cycle (SDLC) softwarelifecyclepros.com. Retrieved on July 28, 2016
  4. ↑ The Traditional Waterfall Approach umsl.edu. Retrieved on July 28, 2016
  5. ↑ SDLC - Waterfall Model tutorialspoint.com. Retrieved on July 28, 2016
  6. ↑ What is Waterfall model- advantages, disadvantages and when to use it? istqbexamcertification.com. Retrieved on July 28, 2016
  7. ↑ What is SDLC Waterfall Model? softwaretestinghelp.com. Retrieved on July 28, 2016

Web links [edit]