The Model-Driven Architecture (MDA) approach to application development projects lays on model to code generation (and eventually on model to model transformation).

At first glance, we could consider that the last step of an ADM project could be connected to an MDA maintenance process in the new application life-cycle… But it’s a misunderstanding. The step (3) in an ADM process effectively uses a code generator that fits to the target architecture so one could imagine to reuse it for MDA purpose but:

A code generator is always tight to the model it uses in input, and more precisely to the meta-model of these model as it will associate code templates to model fragments

The target model resulting from the ADM step (2) is a technical model which contains a modeled representation of each source application line of code: MDA approaches never use such models but rather functional and logical models

The ADM step (3) code templates are compliant with the target architecture… But may also result from costs bargains vs technical ideal goal. The target code will globally respect the architectural target contract but may shift aside on some points like GUI, business rules location, etc.

In order to connect the ADM step (3) to an MDA process some new steps are required:

Transforming the target model to extract a viewpoint that conforms to the meta-model, the granularity and the modeling approach chosen for the MDA process

Transforming in a similar way the target code generator

Applying a refactoring step to the target code to eventually reduce the gap with the architectural target

That is not easy but can be done. The added cost worths the investment if the expected short-term maintenance cost reduction is greater than the ADM to MDA operation’s cost.

Why don’t we merge the MDA process with the ADM process? Mainly to keep things as simple as possible and so reducing migration process risks.

(*) not to be confused with TOGAF’s ADM: Architecture Development Method