Skip to content

Iterative development

When they first hear about agile development, many people mistakenly think that it is a licence to work without rules. In fact, the work in an agile project needs to be coordinated just as much as it does in any other kind of project. The agile approach does, however, acknowledges that it is difficult, time-consuming and often futile to attempt to answer all of the design questions in advance. Instead, it assumes that the requirements themselves will be clarified as the project accumulates knowledge during the development. This would be naively optimistic though without some control over the process, and one of the fundamental elements of the agile approach is iterative development.

Prototyping cycle

A project usually runs for several months. A prototyping cycle structures that time to create opportunities to re-evaluate the work done so far and to check that the project is going in the right direction. The simplest approach is to choose a period of time such as two weeks, and to structure each period according to the illustration above. Each cycle would start with some planning, followed by some analysis and design, some implementation and eventually the evaluation of the work within the cycle. Using this approach, a two-month project would be made up of four cycles. It is also possible to divide a project into cycles of unequal sizes if there is some advantage to doing so.

An important element of iterative development is that a working prototype is produced at the end of each cycle. This is often referred to as the frequent delivery of product which is an expression of agile principle 3. Delivering working software on a regular basis provides an opportunity to

  • identify problems
  • seek feedback from others
  • evaluate work done so far
  • refine the design
  • re-evaluate the scope of the project
  • plan the next stage of development

Managing iterations

In a project team, it is important that everyone is working in a coordinated fashion in order to realise the benefits of iterative development. The regular delivery of prototypes creates a rhythm to the work which contributes to a sense of progress and achievement. This in turn supports a good working atmosphere with natural breaks in the pressure to get things done.

The basic requirements are to make sure that everyone knows what the goals of a cycle are at the start, to communicate progress during the cycle, and to coordinate the work of the team towards the end so that the prototype emerges in a controlled way at the expected time. The first requirement then, is for the team to know when the deadlines are. The image below shows how a Gantt chart for an agile project might be structured at the top level.

Gantt chart overview

There are several things that need to be done during project start-up and project closure. There are many sources of advice on this topic, including

The Disciplined Agile Framework

Agile development release planning

In this illustration, they are simply represented as a single activity on the Gantt chart as shown in the next image. Expanding the Startup and Closure stages reveals two important features of the Gantt chart. First, the name of every task is displayed on the chart. This makes it easier to read and understand, especially as the complexity grows. Second, each summary task ends with a milestone. This is a task of zero duration which acts as a deadline. One way to measure the health of a project is to monitor the milestones in the plan to make sure that they do not slip. Notice that the milestone which marks the end of Startup is linked to the beginning of the next summary task, Implementation.

Gantt chart showing startup and closure detail

From the image above, it is clear that the Implementation stage lasts eight weeks. In our example, we have decided to split that into four iterations of two weeks each. This could be represented as a series of further summary tasks as shown below.

Gantt chart showing iterations

In some ways, each iteration is like a small project in its own right. They all have a similar structure with some planning at the start and the evaluation of the prototype at the end. This has benefits for the team because each iteration has a predictable structure. In addition, the transition from one iteration to the next provides an opportunity to celebrate the achievements of the one that has just finished. The image below illustrates how each iteration might appear on the Gantt chart. In some cases it is not possible to add more detail than this to the implementation stage of the Gantt chart because the actual tasks are handled in an agile manner using techniques such as a Kanban board.

Gantt chart showing internal structure of an iteration

Further reading

 Iterative development

 Sprint planning