An example from an actual project of how to use an iterative, or spiral, development model along with time-boxing, to plan and execute a project.
What this is
An example of how to use an iterative, or spiral, development model along with time-boxing, to plan and execute a project, taken from an actual project.
Why it's useful
The traditional "waterfall" model for phasing project work provides a simple framework for executing project work in a fairly stable environment. It provides for a well-delineated sequence of phases where the work is well-understood; the phases such as development, implementation, and testing can be executed sequentially and independently; and all the work can be estimated accurately.
When technology is risky, customer requirements change quickly, or other sources of uncertainty exist, the waterfall model gets hard to execute. If new requirements are going to emerge during the development phase because of how fast the market is moving, what does the team do? If planning is based the simple phase approach, the plan doesn't take into account making changes to requirements on the fly, updating code and testing it, etc. Likewise technical risks don't necessarily lend themselves to definitive planning up front.
Quoting from Rapid Development by Steve McConnell, "The spiral model is a risk-oriented lifecycle model that breaks a software project up into mini-projects. Each mini-project addresses one or more major risks until all the major risks have been addressed. The concept of "risk" is broadly defined in this context, and it can refer to poorly understood requirements, poorly understood architecture, potential performance problems, and so on." The core idea of the spiral model is that you iteratively develop pieces of a system or project, starting with the riskiest, planning one iteration at a time so that you can develop a bit and learn enough to be able to plan the next iteration.
In this example, the most risky and unknown element of the project was the communication system, so that area was tackled as a high priority in the first iteration. After that, more features were added to the base system according to specific goals for each iteration.
The model in this file actually brings in the concept of "time-boxing" as well. The more risk or uncertainty there is for a particular development effort, the harder it obviously is to produce a definitive schedule for Management for the entire project. The concept of time-boxing says that you accept that uncertainty, set specific date goals by which to complete some amount of functionality and make a customer delivery, prioritize the features, and have the team work on the features according to their priority. The team gets done as many features as it can, in priority order, until the deadline date is reached.
How to use it
Use this file to understand how iterative planning might be used to execute one of your projects.
Identify risky or uncertain areas of your project that would receive priority in the early iterations. Think about how to break down the functionality your project needs to execute and prioritize those areas. Determine whether you have any logical interim deadlines that will help "time-box" the iterations and the end of the project.
At the start of the project you plan the first iteration in detail. Identify which features are top priority, and especially, which areas are riskiest and need work up front to better understand their scope. For each iteration illustrated on pages 3 and 4, you can create as detailed a feature list as you need for prioritization purposes. Execute the first iteration, with a specific deadline milestone for its completion. The plan the next iteration, reviewing the feature list and priorities, adjusting them, then updating the project plan for the details of the next iteration.
©Copyright 2000-2013 Emprend, Inc. All Rights Reserved.
About us Site Map View current sponsorship opportunities (PDF)
Contact us for more information or e-mail firstname.lastname@example.org