You are on page 1of 11

What is Waterfall model- Examples, advantages,

disadvantages & when to use it?


The Waterfall Model was first Process Model to be introduced. It is also
referred to as a linear-sequential life cycle model. It is very simple to
understand and use. In a waterfall model, each phase must be
completed fully before the next phase can begin. This type of software
development model is basically used for the project which is small and
there are no uncertain requirements.

At the end of each phase, a review takes place to determine if the project
is on the right path and whether or not to continue or discard the project.

What Is Waterfall Model - Examples, difference between Agile

In this model software testing starts only after the development is


complete. In waterfall model phases do not overlap.
Diagram of Waterfall model

Phases of Waterfall Model in Software Engineering

There are several phases in the waterfall model. They are briefly
explained below. Let us understand the concept of Waterfall model
with example of a banking application for illustrating the topic.

Let us assume that the Citibank is planning to have a new banking


application developed and they have approached your organization in
the 1990’s.

Requirements Gathering and Analysis

In this phase the requirements are gathered by the business analyst and
they are analyzed by the team. Requirements are documented during
this phase and clarifications can be sought.
The Business Analysts document the requirement based on their
discussion with the customer.

Going through the requirements and analyzing them has revealed that
the project team needs answers to the following questions which were
not covered in the requirements document –

• Will the new banking application be used in more than one


country?
• Do we have to support multiple languages?
• How many users are expected to use the application? etc

System Design

The architect and senior members of the team work on the software
architecture, high level and low level design for the project.

It is decided that the banking application needs to have redundant


backup and failover capabilities such that system is accessible at all
times.

The architect creates the Architecture diagrams and high level / low level
design documents.

Implementation

The development team works on coding the project.

They take the design documents / artifacts and ensure that their solution
follows the design finalized by the architect.

Since the application is a banking application and security was a high


priority in the application requirements, they implement several security
checks, audit logging features in the application.

They also perform several other activities like a senior developer


reviewing the other developers code for any issues. Some developers
perform static analysis of the code.
Testing

The testing team tests the complete application and identifies


any defects in the application.

These defects are fixed by the developers and the testing team tests the
fixes to ensure that the defect is fixed.

They also perform regression testing of the application to see if any


new defects were introduced.

Testers with banking domain knowledge were also hired for the project
so that they could test the application based on the domain perspective.

Security testing teams were assigned to test the security of the banking
application.

Deployment

The team builds and installs the application on the servers which were
procured for the banking application.

Some of the high level activities include installing the OS on the servers,
installing security patches, hardening the servers, installing web servers
and application servers, installing the database etc.

They also co-ordinate with network and IT administrative teams etc to


finally get the application up and running on the production servers.

Maintenance

During the maintenance phase, the team ensures that the application is
running smoothly on the servers without any downtime.

Issues that are reported after going live are fixed by the team and tested
by the testing team.

Examples of Waterfall Model

In the olden days, Waterfall model was used to develop enterprise


applications like Customer Relationship Management (CRM) systems,
Human Resource Management Systems (HRMS), Supply Chain
Management Systems, Inventory Management Systems, Point of Sales
(POS) systems for Retail chains etc.

Waterfall model was used significantly in the development of software


till the year 2000. Even after the Agile manifesto was published in 2001,
Waterfall model continued to be used by many organization till the last
decade.

These days most project follow Agile Methodology, some form


of Iterative model or one of the other models depending on their
project specific requirement.

In the olden days, applications developed in Waterfall Model like CRM


Systems, Supply Chain Management Systems etc would usually take a
year or longer to develop.

With the evolution of technology, there were cases where large scale
enterprise systems were developed over a period of 2 to 3 years but were
redundant by the time they were completed. There were several reasons
for this.

• By the time the applications were developed in C, C++ etc, new


languages (relatively speaking) like Java, .Net etc would replace
them with web based functionality.
• Even if the application was developed using a new technology,
factors like more competitors entering the market, cheaper
alternatives becoming available, better functionality using newer
technologies, change in customers requirement etc. increase the
risk of developing an application over several years.

However, there are some areas where Waterfall model was continued to
be preferred.

• Consider a system where human life is on the line, where a system


