Model-Driven Development¶
Model-Driven Development is a generic designation for several tools and methodologies used to thoroughly include modelling in software engineering. It requires a fundamental shift in the way software engineers use models, evolving from _ad hoc_ complementary documents to the main focus of their work, relegating coding to the background.
MDD introduces a second and higher level of abstraction to modelling, by requiring in first place the formal capture of domain concepts in a meta-model. Software development becomes a process where instances of these meta-concepts are combined. Model-to-code transformations can then be applied to models complying to a specific meta-model.
With MDD source code becomes a sub-product of the development process, where the focus is on what the system must do, instead of how it does it.
Advantages¶
User-definable mappings - domain specific concepts are captured at an ontological level, producing a lexicon of model constructs (a domain specific language) that are independent of any code language or software platforms.
Understandability - MDD relies on graphical constructs, dispensing the text parsing needed to comprehend source code.
Fast prototyping - models can be executed and validated from a high level of abstraction, at an early stage in the development process, before much effort has to be spent.
Interoperability - technical concerns are offloaded on the code generation infrastructure, that can produce end code for different execution environments.
Code quality - model-to-code transformations produce uniform code and remove various sources of errors such as mistypings.
Productivity - particularly in an industrial environment, a well matured MDD infrastructure can increase output.
Selected Bibliography¶
C. Atkinson and T. Khne. Model-Driven Development: A Metamodeling Foundation. _IEEE Software_, 20(5): 36–41, 2003.
A. Clark and P. Muller. Exploiting model driven tech- nology: a tale of two startups. _Software & Systems_ _Modeling_, 11(4):481–493, 2012.
R. France and B. Rumpe. Model-driven development of complex software: A research roadmap. In _2007 Future of Software Engineering_, pages 37–54. IEEE Computer Society, 2007.
P. Mohagheghi, W. Gilani, A. Stefanescu, M. Fernan- dez, B. Nordmoen, and M. Fritzsche. Where does model-driven engineering help? Experiences from three industrial cases. _Software & Systems Modeling_, 12(3):619–639, 2013.
- Selic. The Pragmatics of Model-Driven Development. _IEEE Software_, 20(5):19–25, 2003.
B. Selic. Personal reflections on automation, program ming culture, and model-based software engineer ing. _Automated Software Engineering_, 15(3-4):379– 391, 2008.