Model-Driven Architecture (MDA)

The Object Management Group (www.omg.org) has taken over the official specification of UML. They have concentrated on formally specifying UML. In essence, they have built a UML model of UML! The goal of the formal specification is to support the development of modeling tools, the interchange of models between tools, and ultimately, the automatic translation of UML models into running code.

Modeling Modeling Languages

A specification S of a (programming) language L is a formal description on the syntax (structure) and semantics (runtime behavior) of the phrases (programs) of L.

S might describe a translation (compiler) of the phrases of L into the phrases of a "simpler" language L-, or S might describe a virtual machine capable of executing the phrases of L.

S may be a program expressed in a language L'. In this case we say that L' is a meta-language and L is an object language. One possibility is that L' is a subset of L. In this case we say that L' is the core of L and that L is bootstrapped from L'.

OMG's MDA extends these ideas to modeling languages. A modeling language, L, is a set of rules and elements for building models. A specification, S, of L is also a model called a meta-model.

Of course the main example of a modeling language is UML. The meta-language for S is a subset of UML called the Meta-Object Facility (MOF).

MOF

MOF contains the core or infrastructure of UML.

MOF contains the following types of elements:

The Four Layer Architecture

M0 = objects
M1 = models
M2 = modeling languages (specifications, meta-models, UML)
M3 = meta-modeling languages (meta-languages, MOF)

Note:

Mi elements are instances of M(i+1) elements.

Executable Models

The ultimate goal of MDA is to be able to compile models into code that runs on a specific (software) platform. Examples of platforms include J2SE, J2ME, J2EE, .Net, CORBA, MFC.

Short of the model compilers, a formal specification of UML facilitates the development of modeling tools and the ability to interchange models between different tools. This last goal is achieved by XMI (XML Metadata Interchange).

Agile MDA (AMDA)

Of course a model needs to be fairly detailed in order to be executable. Agile MDA (AMDA) advocates a model-driven approach in which the models are "barely good enough."

For details, see http://www.agilemodeling.com/