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.
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.
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!
Another important difference between adaptive and predictive methodologies is cultural. Predictive methodologies are often highly regulated, regimented, slow, and bureaucratic.
There are many Agile methodologies:
Dynamic System Development Method
Crystal Method
Feature-Driven Development
Lean Development
Adaptive Software Development
http://www.wrytradesman.com/articles/IntroToAgileMethods.pdf