What is MDE?
In a previous post I presented what low-code is, and also pointed to a paper explaning the difference between low-code and MDE (Model-Driven Engineering). However, I have not presented what is MDE. In this post I want to correct that.
MDE is a well-studied subject, and there are definitions in academia. I will follow the definition given by David Ameller1 and others. There is also the excellent site by Jordi Cabot that also gives a definition for these terms, you can find the relevant posts here and here.
Here is my informal definition:
- Model-Driven Engineering (MDE) is a software engineering process where models drive the activities of the engineering process, which includes requirement collection, design, implementation, testing, and maintenance.
- Model-Driven Development (MDD) is a development process where models drive the activities of the development processs, which include design, implementation, and testing. This usually materializes through a model, which in turn constitutes the design.
I think that the keyword to understand these terms is “driven”. An intuitive understanding of this word would mean that if the model changes, then the whole system is forced to change. This can be put in contrast to non Model-driven approaches. In such approaches the model is usually just a documentation artifact, which can easily be outdated because changing it (or not) has actually no impact on the system being developed.
D. Ameller, “SAD: Systematic Architecture Design, A Semi-Automatic Method,” master’s thesis, Universitat Politècnica de Catalunya, 2010 ↩︎