logo for information-management-architect.com
leftimage for information-management-architect.com

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 breaksIterative Development 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
    • Conduct lessons learned.
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.

footer for Information management page