Profil (UML)
# Profil (UML)

Ein Profil (engl. profile) ist zum einen ein Modellelement der Unified Modeling Language (UML), einer Modellierungssprache für Software und andere Systeme, und zum anderen eine konkrete Erweiterung des UML2-Metamodells basierend auf dem leichtgewichtigen Erweiterungsmechanismus der Profile. Für Letzteres wird oft der Begriff UML-Profil verwendet, beispielsweise beim UML-Profil für Enterprise JavaBeans.

UML-Profile werden für spezielle Anwendungsdomänen erstellt. Sie stellen die Grundlage der modellgetriebenen Architektur und anderer modellgetriebener Softwareentwicklungs-Ansätze dar, indem sie die Formalisierung von Domänenmodellen ermöglichen.

## Beschreibung

Ein Profil wird als Paket mit dem Schlüsselwort «profile» dargestellt.

Ein Profil ist eine Spezialisierung von Paket und umfasst zwei Arten von Elementen:

* eine Menge von Stereotypen, das heißt elementaren Erweiterungen des Metamodells der UML2
* eine Menge von Paketimporten für Pakete aus dem Metamodell der UML2

Die entscheidenden Elemente eines Profils sind die elementaren Erweiterungen des Metamodells der UML2, siehe Stereotyp.

## Profile anwenden

Profile werden im Allgemeinen auf Pakete, meistens aber auf Modelle als Spezialisierung von Paket, angewendet. Die Profilanwendung ist eine Spezialisierung des Paketimports, sie etabliert deshalb eine spezielle Abhängigkeitsbeziehung zwischen einem Paket und einem Profil. Die Abhängigkeit besteht in zweierlei Hinsicht. Erstens importiert das Paket alle Elemente aus dem Profil. Falls das Profil zum Beispiel einen Aufzählungstyp Farbe definiert, kann das Paket Farbe als Attribut-Typ verwenden. Zweitens kann das Paket alle Stereotypen, die im Profil definiert sind, einsetzen.

Eine Profilanwendung wird als gestrichelte Linie mit offener Pfeilspitze auf der Seite des Profil gezeichnet. Sie unterscheidet sich von anderen Abhängigkeitsbeziehungen durch das Schlüsselwort «apply».

## Beispiele für UML-Profile

Die UML 2.0 Superstructure Specification definiert vier UML-Profile für Industriestandards im Bereich Softwarekomponenten, nämlich je ein UML-Profil für die Modellierung von Enterprise Java Beans (EJBs), von .NET-Komponenten, von Komponenten des Component Object Model (COM) und schließlich von Komponenten des Corba Component Model (CCM).

