Clarifying concepts: MBE vs MDE vs MDD vs MDA
With this page, I’m trying to clarify the relationship between these modeling acronyms.
The first aspect is that I use “model-based engineering” (MBE) or “model-based development” to refer to a softer version of model-driven engineering (MDE). That is, to me, a MBE process is a process in which software models play an important role although they are not necessarily the key artifacts of the development (i.e. they do NOT “drive” the process as in MDD). An example would be a development process where, in the analysis phase, designers specify the platform-independent models of the system but then these models are directly handed out to the programmers to manually write the code (no automatic code-generation involved and no explicit definition of any platform-specific model). In this process, models still play an important role but are not the basis of the development process.
Therefore, I see MBE as a superset of MDE. All model-driven processes are model-based but not the other way round.
Next is to clarify the confusion about the relationship between MDA (model-driven architecture), MDD (model-driven development) and MDE (model-driven engineering). Put it simply, in my opinion, MDD is a development paradigm that uses models as the primary artifact of the development process. Usually, in MDD, the implementation is (semi)automatically generated from the models. MDA is the OMG’s particular vision of MDD and thus relies on the use of OMG standards. Therefore, MDA can be regarded as a subset of MDD. On the other hand, MDE would be a superset of MDD because, as the E in MDE suggests, MDE goes beyond of the pure development activities and encompasses other model-based tasks of a complete software engineering process (e.g. the model-based evolution the system or the model-driven reverse engineering of a legacy system).
All this is visually summarized in the following picture (inspired by the one I found in the Master thesis of David Ameller (supervised by Xavier Franch )
If you enjoyed this post you can subscribe to this Software Modeling blog and/or follow me on twitter. And if you really liked it help me pass it on to others by sharing the post using the links below. Don’t forget to check our consulting and sponsorship opportunities either!