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.