Jordi Cabot has an interesting Blog on Modeling Languages. In it (an on LinkedIn) there was a discussion recently on the difference or similitudes between MDA, MDD, and MDE. It’s interesting that Wikipedia treats the last two as the same thing – I like Jordi’s description better.

However, as I read Jordi’s blog posting, I found that his explanation certainly makes sense and is probably correct nowadays, in a more modern sense of the terms.

However, “MDD” has been used for quite a long time to describe model-based (as opposed to model-driven) development. That use of the term would not fit within the definitions presented by OMG as part of MDA (e.g., the CIM/PIM/PSM levels of abstractions and transformations). I suspect that this approach may also still be in use today – although probably not the best way of working with models. This may especially be true of some of the model uses seen in “agile” approaches.

So perhaps there is a need, in the diagram shown on that blog, to also have a model-based development (MBD?) circle that would intersect with MDD, but not the others?

All this also can not be discussed without mentioning the standards, processes, and methods (and the effect of tools on these) surrounding these approaches. Models need to have a standard representation to be useful – and the UML (and SysML) is certainly one that is common these days. However, other notations such as BPMN, ERD, etc., should not be discounted as they represent interesting domain specific modeling languages – and not all can be easily expressed using UML . Tools are too often viewed as a panacea to what ails software development – when they can be a hindrance when one does not understand the standards, processes, and methods they support.