Path from ADM to MDATags:
- Full source code reverse modeling,
- Model transformation from source architectural model to target architectural model,
- Target code generation combining target architectural model generation and algorithmic source code conversion to target programming language.
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