With this page, I’m trying to clarify the relationship between these modeling acronyms.
Model-based Engineering vs Model-Driven Engineering
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.
Model-driven development vs Model-driven Architecture
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 of the system or the model-driven reverse engineering of a legacy system).