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. B. 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.