×

Waterfall Model in Software Engineering

The most popular model is the waterfall model. This model has five phases:

  1. Requirement analysis and specification
  2. Design
  3. Implementation & unit testing
  4. Integration and system testing phase
  5. Operation and maintenance

These phases often occur one after the other. The developer should complete each step before the next phase starts. This model is called the "Waterfall Model" because its diagrammatic representation resembles a waterfall.

Waterfall Model in Software Engineering

Requirement analysis and specification phase:- This phase aims to understand and properly document the exact requirements of the customer. This task is usually carried out in collaboration with the customer, as the aim is to record all features, functionality, and configuration specifications for the application. The requirements describe the "what" of the system, not the "how" of the system. This process produces a large file, written in a natural language describes what the program will do without explaining how it will be accomplished. The resultant document is known as a software requirement specification (SRS) document.

The SRS document may act as a contract between the developer and the customer. If the developer fails to implement a full set of requirements, it may fail to implement the contracted set of requirements.

Design phase:- The SRS document is produced in the previous phase, which contains the exact requirements of the customer. The purpose of this step is to convert the requirement specification into a structure that is suitable for implementation in some programming languages.

Hence, overall software architecture is defined, and the high level and detailed design work are performed. This work is documented and known as a software design description (SDD) document. The information included in the Software Design Description should be sufficient to start the coding phase.

Implementation and unit testing phase:- During this phase, the design is implemented. If the SDD is complete, the implementation or coding phase proceeds smoothly, because of all the information needed by the software developers contained in the SDD.

During testing, the primary activities are centered around the examination and modification of the code. Small modules were initially tested in isolation from the rest of the software product. There are problems associated with the evaluation of unit tests in isolation. How do we run a module without anything to label it, to call it, or, possibly, to intermediate output values obtained during execution? These problems are resolved at this point, and the modules are checked after writing some overhead code.

Integration and system testing:-  This is a very important phase. Good testing can help to deliver higher quality software products, more happy customers, lower maintenance costs, and more accurate and reliable performance. It is a very expensive activity and consumes one-third to at least one half the value of a typical development project.

As we know, the purpose of unit testing is to determine whether each independent module is implemented correctly. It gives very little chance to determine if the interface between modules is also correct and, therefore, an integration testing is performed. System testing involves the testing of the entire system, whereas software is a part of the system. This is essential to build confidence in the developers before the software is delivered to the customer or released in the market.

Operation and maintenance phase:- Software maintenance is a challenge that every team has to face when the software is deployed and installed to the customer's site. Therefore, the release of software inaugurates the operation and maintenance phase of the life cycle. The time and effort required to maintain the operating program after launch are very important. Despite the fact it is a very challenging task, it is routinely the poorly managed headache that nobody wants to face.

Software maintenance is a very broad activity that includes error correction, enhancement of capabilities, and optimizations.

The purpose of this phase is to maintain the value of the software over time. This stage can last from 5 to 50 years, while development can last from 1 to 3 years. It is easy to reinforce the model "define before design" and "design before code" design. This model sometimes expects complete and accurate requirements, which is unrealistic. There is also no risk assessment involved.

The disadvantage of the Waterfall model  

  1. It is difficult to define all the requirements at the beginning of a project.
  2. This model is not suitable for accommodating any change.s
  3. It's not going to scale up to large projects.
  4. Real projects have never been sequential.

Related Topics

Software Quality Metrics

In a software project, the software is designed to build a source code, but from time to time or step by step, checking source code is required. Check whether the work...

4 minutes read.

Dropbox - System Design

While trying to upload or share any file, whether images, pdfs or documents, you would have come across the dropbox file posting service. Dropbox keeps all your data secure and...

9 minutes read.

Structured Analysis and Design (SA/SD)

When the software systems keep getting bigger and more complex, you need a way to represent the model systematically. Structured Design and Structured Analysis, often referred to as SA/SD, is...

4 minutes read.

Software Metrics

Introduction Software metrics is the term used in software engineering. Software engineering is the detailed study of the step-by-step making of user-interactive software that fulfills users' needs. Let's discuss two terms...

4 minutes read.

Software Configuration Management

Software Configuration Management The process of Software Configuration Management contains operations such as controlling, managing, and organizing the source-code, documents, and other essential components during the Software Development Life Cycle.SCM is essential for all project...

3 minutes read.

SDLC in Software Engineering

SDLC SDLC stands for the Software Development life cycle. It is a pictorial and diagrammatic representation of the software life cycle. A life cycle model represents all the techniques required to integrate software into the...

3 minutes read.

Spiral Model

The problem with traditional software process models is that they do not adequately deal with uncertainty, which is inherent to software projects. Major software projects had failed because project risks were neglected, and...

3 minutes read.

Netflix - System Design

System design questions are common in many technical rounds for huge tech companies like Amazon, Google Flipkart. Candidates get confused about how they should answer the system doesn't question in...

12 minutes read.

Caching in System Design

While surfing the web, you have usually wondered why the sites you have visited once load faster than the new ones. You would have also noticed how the texts and labels...

10 minutes read.

Agile Model in Software Engineering

The Agile method acquires the features of the iterative or incremental process model. More focus on process adaptability and customer satisfaction through the timely delivery of working software. The agile method split the...

2 minutes read.

Umbrella Activities in Software Engineering

The various stages of software engineering are tied to one another. Various software process models have different ways of expressing or making these processes available. To manage the development, quality,...

3 minutes read.

Iterative Model in Software Engineering

This model consists of the same phases as the waterfall model, but with fewer restrictions. Generally, the phases occur in the same order as in the waterfall model, but these may be conducted...

2 minutes read.

RAD Model in Software Engineering

RAD Model is an incremental process model and was developed by IBM in the 1980s and described in the book of James Martin entitled Rapid Application Development. Hence, user involvement is essential from...

3 minutes read.

Software Project Planning

Project planning is a management process that focuses on the activities required to complete a project successfully. Project planning helps to prevent problems that occur during the project development, such as a...

2 minutes read.

Constructive Cost Model (COCOMO)

The constructive cost model (COCOMO) is one of the most widely used software cost estimation models. This model is developed by B.W.Boehm in 1981. COCOMO model is based on LOC, i.e., the number...

5 minutes read.

Routing Requests through Load Balancers

Let us first understand what load balancers are Assume a system works with multiple machines or servers, and as the requests arrive, they need to be routed to any one of...

3 minutes read.

Scope of software metrics

Scope, Benefit, and Cycle of Software Metrics Software metrics have tremendous scope in software development to understand and fulfill various aspects of the project process. Software metrics help in estimation of...

6 minutes read.

Waterfall Model in Software Engineering

The most popular model is the waterfall model. This model has five phases: Requirement analysis and specification DesignImplementation & unit testing Integration and system testing phaseOperation and maintenance These phases often occur one...

3 minutes read.

Incremental Model in Software Engineering

Incremental Model is a software development process where requirements are divided into several stand-alone software development modules. In this example, each module passes through the requirement, design, development, implementation, and testing phases. That subsequent...

2 minutes read.

Project Management

Project Management What is a software project? The project is a set of tasks that need to be completed to reach a clear result. The project is also defined as the set of inputs...

2 minutes read.