Previous | Table of Contents | Next |
The stratification of language units is used as the foundation for defining compliance in UML. Namely, the set of modeling
concepts of UML is partitioned into horizontal layers of increasing capability called compliance levels. Compliance levels
cut across the various language units, although some language units are only present in the upper levels. As their name suggests,
each compliance level is a distinct compliance point.
For ease of model interchange, there are just two compliance levels defined for UML Infrastructure:
• Level 0 (L0). This contains a single language unit that provides for modeling the kinds of class-based structures encountered in most popular object-oriented programming languages. As such, it provides an entry-level modeling capability. More importantly, it represents a low-cost common denominator that can serve as a basis for interoperability between different categories of modeling tools.
• Metamodel Constructs (LM). This adds an extra language unit for more advanced class-based structures used for building metamodels (using CMOF) such as UML itself.
As noted, compliance levels build on supporting compliance levels. The principal mechanism used in this specification for
achieving this is package merge (see "PackageMerge"). Package merge allows modeling concepts defined at one level to be extended
with new features. Most importantly, this is achieved in the context of the same namespace, which enables interchange of models
at different levels of compliance as described in "Meaning and Types of Compliance."
For this reason, all compliance levels are defined as extensions to a single core "UML" package that defines the common namespace
shared by all the compliance levels. Level 0 is defined by the top-level metamodel shown below.
In this model, "UML" is originally an empty package that simply merges in the contents of the Basic package from the UML Infrastructure.
This package, contains elementary concepts such as Class, Package, DataType, Operation, etc.
At the next level (Level LM), the contents of the "UML" package, now including the packages merged into Level 0 and their
contents, are extended with the Constructs package.