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 basic steps involved in this model are:

 WaterfallModel.jpg

The stages of the Waterfall Model are:

  1. Analysis/Requirement Gathering
  2. 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 customer's business context and constraints, functions that must be performed by product and the external systems it must be compatible with. The result obtained from the analysis done are typically captured in a formal requirement specification that later on serves as input to the next step.

  3. Designing
  4. 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.

  5. Coding
  6. 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.

  7. Testing
  8. In this stage, both individual components and the integrated whole are methodologically verified to ensure that they are error free and fully meets 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.

  9. Implementation
  10. 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.

  11. Maintenance
  12. 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

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

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 of the acceptability of the product.
  • Testing is postponed to the later stage until coding is completed.
  • The working model is not seen until later stages.