The cascade model is a classic approach in software development that describes a linear and sequential development method. It consists of five to seven phases, each stage is defined by different tasks and objectives, so that all the phases describe the life cycle of the software until its delivery. Once a stage is complete, the next development step proceeds and the results of the previous stage move to the next stage.
Background
The cascade model (or waterfall model in English) was the first method widely used in the software industry. As a traditional approach, it is not repetitive in contrast to agile models with simple sprints, but can be complemented with 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 stage.
General information
The first mention of a phased model dates back to Winston Royce. In his essay "Managing the Development of Large Software Systems" he described a development method for large software projects, which is divided into phases as early as 1970. He further criticized this approach and proposed an alternative which resembles prototyping. Royce was referring to Herbert Benington's "Nine Phase Stage-Wise Model", released in 1956. While Benington envisaged nine phases, Royce reduced them to seven. The term cascade model it was not used by either of them. Its use is based on a 1976 book, which deals mainly with requirements for software[1]
How does it work
The original cascade model consists of seven successive phases:[2]
- System requirements: The first stage deals with the requirements that are not related to the digital product itself, but rather with relevant aspects for the company such as price and availability. The documentation and security aspects are also specified here. In general, non-functional requirements are mentioned here.
- Software requirements: The functional requirements of the software are defined in the second stage. The question of what the software should be able to do is answered here and clarified in "specifications", which also includes the results of the first stage.
- Analisys of requirements: In the requirements analysis stage, the software functions are dissected and structured so that individual functional items and functional units can be separated from each other. The needs analysis is intended to assess the feasibility and importance of the functions. The results of this stage are the specifications that contain the requirements that have to be developed.
- Program design: The technical design is now implemented with the help of these requirements specifications. The components of this stage 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 generally recorded in diagrams that describe the theoretical behavior of the software.
- Implementation: During implementation, structures and workflows are implemented taking into account framework conditions and systemic objectives. Software design becomes a program directly related to an operating system, one or more programming languages, and infrastructure. The result is usually operational software, often in beta.
- Testing: The implementation stage is followed by testing of all software components, modules and the entire system. In addition, the incorporation in specific operating systems is verified. 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 do not always occur in the previous phase.
- Launch: The software is implemented after acceptance by the customer. Updates and maintenance may be required before the product enters a store or is delivered to the customer.
Various teams and experts work through these stages. Contractors, project management, and senior developers are often involved up to the implementation stage. Post-deployment, developers do the work, so software testing is typically handled separately, for example, by independent test labs. Marketing and service experts participate in part in its launch. In large companies and corporations, the modified and more precisely structured SDLC method (system development life cycle) is used, which is based on the cascade model.[3]. There are also other versions of this model that, for example, introduce repetitive items in the form of loops to detect and correct errors and failures in previous phases.
Benefits / Disadvantages
Some advantages and disadvantages of cascade model:[4][5][6]
Advantage
- Due to the logical structure of the model, misconceptions 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 testing stage.
- Project progress can be monitored using goals.
- The total cost can be estimated with relative precision if there are no conflicts.
Disadvantages
- Conflicts, bugs, and programming errors sometimes lead to increased costs and a considerable amount of time. The same applies if customers are not satisfied.
- The specifications that are made initially are often difficult for customers 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 launch date must be postponed and the market may have changed during this time.
- Software delivery takes longer because departments do not work simultaneously and each stage can only begin when the previous stage has been completed.
Importance for programming
The cascade model it is one of the best known procedural models in software development. It has been used successfully for decades, but is now only used 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.[7]. The main problem of cascade model is that the changes and revisions are not necessarily foreseen by the logical sequences. Feedback from customers, testers or testers and engineers throughout development is partly absent, and incorporation of the software into an existing system takes place at a big bang. These inconveniences can be avoided by modifying the phases of the project, as is the case of the Spiral Model. But for some years now, agile methods that use other structural items are much more popular (for example, roles and sprints with Scrum or extreme programming principles). They are generally cheaper, lead to faster results, and are more transparent to clients.
Web links
- Defining the cascade model
- What is the Cascade Model in software testing and what are the advantages and disadvantages of the Cascade Model