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.
is then treated like a small
with it’s own design, development and testing
Iterations are “time-boxed”.
This implies careful planning to ensure that the planned work can
actually be completed in the allotted time frame.
Waterfall development is a software development methodology that relies
on completing one project phase
and obtaining sign-off/approval
before proceeding to the next
For example, the requirements analysis phase is completed and
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
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.
some things to
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
- Information management projects are
“data centric” by nature and I believe that the overall architecture
and design framework should be robust before commencing any
Information management projects typically involve developing software
several possibilities for iterative development:
source systems and move it to staging areas for data cleansing and
- Integrate and transform
per business rules;
- Load it into a data
warehouse (or perhaps operational data store);
- Extract it from the data warehouse and load it
data mart; and
- Develop business
intelligence software to build pre-defined reports and
You might also consider a combination
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
- 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
mart could be a series of iterations; and
- Any of the business intelligence/reporting
development might be split up as a sub-component.
should iteration take?
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
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
In either case, I believe
should be completed in a two
we have multiple iterations at one time?
is no real need to complete one before another although in reality,
with some projects, you will find that this might make more sense.
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
parallel iterations provide the best of both worlds.
It keeps a small team focused
objectives, it is manageable,
and it has a high
probability of rapid delivery without slippage.
during a typical iteration?
- Iterations are time-boxed
anything that does not get finished in one iteration will need to be
added to a subsequent iteration;
planning is critical so that we know the objectives before
development commences; and
- Don’t try to run too
I try to keep the entire team together as much as possible. Assuming a Monday
start, the following schedule can be considered:
kick-off and review of objectives and requirements;
- Complete source-to-target
mapping and finalize business transformation rules; and
- Finalize test
- Review/approve design specifications;
- Commence code development;
- Prepare test
and test scripts;
- Commence test
- Develop data
structures in appropriate environments.
- Finalize all coding; and
- Complete unit testing and code review.
all testing and resolve any defects.
- Close iteration and decide what, if anything,
needs to be carried over to another iteration; and
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