Iterative Waterfall Model is the extension of the Classical Waterfall model. In a practical software development work, it is not possible to strictly follow the classical waterfall model. In this context, we can view the Iterative waterfall model as making necessary changes to the classical waterfall model to make it usable in practical software development projects. This model is almost same as the classical waterfall model except some changes are made to improve the performance of the software development.
The iterative waterfall model provides feedback paths from
every phase to its
previous phases,
which is the main difference from the classical waterfall model.
When errors are detected at some
later phase, these feedback paths allow correcting errors committed by
programmers during some phase. The feedback path allows the phase to be
reworked in which errors are committed and these changes are reflected in the
later phases. There is no feedback path provided
for feasibility study phase, so if any change is required in this
phase then iterative model doesn’t have scope for modification or making
corrections.
Feedback paths introduced by the iterative waterfall model
are shown in the figure below.
Feasibility
Study: The main aim of
this phase is to determine whether it would be financially and technically
feasible to develop the software.
The feasibility study involves understanding the
problem and then determining the various possible strategies to solve the
problem. These different identified solutions are analyzed based on their
benefits and drawbacks.
Project
managers or teams, leaders examine each of the solutions in terms of what kind
of resources required, what would be the cost of development and what would be
the development time for each solution. Based on this analysis they pick the
best solution and determine whether the solution is feasible financially and
technically. They check whether the customer budget would meet the cost of the
product and whether they have sufficient technical expertise in the area of development.
Requirements analysis and specification: The aim of the requirement analysis and specification phase is to understand the exact requirements of the customer and document them properly. This phase consists of two different activities.
Requirement gathering and analysis: The aim of ‘requirements gathering’ is to collect all relevant information from the customer regarding the product to be developed and then the gathered requirements are analyzed.
The goal of the requirements analysis part is to remove incompleteness and inconsistencies in these requirements. Once all ambiguities, inconsistencies, and incompleteness have been resolved and all the requirements have been properly understood, the requirements specification activity can start.
Requirement specification: The customer requirements identified during the requirements gathering and analysis activity are organized into a software requirement specification (SRS) document. SRS document serves as a contract between the development team and customers. Any future dispute between the customers and the developers can be settled by examining the SRS document.
Design: The goal of this phase is to convert the requirements
specified in the SRS document into a structure that
is suitable for implementation in some programming language. There are two
design approaches being used at present: traditional design approach and object-oriented design approach.
Coding and Unit testing:
In the coding phase software design is translated into source code. This phase is also called the implementation phase since
the design is implemented into a workable solution in this phase. Each
component of design is implemented as a program module.
The
end-product of this phase is a set of program modules that been individually
tested. After coding is complete, each module is unit-tested to determine the
correct working of all individual modules.
The aim of the unit testing phase is to check whether each module is working
properly or not.
Integration and
System testing Once the modules have been
coded and unit tested, the Integration of different modules is undertaken. Integration
of various modules is carried out incrementally over a number of steps. During
each integration step, previously planned modules are added to the partially
integrated system and the resultant system is tested. Finally, after all the
modules have been successfully integrated and tested, the full working system
is obtained and system testing is carried out on this.
System testing
consists of three different kinds of
testing activities as described below:
Alpha testing: Alpha testing is the system testing performed by the development team.
Beta testing: Beta testing is the system testing performed by a friendly set of customers.
Acceptance testing: After the software has been delivered, the customer performed acceptance testing to determine whether to accept the delivered software or reject it.
Maintenance: Maintenance is the most important phase of a software life cycle. The effort spent on maintenance is 60% of the total effort spent to develop full software. Maintenance can be referred as a process of enhancement in the software product according to the changing requirements of the user.
There are three types of maintenance:
Corrective Maintenance: This type of maintenance is
carried out to correct errors that were not discovered during the product
development phase.
Perfective Maintenance: This type of maintenance is carried out to enhance the functionalities of the system based on the customer’s request.
Adaptive Maintenance: Adaptive maintenance is usually required for modifying the system to cope with changes in the software environment.
Differentiation between Classical Waterfall model and Iterative Waterfall Model:
Iterative Waterfall Model is basically a
replacement of Classical Waterfall Model. Classical
Waterfall Model is hard to use. In practice it
is not possible to strictly follow the classical
waterfall model for software development work. So Iterative Waterfall
Model is introduced after making certain necessary changes in the Classical
Waterfall Model. The iterative waterfall model is cyclic, it’s possible to go
from one stage to the previous one, whenever a project is not satisfying the
demands of the customer.
The phases of Iterative Waterfall Model are the same as the Classical Waterfall Model. The only advancement that Iterative
Waterfall Model has over classical waterfall model is that in the iterative
model, we have feedback paths that link every phase with one another and with
the help of those, we can go to the previous phases and make the modifications
that may be required in the software in the later phases of the development. The
feedback paths allow for correction of the errors committed during a phase, as
and when these are detected in a later phase. The iterative nature of the model
allows for changes and adjustments to be made in the project.
0 Comments
if you have any doubts plz let me know...