The Pros and Cons of Iterative Software Development
You may have heard of Scrum, Extreme Programming and the Rational Unified Process (RUP). These are all early examples of iterative programming methods that sprang from the perception that Waterfall and other stage-gated methods have limitations and don’t work for everyone. The Agile Manifesto was written in 2001 to unify these efforts and gave birth to the Agile method – one of the most commonly used development approaches today.
What does Iterative Development mean?
When you work with an Iterative Development model, the starting point doesn’t need a full requirements specification. The process starts with the design and development of just a limited part of the software, and the iterative design process means that you return to expand and enhance this material repeatedly – until the entire system has been implemented and deployed.
Waterfall Development, as a contrast, can be cheaper – but slower to produce results as all planning must be done in advance, before any implementation begins.
The focus of Iterative Development is on delivering tested small features and then reviewing these interactively with the client, which means gradually implementing the actual system in discrete component parts.
Working with moving targets
The design can be modified with each iteration, which means that the software evolves as new functional capabilities are developed. This can be particularly helpful when the client wants to test one level of the system in action before making detailed decisions on the next level of functionality.
The development isn’t restricted to single modules, and there can be more than one iteration in progress in the development cycle at any given time.
To be successful, you need thorough and rigorous testing and validation of each software version based on the criteria defined within the model cycles. As the software evolves with subsequent cycles, the tests must be repeated and expanded to verify each software revision.
Ideal scenarios for Iterative Development
There are some scenarios that are particularly well suited to this type of development:
- Clear, comprehensive requirements have been defined
- Major requirements are defined at the onset, but some functionality may evolve over time in collaboration with the client
- Time-to-market is a constraining element in the project
- Innovative technology is involved – and being learnt by the development team as they work
- Goals are subject to change over time
One of the advantages of the iterative model is that it produces a working prototype early on in the project. As it is being reviewed and discussed, it’s possible to isolate flaws in functions or design. Finding these issues at an early stage may help to address them quickly within a tight budget.
However, Iterative Development is really only suitable for larger scale projects as it may not be possible or realistic to break down small projects into even smaller components.
The pros and cons of Iterative Development
- Potential defects are spotted and dealt with early
- Functional prototypes are developed early in the project life cycle
- Less time is spent on documenting and more on designing
- Progress is easily measured
- Changes to project scope are less costly and easier to implement
- Testing is facilitated by the modules being relatively small
- Most risks can be identified during iteration and higher risks can be dealt with as an early priority
- Successive iterations can be managed easily as milestones
- An operational product is delivered with every iteration
- Operating time is reduced
- Customer feedback is based on working products rather than technical specifications
- More resources may be required
- Each successive phase is rigid with no overlaps
- The need for more intensive project management may be required
- Issues about system architecture may turn out to be a constraining factor because of the lack of a full requirements specification for the entire system
- It may be difficult to pin down an end date for the project conclusion
- Highly skilled talent is required for risk analysis
What we see again and again when working with clients, is that there is almost always a trade-off between time, budget and functionality. Usually one of these areas needs to be pulled back. As for Iterative Development, it is sometimes hailed as the perfect solution for ambitious projects where budgets are limited, as it provides the opportunity to bring functioning software to the market quickly, and then gradually improve it over time. It does, however, require a highly skilled development team to help steer the project clear of risks and prevent the project from stalling. But once you have the right development resources on board, Iterative Development can spell success through quick return on investment.