A curated list of awesome model-driven engineering (MDE) resources. Originally set up @iivanoo's Software and Sustainability Group and transferred to MDENet in 2023.
- Domain-Specific Languages: Effective modeling, automation, and reuse - A book by Andrzej Wasowski and Thorsten Berger.
- Model-Driven Software Engineering in Practice - This book by Marco Brambilla, Jordi Cabot, and Manuel Wimmer provides a good high-level introduction to the field.
- Model-Driven Software Engineering in Practice - Introduction - This presentation gives a good summary of the key ideas.
- Engineering Modeling Languages – Turning Domain Knowledge into Tools - A book by Benoit Combemale, Robert B. France, Jean-Marc Jézéquel, Bernhard Rumpe, Jim Steel, and Didier Vojtisek.
- DSL Engineering - A book by Markus Völter giving an overview of different approaches and tools for engineering domain-specific (modelling) languages.
- Foundations of Model-Driven Software Engineering - A presentation by Jochen Kuster.
- Matters of (Meta-) Modeling - A paper by Thomas Kuhne.
- Model-driven engineering - A paper by D.C. Schimdt.
- Generative Software Engineering - A report by Bernhard Rumpe et al.
- Domain-Specific Modelling Languages: the need for Modelling Language Engineering - A presentation by Hans Vangheluwe.
- Modelling Languages: (mostly) Concrete (Visual) Syntax - A presentation by Hans Vangheluwe.
- Domain-Specific Languages - A presentation by Javier Canovas.
- Real world DSL - making technical and business people speaking the same language - A presentation by Mario Fusco.
- Domain-Specific Languages: Effective modeling, automation, and reuse - A book by Andrzej Wasowski and Thorsten Berger.
- Domain-Specific Languages in Practice with JetBrains MPS - An edited volume with different contributions about the JetBrains MPS tool.
- Globalizing Domain-Specific Languages - A report by B. H. C. Cheng, B. Combemale, R. B. France, J.- M. Jézéquel, B. Rumpe.
- Design Guidelines for Domain Specific Languages - A report by G. Karsai, H. Krahn, C. Pinkernell, B. Rumpe, M. Schindler, S. Völkel.
- Model Transformation - A presentation by Eugene Syriani and Hans Vangheluwe.
- Explicitly Modeling Transformations - A paper by Thomas Kuhne, Gergely Mezei, Eugene Syriani, Hans Vangheluwe and Manuel Wimmer.
- Road to a reactive and incremental model transformation platform: three generations of the VIATRA framework - A paper by Daniel Varro, Gabor Bergmann, Abel Hegedus, Akos Horvath, Istvan Rath and Zoltan Ujhelyi.
Below, we list awesome tools for doing MDE. The classification of contributions below is inspired by the MDE Body of Knowledge [1,2].
- Modeling Languages
- Language definition
- Syntax
- Metamodels
- Eclipse Modelling Framework (EMF) - The foundational meta-modelling framework in the Eclipse technical space. Used to define meta-models, from which full modelling languages can be built.
- EMF Tutorial - A very good tutorial by Lars Vogel.
- EcoreTools - A graphical editor for creating and managing EMF meta-models.
- Emfatic - Textual syntax for Ecore (EMF's meta-modelling language).
- metaDepth - A metamodelling tool following the multi-level modelling approach.
- Eclipse Modelling Framework (EMF) - The foundational meta-modelling framework in the Eclipse technical space. Used to define meta-models, from which full modelling languages can be built.
- Textual
- Xtext - A language workbench for creating textual modelling languages and modelling tools.
- Xtext 15-minute tutorial - A short tutorial to get started with Xtext.
- MontiCore - A language workbench for textual languages.
- Flexmi - Reflective textual syntax for EMF-based models, with XML and YAML flavours.
- Xtext - A language workbench for creating textual modelling languages and modelling tools.
- Projectional
- Jetbrains MPS - A language workbench for projectional languages.
- Graphical
- Sirius - A visual language engineering framework.
- Multi-view modelling
- AToMPM - A tool for Multi-Paradigm Modeling.
- Metamodels
- Semantics.
- GEMOC - A language workbench for modeling language design, implementation and coordination. Especially provides support for executable DSMLs through engines that can execute explicitly specified language semantics.
- Syntax
- Types of modeling languages
- General purpose (GPL): UML+OCL, SysML
- Papyrus - An open-source UML modelling tool.
- Domain-specific (DSL): UML Profiles, ADLs, etc
- General purpose (GPL): UML+OCL, SysML
- Language definition
- Model Transformations
- Model transformation
- Languages / engines
- Model-to-model transformation languages
- ATL - An efficient rule-based model transformation language.
- Epsilon Transformation Language (ETL) - A hybrid model transformation language.
- MOF Query/View/Transformation (QVT) - The OMG standard for model transformation.
- VIATRA - VIsual Automated model TRAnsformations - A tutorial about the VIATRA tool.
- The Janus Transformation Language (JTL) - Another transformation language.
- MoTE - TGG-based Model Transformation Engine - A graph-transformation based model transformation tool.
- Henshin - Graph Transformation Language - A graph-transformation based model transformation tool.
- YAMTL - Yet Another Model Transformation Language - An internal DSL for model transformation within JVM languages (Java, Groovy, Xtend, Kotlin), featuring key characteristics such as runtime performance, reuse of transformation logic, incremental execution, and independence from IDEs.
- Model-to-text transformation languages.
- Epsilon Generation Language (EGL) - A language and tool for model-to-text transformation (aka code generation).
- Model-to-model transformation languages
- Languages / engines
- Model transformation applications
- Model differencing and merging
- EMFCompare - A tool for comparing models.
- Comparison and merge use-cases from practice with EMFCompare - A tutorial on EMFCompare.
- EMFCompare - A tool for comparing models.
- Model optimisation / design space exploration. These are tools for searching for optimal models or transformations.
- MoMOT - A transformation based optimisation tool.
- MDEOptimiser - A model-based optimisation tool.
- Viatra DSE - A transformation based optimisation tool in the ViATRA suite of tools.
- Model evolution/migration
- Edelta - A Metamodel Evolution Tool including a textual DSL for model refactoring.
- Model differencing and merging
- Model transformation
- Model Visualization
- Layout
- Eclipse Layout Kernel (ELK) - Automatic layout of diagrams.
- Rendering
- Picto - Model visualisation through lazy model-to-text transformation to HTML, Graphviz and PlantUML.
- Layout
- Model Analysis
- Structural model analysis
- Invariant checking
- Epsilon Validation Language (EVL) - A language and tool for validating models.
- Instance generation
- Metrics calculation
- Smells detection
- Invariant checking
- Behavioural model analysis
- Pre-postcondition checking
- Simulation
- Reachability analysis
- Temporal model checking
- Performance
- Model transformation analysis
- Correctness (of transformed models, in syntax and semantics)
- Completeness
- Functional behaviour (termination, confluence)
- Performance
- Structural model analysis
- Other
- Complete Model Management Framework
- Epsilon - A set of languages and tools for a wide variety of model-management tasks.
- Learning Modeling through Gamification
- PapyGame - A gamified approach to learning UML and other modelling tools.
- Gamification Rule Language - A DSL for gamification rules - A tool by Antonio Bucchiarone and Stefano Martella.
- PapyGame - A gamified approach to learning UML and other modelling tools.
- Complete Model Management Framework