Best Practices for Software
Projects - Iterative
Development This year's newsletters will focus on
best practices for software development projects. Each
month will cover a different best practice technique.
This month focuses on improving software development by
Iterative Development.
Newsletter Sponsor |
Software Planner (http://www.SoftwarePlanner.com)
helps improve the quality of software releases and
decrease software maintenance costs by providing you
with tools for managing all phases of the software
lifecycle.
Software Planner tracks customer
requirements, test cases, defects, support tickets,
appointments and to-do lists, and allows you to share
documents and hold threaded discussions. Fully
web-based and integrated with email.
|
Best
Practices for Software Projects - Iterative
Development
For years, the primary methodology for
delivering software projects was the "Waterfall Method".
With the Waterfall method, all software requirements are
gathered up front, designs are done for each requirement, and
each feature is coded and tested before migrating to
production. For projects that exceed one year of
development and implementation, there are risks of the project
being cancelled (according to the Standish Group, about 31%
are cancelled before completion).
Weaknesses of the Waterfall
Method:
- Since all requirements are gathered (and
designs done) upfront, the software life cycle is normally a
year or longer.
- Business rules change along with market
conditions. Due to the long software life cycle, the
software may no longer meet the needs of the company after
being implemented.
- Testing is performed after all features are
analyzed, designed and coded. If a major design flaw
is found during the testing phase, it may need to be
addressed in many functional areas, causing the time to fix
the defect much longer due to the large number of
requirements.
Iterative Development
Model
An alternative approach is the Iterative
Development Life Cycle (sometimes referred to as the Spiral
Life Cycle).
With the Iterative Life Cycle, analysis is
done just the same as with the Waterfall method.
However, once analysis is done, each requirement is
prioritized as follows:
- High -
These are mission critical requirements that absolutely have
to be done in the first release.
- Medium -
These are requirements that are important but can be worked
around until implemented.
- Low -
These are requirements that are nice-to-have but not
critical to the operation of the software.
Once priorities have been established, the
releases are planned. The first release (Release 1.0)
will contain just the High priority items and should take
about 1 to 3 months to deliver.
Below are the advantages of the Iterative Life
Cycle:
- The Design phase goes much faster, as
designs are only done on the items in the current release
(Release 1.0 for example).
- Coding and Testing go much faster because
there are less items to code and test. If major design
flaws are found, re-work is much faster since the functional
areas have been greatly reduced.
- The client gets into production in less
than 3 months, allowing them to begin earning revenue or
reducing expenses quicker with their product.
- If market conditions change for the client,
changes can be incorporated in the next iterative release,
allowing the software to be much more nimble.
- As the software is implemented, the client
can make recommendations for the next iteration due to
experiences learned in the past iteration.
Our
experience has found that you should space iterations at least
2 3 months a part. If iterations are closer than that, you
spend too much time on convergence and the project timeframe
expands. During the coding phase, code reviews must be done
weekly to ensure that the developers are delivering to
specification and all source code is put under source control.
Also, full installation routines are to be used for each
iterative release as it would be done in
production. |