Home > Articles > Software Development & Management > Agile

Software Development: Iterative & Evolutionary

Craig Larman
  • PrintPrint
  • Share ThisShare This
  • DiscussDiscuss

Experience is that marvelous thing that enables you to recognize a mistake when you make it again.

F. P. Jones

OVERVIEW

  • Basic practices of iterative and evolutionary methods, including timeboxing and adaptive planning.

  • A common mistake adopting iterative methods.

  • Specific iterative and evolutionary methods, including Evo and UP.

Iterative and evolutionary development is a foundation not only of modern software methods, but—as the history section of the "Evidence" chapter shows—of methods used as far back as the 1960s. Agile methods are a subset of iterative and evolutionary methods. This chapter summarizes key practices:

iterative development

evolutionary development

risk-driven and client-driven

evolutionary requirements

timeboxing

adaptive planning

Iterative Development

Iterative development is an approach to building software (or anything) in which the overall lifecycle is composed of several iterations in sequence. Each iteration is a self-contained mini-project composed of activities such as requirements analysis, design, programming, and test. The goal for the end of an iteration is an iteration release, a stable, integrated and tested partially complete system. To be clear: All the software across all the teams is integrated into a release each iteration. Most iteration releases are internal, a baseline primarily for the benefit of the development team—they are not released externally. The final iteration release is the complete product, released to the market or clients. See Figure 2.1.

02fig01.jpgFigure 2.1. iterative and incremental development

Although an iteration can in theory be only for clean-up or performance tuning, usually the partial system grows incrementally with new features, iteration by iteration; in other words, incremental development. The concept of growing a system via iterations has been called iterative and incremental development (IID), although simply "iterative development” is common. Some older process literature [Wong84] used the term “incremental development" to mean a combination of frozen up-front specifications followed by iterative development of the features, but there is no widespread agreement on usage. In this era, most development methods are IID methods. And, IID is at the core of all the agile methods, including Scrum and XP.

Most projects have at least three iterations before a final public release; I've seen a two-year Valtech project composed of close to 20 iterations averaging around four weeks each, and I know of at least one long project with 45 iterations.

In modern iterative methods, the recommended length of one iteration is between one and six weeks.

Each iteration includes production-quality programming, not just requirements analysis, for example. And the software resulting from each iteration is not a prototype or proof of concept, but a subset of the final system.

More broadly, viewing an iteration as a self-contained mini-project, activities in many disciplines (requirements analysis, testing, and so on) occur within an iteration (see Figure 2.2).

02fig02.jpgFigure 2.2. disciplines across iterations

  • Share ThisShare This
  • Your Account

Discussions

Make a New Comment

You must log in in order to post a comment.

Related Resources

Emily NaveCommunity Tips: Starting a User Group Library
By Emily Nave on August 3, 20102 Comments

The Central Penn Adobe User Group (CPAUG) uses a library program to share books from different publishers with members. A short Q&A with group leader Megan Fister provides some great tips for starting your own.

Keep going with GWT
By Federico Kereki on August 1, 2010 No Comments

I've been using GWT for some years now, and I'm still contented with the easier way for web development. After having written a book on GWT development, doing a blog seemed a good idea for answering questions, and for further expanding topics that didn't get a place in the book.

Emily NaveUser Group Organizations: Finding Support in the Greater IT Community
By Emily Nave on July 29, 20102 Comments

Birds of a feather flock together, right? If you’re already a member of an established user group or looking for other like-minded technology evangelists, connecting with peers is an important part of being an active voice in the IT community.

See All Related Blogs

Informit Network