Waterfall Model in Software Testing

Introduction

In this article, I explain a Software Development Model, the Waterfall Model, and its advantages. The Waterfall Model is a popular version of the Systems Development life cycle model for Software Engineering. It is a linear sequential model. Waterfall development has different goals for each phase of development. Once a phase of development is completed, the development proceeds to the next phase, and there is no backtracking.

The steps involved in Waterfall Model

 WaterfallModel.jpg

Stages of the Waterfall Model


Analysis/Requirement Gathering

This step is the most important of the entire model because it involves gathering information about customer requirements and defining them in the clearest possible terms, the problem that the product is expected to solve. This step includes understanding the customer's business context and constraints, functions that must be performed by the product, and the external systems it must be compatible with. The result obtained from the analysis is typically captured in a formal requirement specification that later serves as input to the next step.

Designing

This step includes "defining the hardware and software architecture", components, modules, interfaces, and data to satisfy given requirements". It also involves specifying performance and security parameters, selecting the IDE and programming language, and indicating strategies to deal with issues such as exception handling, resource management, and interface connectivity. The result of this stage is used in the next stage of implementation.

Coding

In this step, the work is intended to set up the defined modules or units, and the actual coding begins. The system is first developed in smaller portions. These smaller portions are called "units". Later on, these units are integrated to form the complete software package.

Testing

In this stage, individual components and the integrated whole are methodologically verified to ensure that they are error-free and fully meet the requirements defined in the first step, "Analysis/Requirement Gathering". Three types of testing is done: unit testing of single code modules, system testing of integrated products, and acceptance testing formally done by or on behalf of the customer. If defects are found, then they are logged, and feedback is provided to the implementation team for correction.

Implementation

This step includes the actual construction of the product as per the design specification developed in the previous steps. In this step, programmers, interface designers, and other specialists are involved using tools such as compilers, debuggers, interpreters, and media editors. The output of this step is one or more product components built according to a pre-defined coding standard and debugged, tested, and integrated to satisfy the system architecture requirements.

Maintenance

This step occurs after installation and involves making modifications to the system or an individual component to alter attributes or improve performance. These modifications arise either due to change requests initiated by the customer or defects uncovered during live use of the system. Every change made to the product during the maintenance cycle is recorded, and a new product release is performed to enable the customer to gain the benefit of the update.

Advantages of the Waterfall Model

The Waterfall Model is the oldest and most widely used model in the field of software development. There are certain advantages of this model that makes it one of the most widely used models as yet. Some of them are,

  • Being a linear model, so easy to understand and implement.
  • Fixed requirements.
  • The amount of resources required to implement this model is minimal.

Disadvantages of the Waterfall Model

With so many advantages at hand, the Waterfall Model has some disadvantages. Here are a few:

  • For long-duration projects, requirements may change. Therefore, there is a potential reduction in the acceptability of the product.
  • Testing is postponed to a later stage until coding is completed.
  • The working model is not seen until later stages.


Similar Articles