What is
Iterative Development?
Need
iterative development for an information management project and want
some practical suggestions to ensure rapid project delivery?
Iterative development is software development methodology that breaks
a project up
into a series of manageable sub-components, or iterations.
Each iteration
is then treated like a small
project
with it’s own design, development and testing
steps.
Iterations are “time-boxed”.
This implies careful planning to ensure that the planned work can
actually be completed in the allotted time frame.
What is
waterfall development?
Waterfall development is a software development methodology that relies
on completing one project phase
and obtaining sign-off/approval
before proceeding to the next
phase.
For example, the requirements analysis phase is completed and
approved
before any architecture and design commences, the architecture and
design phase is completed
before any software development
commences, and all development is completed before testing
starts.
What are the
benefits of iterations?
Iterative development can really reduce
software development time—It helps the team maintain focus
and it keeps everyone fully engaged thru-out the iteration.
What are
some things to
avoid?
- I
have seen some iterative development projects include data modeling as
part of the development process and have found this to be less
effective than completing the logical data model prior to commencing
iterations; and
- Information management projects are
“data centric” by nature and I believe that the overall architecture
and design framework should be robust before commencing any
iterative development.
What are
good
candidate iterations?
Information management projects typically involve developing software
to:
- Extract
data from
source systems and move it to staging areas for data cleansing and
transformation;
- Integrate and transform
data
per business rules;
- Load it into a data
warehouse (or perhaps operational data store);
- Extract it from the data warehouse and load it
into a
data mart; and
- Develop business
intelligence software to build pre-defined reports and
analytical capabilities.
There are
several possibilities for iterative development:
- The interfaces
may be split into iterations—I like this approach because we can
“parcel” out some of the less complex logic and have it completed as a
foundation for subsequent transformation work;
- The transformation and integration
of data can also be split up into iterations;
- Data warehouse
loading might be split up into iterations;
- Extract and load
to data
mart could be a series of iterations; and
- Any of the business intelligence/reporting
development might be split up as a sub-component.
You might also consider a combination
of interfaces,
or source data, and treat the entire combination as an iteration—In
this case, the development runs end-to-end or at least to the data
warehouse.
How long
should iteration take?
Good
question!
I have seen some “iterations” take 3-4 months and, in my opinion, these
are not truly achieving the objectives of rapid development.
I like to use a two-week
iteration
and include final design, development and testing in this time frame. I
have seen others use the two weeks for design/development and leave the
testing for a third
week.
In either case, I believe
each iteration
should be completed in a two
to three
week window.
Can
we have multiple iterations at one time?
Yes—There
is no real need to complete one before another although in reality,
with some projects, you will find that this might make more sense.
How much
iteration can we run in parallel?
I suppose, in theory, that you can run as many iterations as you
want—as long as you have sufficient resources.
In practice, I have found that there is a lot of technical
coordination required and that two
or three
parallel iterations provide the best of both worlds.
It keeps a small team focused
on
objectives, it is manageable,
and it has a high
probability of rapid delivery without slippage.
Things to
consider...
- Iterations are time-boxed
so
anything that does not get finished in one iteration will need to be
added to a subsequent iteration;
- Iteration
planning is critical so that we know the objectives before
development commences; and
- Don’t try to run too
much
parallel iteration.
What happens
during a typical iteration?
I try to keep the entire team together as much as possible. Assuming a Monday
start, the following schedule can be considered:
Week
1:
- Monday
- Iteration
kick-off and review of objectives and requirements;
- Complete source-to-target
mapping and finalize business transformation rules; and
- Finalize test
data
acquisition approach.
- Tuesday—finalize
appropriate design
specifications.
- Wednesday
- Review/approve design specifications;
- Commence code development;
- Prepare test
cases
and test scripts;
- Commence test
data
acquisition; and
- Develop data
structures in appropriate environments.
Week 2:
- Wednesday
noon
- Finalize all coding; and
- Complete unit testing and code review.
- Thursday-finalize
all testing and resolve any defects.
- Friday
- Close iteration and decide what, if anything,
needs to be carried over to another iteration; and
Summary...
Iterative development breaks a project up into a series of manageable
sub-components or iterations.
Each component is treated like a self-contained “mini project”
and requires strong technical
leadership and direction to ensure rapid development and
successful implementation.
|