A profile is a stereotyped package that contains model elements that have been customized for a specific or purpose using extension mechanisms, such as stereotypes, tagged definitions and constraints. A profile may also specify model libraries on which it depends and the metamodel subset that it extends [UML 2003].