The Infrastructure of the UML is defined by the InfrastructureLibrary, which satisfies the following design requirements:
Define a metalanguage core that can be reused to define a variety of metamodels, including UML, MOF and CWM.
Architecturally align UML, MOF, and XMI so that model interchange is fully supported.
Allow customization of UML through Profiles and creation of new languages (family of languages) based on the same metalanguage core as UML.
As is shown in Figure 1, Infrastructure is represented by the package InfrastructureLibrary, which consists of the packages Core and Profiles, where the latter defines the mechanisms that are used to customize metamodels and the former contains core concepts used when metamodeling.