Core::Profiles

The Profiles package of the InfrastructureLibrary contains mechanisms that allow metaclasses from existing metamodels
to be extended to adapt them for different purposes. This includes the ability to tailor the UML metamodel for different
platforms (such as J2EE or .NET) or domains (such as real-time or business process modeling). The profiles mechanism
is consistent with the OMG Meta Object Facility (MOF).

Extensibility

The profiles mechanism is not a first-class extension mechanism, i.e., it does not allow for modifying existing
metamodels. Rather, the intention of profiles is to give a straightforward mechanism for adapting an existing metamodel
with constructs that are specific to a particular domain, platform, or method. Each such adaption is grouped in a profile.
It is not possible to take away any of the constraints that apply to a metamodel such as UML using a profile, but it is
possible to add new constraints that are specific to the profile. The only other restrictions are those inherent in the profiles
mechanism; there is nothing else that is intended to limit the way in which a metamodel is customized.

First-class extensibility is handled through MOF, where there are no restrictions on what you are allowed to do with a
metamodel: you can add and remove metaclasses and relationships as you find necessary. Of course, it is then possible to
impose methodology restrictions that you are not allowed to modify existing metamodels, but only extend them. In this
case, the mechanisms for first-class extensibility and profiles start coalescing.

There are several reasons why you may want to customize a metamodel:

Profiles and Metamodels
There is no simple answer for when you should create a new metamodel and when you instead should create a new
profile.