Model-driven software development
||It has been suggested that this article be merged with Model-driven engineering. (Discuss) Proposed since September 2014.|
||This article contains instructions, advice, or how-to content. (January 2013)|
Model-driven software development (MDSD) is an alternative to round-trip engineering. Round-trip engineering is the concept of being able to make any kind of change to a model as well as to the code generated from that model. The changes always propagate bidirectional and both artifacts are always consistent. The transition from code to model (the reverse engineering) is especially interesting in this context.
In the context of these approaches the model typically possesses the same abstraction level as the code (that is, 'one rectangle per class'). It is actually the visualization of a program's structure. In such a scenario, it is both feasible and useful to track changes to the code in the model automatically.
MDSD takes a different approach: the model is definitely more abstract than the code generated from it. Thus it is generally impossible to keep the model consistent automatically after a manual change of the generated code. For this reason, manual changes to generated code should be avoided. A precise definition that states which parts are generated and which are implemented manually is therefore necessary.
The abstraction level of decisions is raised to model level. This only makes sense if a corresponding abstraction on the model level can be identified.
2. Tagging the model
This involves moving code-level decisions into the model without raising the abstraction level. This procedure is called 'tagging'the model with implementation decisions.
3. Separation of code classes
This involves the adaptation of the target architecture in such a way that manually created code must be written into classes specifically created for this purpose.
4. Tagging the code
This consists of the introduction of protected regions to the code, and is accomplished through the use of special tags that protect the code placed between them from overwriting during regeneration.
This list reflects the various solution's elegance in strictly descending order. Tagging the model still allows a clear separation of responsibilities and enables a fully automated regeneration without further manual treatment.
- Model-Driven Software Development, (Technology, Engineering, Management) Thomas Stahl, Markus Volter