Waterfall Model


The waterfall model is a classic approach in software development that describes a linear and sequential development method. It consists of five to seven phases, each phase is defined by different tasks and objectives, whereby the entirety of the phases describes the life cycle of the software up to its delivery. Once a phase is complete, the next development step follows and the results of the previous phase flow into the next phase. 

Background

The waterfall model was the first method widely used in the software industry. It is a traditional approach, and much less flexible than the agile methodology with development broken up into single sprints, but can be supplemented by feedback loops and loopbacks. It is still used today in various versions if the requirements and characteristics of a software can be clearly defined during the conceptual phase.

General information

The first mention of a phased model goes back to Winston Royce. In his essay “Managing the Development of Large Software Systems” he described a development method for large software projects, which was divided into phases as early as 1970. He criticized this approach, and proposed an alternative that resembles prototyping. Royce was referring to the “Nine Phase Stage-Wise Model” by Herbert Benington, which was published in 1956. While Benington envisaged nine phases, Royce reduced them to seven. The term “waterfall model” was not used by either of them. Its use is based on a book from 1976, which deals primarily with the requirements for software.[1]

How it works

The original waterfall model consists of seven successive phases:

  • System requirements: The first phase deals with requirements that are not related to the digital product itself but rather with business-relevant aspects such as price and availability. Documentation and safety aspects are also specified here. In general, non-functional requirements are mentioned here.
  • Software requirements: The functional requirements for the software are defined in the second phase. The question of what the software must be able to do is answered here and clarified in “specifications,” which also includes the results of the first phase.
  • Requirements analysis: In the requirements analysis phase, the functions of the software are dissected and structured so that individual functional elements and functional units can be separated from each other. The requirements analysis is intended to examine the functions for their feasibility and importance. The results of this phase are the specifications containing the requirements that need to be developed.
  • Program design: The technical design is now implemented with the help of these requirement specifications. Components of this phase also include decisions about information architecture and applied technologies such as programming languages, class libraries, and program sequences. The result of the program design is usually recorded in diagrams describing the theoretical behavior of the software.
  • Implementation: During implementation, structures and workflows are implemented taking into account the systemic framework conditions and objectives. 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 operational software, often as a beta-version.
  • Testing: The implementation phase is followed by the testing of all software components, modules, and the entire system. Integration into specific operating systems is also checked. If errors and conflicts occur, they must be repaired immediately. This could lead to an increase in overall costs since possible errors can be attributed to different phases and are not always caused in the previous phase.
  • Launch: The software is implemented after acceptance by the client. Updates and maintenance may be necessary before the product enters a store or is delivered to the customer.

Various teams and experts work at these stages. Contractors, project management, and senior developers are usually involved up to the implementation phase. After implementation, developers do the work, whereby testing of the software is frequently handled separately, for example by independent test labs. Marketing and service experts are partly involved with its launch. In large companies and corporations, the modified, more precisely structured SDLC method (system development lifecycle) is used, which is based on the waterfall model.[2] There are also other versions of this model which, for example, introduce iterative elements in the form of loops in order to detect and correct errors and bugs in preceding phases.

Benefits / Disadvantages

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

Advantages

  • Due to the logical structure of the model, conceptual errors can often be avoided.
  • The model leads to extensive technical documentation, which is a relief for new programmers and developers and is also useful in the test phase.
  • Project progress can be monitored using milestones.
  • The total cost can be estimated with relative accuracy if there are no conflicts.

Disadvantages

  • Conflicts, bugs, and program errors sometimes lead to rising costs and a considerable amount of more time. The same applies if the clients are not satisfied.
  • The specifications that are initially made are often difficult for clients to understand because they are more abstract than what the software is supposed to do. Especially in outsourced projects, this can be a decisive disadvantage, since the releasing date must be postponed and the market may have changed during this time.
  • Delivery of the software takes longer because departments do not work simultaneously and each phase can only begin when the previous phase is completed.

Significance for programming

The waterfall model is one of the best-known process models in software development. It has been used successfully for decades, but now only for smaller projects where the specifications are clear. The aforementioned drawbacks, however, also led analysts and developers to design alternative models called agile software development.[6] The main problem of the waterfall model is that changes and revisions are not necessarily provided for by the logical sequences. The feedback from customers, testers, and engineers during development is partly missing and the integration of the software into an existing system takes place in one go. These drawbacks can be avoided by modifying the project phases, as is the case with the spiral model. But for some years now, agile methods that use other structural elements are much more popular (for example, the roles and sprints with Scrum or the principles of extreme programming). As a rule, they are more economical, lead to faster results and are more transparent for customers. As a rule, they are more economical, lead to results faster and are more transparent for customers.

References

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

Web Links