Iterative Versus Incremental


The well-known "waterfall" method is rarely used, even by those who claim (or are forced) to use it. Most development methods are incremental and iterative. What do those words mean?

  • Iterative Repeating the same task to improve its output

  • Incremental Dividing a task into small tasks, which are completed one by one (sequentially or in parallel)

Now let's see how different types of methods use iterations and increments.

Waterfall

Analyze, design, code, integrate, test done! No iterations, no increments, no feedback; everything works the first time.

Classic RUP-Like Process

Analyze until 70 80% done. Start the design phase, but keep updating the analysis with any feedback you receive. Design until 70 80% done. Start the coding phase, but keep improving with feedback. And so on for the other phases.

This is an iterative process feedback is used to improve the work done. The process is not incremental, except in the coding and integration phases, where some parts of the application may be delivered incrementally.

Incremental Architecture-Driven Process

Analyze the application until 70 80% done. Design the application so that the architecture and high-risk elements are relatively complete. Define functional groups. Refine the analysis and design as the project progresses.

For each functional group, a detailed analysis, a detailed design, coding, integration, and testing are done. Each increment is handled like a small RUP-like project, with iterations to improve the output. When the functional group is finished, it is delivered as an increment to the customer.

We have an iterative first step, which looks at the whole application. The application is then delivered incrementally, with each increment developed using an iterative process.

Extreme Programming

Gather an initial set of stories from the customers (high-level analysis). Define a metaphor (high-level analysis and design).

For each release, perform the planning game to allocate stories. For each story, define acceptance tests (analyze), write unit tests (design), code, refactor, integrate, test, and repeat frequently (iterate) until done.

The basic process is incremental on the level of releases and stories. Within those increments, the process iterates rapidly, based on feedback from acceptance and unit tests.



Extreme Programming Perspectives
Extreme Programming Perspectives
ISBN: 0201770059
EAN: 2147483647
Year: 2005
Pages: 445

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net