There are several ways to develop software, two of the
most prominent methods being waterfall and Agile. And as anytime there are two
ways to go about something, a debate rages about which is best. Does it matter
really?
I’ll let you decide. Today, I'am arming you with
information about both waterfall and Agile methodologies so that you can make
an informed decision as to what you think is best.
Waterfall Methodology
Much like construction and manufacturing workflows,
waterfall methodology is a sequential design process. This means that as each
of the eight stages (conception, initiation, analysis, design, construction,
testing, implementation, and maintenance) are completed, the developers move on
to the next step.
As this process is sequential, once a step has been
completed, developers can’t go back to a previous step – not without scratching
the whole project and starting from the beginning. There’s no room for change
or error, so a project outcome and an extensive plan must be set in the
beginning and then followed carefully.
Advantages of the Waterfall Methodology
1. The waterfall methodology stresses meticulous
record keeping. Having such records allows for the ability to improve upon the
existing program in the future.
2. With the waterfall methodology, the client knows
what to expect. They’ll have an idea of the size, cost, and timeline for the
project. They’ll have a definite idea of what their program will do in the end.
3. In the case of employee turnover, waterfall’s
strong documentation allows for minimal project impact.
Disadvantages of the Waterfall Methodology
1. Once a step has been completed, developers can’t go
back to a previous stage and make changes.
2. Waterfall methodology relies heavily on initial
requirements. However, if these requirements are faulty in any manner, the
project is doomed.
3. If a requirement error is found, or a change needs
to be made, the project has to start from the beginning with all new code.
4. The whole product is only tested at the end. If
bugs are written early, but discovered late, their existence may have affected
how other code was written.
Additionally, the temptation to delay thorough testing
is often very high, as these delays allow short-term wins of staying
on-schedule.
5. The plan doesn’t take into account a client’s
evolving needs. If the client realizes that they need more than they initially
thought, and demand change, the project will come in late and impact budget.
When should you use waterfall methodology?
1. When there is a clear picture of what the final
product should be.
2. When clients won’t have the ability to change the
scope of the project once it has begun.
3. When definition, not speed, is key to success.
Agile Methodology
Agile came about as a “solution” to the disadvantages
of the waterfall methodology. Instead of a sequential design process, the Agile
methodology follows an incremental approach.
Developers start off with a simplistic project design,
and then begin to work on small modules. The work on these modules is done in
weekly or monthly sprints, and at the end of each sprint, project priorities
are evaluated and tests are run. These sprints allow for bugs to be discovered,
and customer feedback to be incorporated into the design before the next sprint
is run.
The process, with its lack of initial design and
steps, is often criticized for its collaborative nature that focuses on
principles rather than process.
Advantages of the Agile Methodology
1. The Agile methodology allows for changes to be made
after the initial planning. Re-writes to the the program, as the client decides
to make changes, are expected.
2. Because the Agile methodology allows you to make
changes, it’s easier to add features that will keep you up to date with the
latest developments in your industry.
3. At the end of each sprint, project priorities are
evaluated. This allows clients to add their feedback so that they ultimately
get the product they desire.
4. The testing at the end of each sprint ensures that
the bugs are caught and taken care of in the development cycle. They won’t be
found at the end.
5. Because the products are tested so thoroughly with
Agile, the product could be launched at the end of any cycle. As a result, it’s
more likely to reach its launch date.
Disadvantages of Agile Methodology
1. With a less successful project manager, the project
can become a series of code sprints. If this happens, the project is likely to
come in late and over budget.
2. As the initial project doesn’t have a definitive
plan, the final product can be grossly different than what was initially
intended.
When should you use Agile methodology?
1. When rapid production is more important than the
quality of the product.
2. When clients will be able to change the scope of
the project.
3. When there isn’t a clear picture of what the final
product should look like.
4. When you have skilled developers who are adaptable
and able to think independently.
5. When the product is intended for an industry with
rapidly changing standards.
Both the Agile and waterfall methodologies have their
strengths and weaknesses. The key to deciding which is right for you comes down
to the context of the project. Is it going to be changing rapidly? If so,
choose Agile. Do you know exactly what you need? Good. Then maybe waterfall is
the better option. Or better yet? Consider taking aspects of both methodologies
and combining them in order to make the best possible software development
process for your project.


No comments:
Post a Comment