Generally the software development methodologies are classified into either a
Waterfall method or an Iterative method. First we will look into what Waterfall
Method does.
Waterfall Method
This method is also known as Predictive Methodology, because each phase will be
predicted completely before proceeding to the next phase. Analysis will be the
first step which will analyze the requirement specification. Design phase which
is followed by the analysis phase will cover the complete design of the software
which is going to be developed. In coding phase, developers will start coding
based on the design. Finally testers will be continuing their testing and it
will be maintained by the maintenance team. This entire process will be called
as one Big Release.
Why Waterfall model is so risky?
- You might feel that you understand the
problem very well, but during development you might feel the problem is not
understood well
- You don't discover the mistakes at an
early stage
- Underestimation of the time required to
complete which can lead to late delivery
- Each team will be kept idle when the other
teams are into a particular phase
- Product won't be shown to the customers
unless the testing phase is completed
- Customers won't be involved in all the
phases, that leads to misunderstanding the requirement gathering
Iterative Techniques
Iterative techniques generally repeat the development phase, from requirement
gathering to the delivering functionality to produce a working model. It says
that we have a running program at each stage. This method is more adaptive than
waterfall model, because this method assumes that requirement will be either be
inaccurate or will change over time. Processes followed here are all same as the
waterfall model. At the end of any stage of the iterative techniques, you can
deliver the program to the client. Here the clients will be involved at any
stage to clarify the requirements. It provides additional values to the project.
Why Iterative Techniques are also so risky?
- You might be tempted to code at early
stage
- Unless you are clear about the solution,
the program will require much iteration.
- Small change in code will generate a long
list of error with little help in findings
- You might be run out of time, if the
iteration continues for many times
So which methodology solves most of the issues
faced in the above two techniques. It will be discussed in my next article.