Agile Model-Driven Development

Agile Methodologies

There are many Agile methodologies:

Extreme Programming (XP)


Dynamic System Development Method

Crystal Method

Feature-Driven Development

Lean Development

Adaptive Software Development


Agile methodologies are all based on iterative-incremental processes, but with very short iterations (weeks rather than months). Working software is released at the end of every iteration and is the principle measure of progress. Agile methodologies also emphasize close communication with stakeholder. See The Agile Manifesto for more details.

Agile methodologies are also called adaptive and are usually contrasted with predictive methodologies. Predictive methodologies, like the Rational Unified Process (RUP), emphasize planning. Every feature and every activity is specified and scheduled early in the process. Predictive methodologies can be slow to adapt to changes. Predictive methodologies may also emphasize documentation and big upfront designs. Another important difference between adaptive and predictive methodologies is cultural. Predictive methodologies are often highly regulated, regimented, slow, and bureaucratic.

Agile Model-Driven Development (AMDD)

AMDD is the agile version of MDA. AMDD drops the requirement that models be formal and complete. Instead, models only need to be good enough to reach the real goal: the next release. AMDD often eschews the use of CASED tools in favor of a digital photograph of a diagram drawn on a white board.

AMDD is an agile, model-driven, iterative-incremental process:

Notice that there is no maintenance phase in which new features are added to the code. This is because our process iterates until the system is retired or aborted. New features can be added during any iteration.

Implementation is actually a macro-phase consisting of a number of micro-phases:

Model-driven development means that code and tests are derived from (UML) models.

Agile development means that design is deemphasized. Design inadequacies can be corrected by refactoring. Models are only good enough to serve their purpose. Details are left to code. Often the models are discarded after they have served their purpose.

Agile development is often test-driven, which means that tests are implemented before requirements are implemented. The code is only good enough to pass the tests and is refactored to accommodate new tests. 

Iterations are short in agile development, typically one or two weeks. Deadlines never slip, although promised requirements may not make the promised release.

Agile development assumes stakeholder participation. The customer decides which how requirements should be prioritized.