Model Driven Engineering, hot or not?
I’m just wondering… how popular is Model Driven Engineering (MDE)? How often are Model Driven Engineering techniques applied in practice?
There’s quite some research activity in the field of Model Driven Engineering. See for example the Model Driven Engineering tag on researchr or search Google Scholar for MDE related content. To get a more complete overview you should also include research about all MDE-related acronyms and related research fields like modeling, language design, transformations, etc.
With some effort it should be possible to get some numbers about the popularity of MDE among scientific researchers. My question, however, is: how popular is MDE in the software industry? There are quite some reasons to start using Model Driven Engineering, but are people actually doing it? And, even more important, are they experiencing the benefits of MDE?
What is MDE?
Let’s first try to define Model Driven Engineering. MDE is not the same as Model-Based Development. Using a model in your software development approach does not mean you are doing Model Driven Engineering. The key concepts of MDE are abstraction and automation. The model of a software application is defined on a higher abstraction level (than 3GL languages) and this model is automatically converted into a working application using code generation or model interpretation.
When do we call something MDE?
It’s nice to have some kind of a definition of MDE, but the question can remain what practical solutions can be seen as MDE.
The following two approaches / products can of course be seen as MDE:
- Model Driven Software Factories (MDSF): users of these products use DSLs to define the model of an application.
- DSL tools: users of these products use meta-languages to define DSLs and their code generators.
There are, however, a lot more approaches or products which use models to drive some sort of an implementation. The following approaches / products are in most cases not referred to as MDE but, in my opinion, they contain elements of MDE:
- Business process engines: the language to define business / integration processes is as high-level as possible and targeted at a specific domain (in most cases BPEL is used). These processes are directly executed on an engine.
- Business rules engines: a high-level, tailored language is used to define business rules. In most cases the language is declarative (e.g. decision tables). The rules are executed on a rules engine.
- Platform-as-a-Service solutions: there are a lot of PaaS solutions available using all different kinds of language to define / configure an application. In a previous article I argued that MDE is essential for PaaS. Not all PaaS solutions can be seen as MDE, but a lot of them use high-level languages to let users / developers define applications.
Just a few examples I thought about. You can probably come up with more examples of the use of models driving implementations.
What is the relevance of MDE for business success?
It’s nice to give all kinds of products and approaches an MDE badge, but what’s in it for us? I think it is important to know the different usages of MDE and to learn from them. I’m especially interested in the question whether the application of MDE techniques did lead to business value (e.g. more productivity, higher quality). I know, just a tool doesn’t bring you business success, but it can help a lot.
83% of the questionnaire respondents of the EA-MDE project think that MDE is a good thing. This case study shows an improvement from 670 days Java coding to 171 days modeling for the same project. Do you have additional numbers about the usage of MDE (even if it isn’t called MDE) in practice?
My questions for you
I would like to know what you think about this subject. Please consider the following questions:
- When do you call something Model Driven Engineering?
- Have you seen MDE being used in practice?
- Do you have numbers / facts about the usage of MDE in real-life projects? Please share them!
- Why is MDE hot or not?
Please put your answers in the comments! Don’t hesitate to answer just one of the questions instead of all of them at once.
Photo by ReRe