failure could result in one or more deaths.
• In some countries, such mishaps could lead to imprisonment for
those who are accountable.
• Consider a system where time and money were secondary
considerations and human safety was first.

In such situations, Waterfall model was the preferred approach.

• Development of Department Of Defense (DOD), military and


aircraft programs followed Waterfall model in many organizations.
• This is because of the strict standards and requirements that have
to be followed.
• In such industries, the requirements are known well in advance
and contracts are very specific about the deliverable of the project.
• DOD Agencies typically considered Waterfall model to be
compatible with their acquisition process and rigorous oversight
process required by the government.

Having said that, even these industries are being disrupted by the use of
Iterative model and Agile methodology by organizations like Space X and
others.

Waterfall model was also used in banking, healthcare, control system for
nuclear facilities, space shuttles etc

Advantages of waterfall model

• This model is simple and easy to understand and use.


• It is easy to manage due to the rigidity of the model – each phase
has specific deliverables and a review process.
• In this model phases are processed and completed one at a time.
Phases do not overlap.
• Waterfall model works well for smaller projects where
requirements are clearly defined and very well understood.

Disadvantages of waterfall model

• Once an application is in the testing stage, it is very difficult to go


back and change something that was not well-thought out in the
concept stage.
• No working software is produced until late during the life cycle.
• High amounts of risk and uncertainty.
• Not a good model for complex and object-oriented projects.
• Poor model for long and ongoing projects.
• Not suitable for the projects where requirements are at a
moderate to high risk of changing.

When to use the waterfall model

• This model is used only when the requirements are very well
known, clear and fixed.
• Product definition is stable.
• Technology is understood.
• There are no ambiguous requirements
• Ample resources with required expertise are available freely
• The project is short.

In Waterfall model, very less customer interaction is involved during the


development of the product. Once the product is ready then only it can
be demonstrated to the end users.

Once the product is developed and if any failure occurs then the cost of
fixing such issues are very high, because we need to update everything
from document till the logic.

In today’s world, Waterfall model has been replaced by other models like
iterative, agile etc.

Difference between: Waterfall Model vs Agile Model

There are many differences between Waterfall and Agile model as shown
below.
Waterfall Model Agile Model

Planning in Agile projects is


Planning – Waterfall model requires
generally on a short term since the
planning for long term which requires
work product is delivered in 2 to 4
complete clarity in requirements
weeks

Project success is dependent on Project success is based on

implementing the requirements delivery of business value to the

closely client

Waterfall projects are driven from theTeams are self governing in an

top of a projects hierarchy Agile project

Sequential planning with clearly


Planning in Agile projects is
defined milestone details and
iterative in nature and adapts to
predictability are characteristics of
changing requirements
Waterfall projects
Agile projects teams have
There are many roles in a Waterfall
significantly lesser roles, for
project and these projects can also
example Scrum teams can get by
have several levels of hierarchy
with only three roles

There is significant amount of


There is a steady on-going
communication with the user during
communication with the user
requirements gathering (at the
during the project
beginning) and testing (at the end)

There is no much dependency on the There is significant dependency

end users during the development on the users, all the way through

and other intermediate phases the lifetime of the project

Requirements continue to

Complete requirements are clearly develop over the lifetime of the

documented to begin with project and are defined when

they are needed, i.e, just in time


Team members with different roles Equal responsibility is shared

have different responsibility levels between the roles

Change control is strictly enforced

and rigorous change control Agile projects are open to change,

processes are followed. Thus change they accept them openly and

is discouraged and they do not respond well

respond well to change.

Quality Control activities like Testing


Quality Control activities are
are performed towards the end of the
performed throughout the project
project

Agile model is more people


The steps in the processes in
oriented and lesser importance is
Waterfall model are rigorously
placed on processes with the
followed since this model is more
option to skip those processes
process oriented
whose value is low
Working product features are
Delivery of the project at the end is
delivered in each sprint of the
characterized by a big bang event
project

It is difficult to measure the progress Progress of the project can be

of the project in the middle of the easily measured since working

project features are delivered frequently

Progress of the project is reviewed


Progress of the project is generally
with the team on a daily basis in
reviewed with the team once a week
the standup meeting

You might also like