Formal Definition of MOF 2.0 Metamodel Components and Composition

The Meta Object Facility (MOF) is one of the most frequently used languages for the definition of a DSL's abstract syntax. However, its lack of sophisticated modularization concepts in comparison to GPLs such as Ada or component-oriented ADLs makes it hard to maintain a large number of complex metamodels. MOF 2.0 packages can be used to a certain extent to define, refine, and compose language descriptions, but do not offer appropriate support for information hiding as well as for the specification of parametrizable metamodeling components. Motivated by a running example we, therefore, extend MOF 2.0 with concepts for the specification of proper metamodel components with provided export and required import interfaces. Furthermore, we present a formalization of a metamodel component composition operator based on graph morphisms. The resulting component-oriented version of MOF allows language developers to describe reoccurring, parametrizable sublanguages once and instantiate them differently in several metamodels.