Previous Table of Contents Next


7.5 Architectural Alignment between UML and MOF

   One of the major goals of the Infrastructure has been to architecturally align UML and MOF. The first approach to accomplish this has been to define the common core, which is realized as the package Core, in such a way that the model elements are shared between UML and MOF. The second approach has been to make sure that UML is defined as a model that is based on MOF used as a metamodel, as is illustrated in Figure 7.4. Note that MOF is used as the metamodel for not only UML, but also for other languages such as CWM.

Figure 7.4 - UML and MOF are at different metalevels

    How these metalevel hierarchies work is explained in more detail in Section 7.6, “Superstructure Architecture,? on page 14. An important aspect that deserves mentioning here is that every model element of UML is an instance of exactly one model element in MOF. Note that the InfrastructureLibrary is used at both the M2 and M3 metalevels, since it is being reused by UML and MOF, respectively, as was shown in Figure 7.2. In the case of MOF, the metaclasses of the InfrastructureLibrary are used as is, while in the case of UML these model elements are given additional properties. The reason for these differences is that the requirements when metamodeling differ slightly from the requirements when modeling applications of a very diverse nature.

   MOF defines for example how UML models are interchanged between tools using XML Metadata Interchange (XMI). MOF also defines reflective interfaces (MOF::Reflection) for introspection that work for not only MOF itself, but also for CWM, UML, and for any other metamodel that is an instance of MOF. It further defines an extension mechanism that can be used to extend metamodels as an alternative to or in conjunction with profiles (as described in Chapter 13, “Core::Profiles?). In fact, profiles are defined to be a subset of the MOF extension mechanism.