Agile Lifecycle Models

A Generic Agile Lifecycle Model

Our generic model is an iterative-incremental model consisting of four activities:

Like most models, if begins by capturing a few requirements from the customer and the users. It is assumed that these other stakeholders are readily available, are well informed, and are authorized to make decisions.

Next, tests are written to determine if the system satisfies the newly captured requirements. These tests are added to a suite of tests written during previous iterations.

Next, all of the tests in the suite are executed. If they all pass, then we return for more requirements. Otherwise, we improve the system by:

1. Adding new code to implement the new requirements and therefore pass the new tests.

2. fixing bugs.

3. refactoring the system to pass older tests that were broken by the new code.

A typical iteration lasts about two weeks and produces either a development release or a production release.

The length of an iteration is fixed as is the 40 hour work week. If all of the requirements can't be implemented in the next release, then the customer is asked to choose which requirements should be postponed to future iterations.

Ideally, programmers work in pilot/copilot pairs.

The only long-lived products of the generic agile model are tests and releases. Documentation and models, if they are created at all, are short-lived and minimalistic.

Differences with Predictive Models

No Upfront Analysis and Design

In a sense, design comes at the end of our generic process, where it appears as refactoring, which means improving the design of existing code without breaking it.

No Maintenance or Retirement

Our generic agile model doesn't distinguish between maintenance (adding  features, fixing bugs, adapting to new environments) and implementing new requirements.

Agile projects are never done!

Cultural Differences

Another important difference between adaptive and predictive methodologies is cultural. Predictive methodologies are often highly regulated, regimented, slow, and bureaucratic.

Agile Methodologies

There are many Agile methodologies:

Extreme Programming (XP)

Scrum

Dynamic System Development Method

Crystal Method

Feature-Driven Development

Lean Development

Adaptive Software Development

Agile Unified Process

References

The Agile Manifesto

http://www.wrytradesman.com/articles/IntroToAgileMethods.pdf

http://www.agilemodeling.com/