Das UML-Metamodell
Das UML-Metamodell
Das UML-Metamodell
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>UML</strong>: <strong>Metamodell</strong><br />
Auf dem Weg zur Semantikdefinition?<br />
<strong>Das</strong> <strong>UML</strong>-<strong>Metamodell</strong> (für Klassendiagramme)<br />
Willkürlicher Ausschnitt<br />
aus dem <strong>UML</strong>-<strong>Metamodell</strong><br />
Relationship<br />
Zumindest<br />
Zumindest<br />
ist<br />
ist<br />
mit<br />
mit<br />
einem<br />
einem<br />
<strong>Metamodell</strong><br />
<strong>Metamodell</strong><br />
klar,<br />
klar,<br />
was<br />
was<br />
ein<br />
ein<br />
syntaktisch<br />
syntaktisch<br />
korrektes<br />
korrektes<br />
Modell<br />
Modell<br />
in<br />
in<br />
<strong>UML</strong><br />
<strong>UML</strong><br />
ist.<br />
ist.<br />
Generalization<br />
Assocation<br />
Association<br />
Role<br />
18.12.2002 Modellierung WS 02/03 1
<strong>UML</strong>: <strong>Metamodell</strong><br />
<strong>UML</strong> - Auf dem Weg zur Semantikdefinition<br />
Lernziel: <strong>Das</strong> Vorgehen zur Definition der Semantik verstehen!<br />
Bisher:<br />
jede Menge Syntax<br />
und<br />
informale Erläuterung<br />
Aber:<br />
jede Menge offener Details, sowohl in syntaktischer<br />
als auch in semantischer Hinsicht, z.B.<br />
B<br />
A<br />
B<br />
kennt<br />
A<br />
kennt<br />
C<br />
C<br />
Haben Objekte der Klasse C Verbindungen<br />
zu Objekten der Klasse A?<br />
Ist die Verbindung von C zu A syntaktisch korrekt?<br />
Sind die beiden „kennt“-Verbindungen von C geordnet?<br />
18.12.2002 Modellierung WS 02/03 2
<strong>UML</strong>: <strong>Metamodell</strong><br />
<strong>UML</strong>: Vier Ebenen von Modellen und <strong>Metamodell</strong>en<br />
Ebene Beschreibung Beispiel<br />
Meta-<strong>Metamodell</strong> Sprache zur Beschreibung Metaklasse, Metaoperation<br />
von <strong>Metamodell</strong>en<br />
<strong>Metamodell</strong> Eine Ausprägung eines Meta-<strong>Metamodell</strong>s, Klasse, Operation, Aktivität,<br />
Sprache zur Beschreibung von Modellen<br />
Objekt<br />
Modell Eine Ausprägung eines <strong>Metamodell</strong>s. Bestellung, Zahlung,<br />
Beschreibung eines Anwendungsbereichs.<br />
prüfe_Zahlung<br />
Anwendungsobjekte Ausprägung eines Modells Bestellung4712,<br />
prüfe_Zahlung(objekt9311)<br />
18.12.2002 Modellierung WS 02/03 3
<strong>UML</strong>: <strong>Metamodell</strong><br />
Beispiele zu Modellen, <strong>Metamodell</strong>en usw.<br />
Meta-<strong>Metamodell</strong> für<br />
objektorientierte Sprachen<br />
konkret: OMG Meta Object Facility (MOF)<br />
Meta-<strong>Metamodell</strong><br />
Metaklasse<br />
Metaoperation<br />
<strong>Metamodell</strong><br />
<strong>Metamodell</strong><br />
Coad / Yourdon<br />
<strong>Metamodell</strong><br />
OMT<br />
...<br />
<strong>Metamodell</strong><br />
<strong>UML</strong><br />
Modell<br />
Bestellung<br />
Schwamminformationssystem<br />
Anwendungsobjekte<br />
Schwamminformationssystem Schwamminformationssystem<br />
bei Schwämme Ekelbert mit dazugehörigen bei OBI mit Objekten<br />
Objekten<br />
18.12.2002 Modellierung WS 02/03 4
<strong>UML</strong>: <strong>Metamodell</strong><br />
<strong>UML</strong> - Abstrakte Syntax und der<br />
Versuch einer Semantikdefinition<br />
[http://www.omg.org/cgi-bin/doc?formal/01-09-73/]<br />
• 90 Metaklassen<br />
• > 100 Metaassoziationen<br />
• strukturiert in Komponenten<br />
Verhalten<br />
Modell-<br />
Management<br />
Grundlagen<br />
18.12.2002 Modellierung WS 02/03 5
<strong>UML</strong>: <strong>Metamodell</strong><br />
<strong>UML</strong> - <strong>Metamodell</strong><br />
<strong>Das</strong> <strong>UML</strong> - <strong>Metamodell</strong> wird beschrieben durch:<br />
• abstrakte Syntax<br />
beschrieben durch eine Untermenge von <strong>UML</strong> (solange fraglich,<br />
wie diese Untermenge nicht formal beschrieben ist!)<br />
• Regeln zur syntaktischen Korrektheit<br />
beschrieben mit Hilfe der OCL (Object Constraint Language) und<br />
mit Hilfe natürlicher Sprache<br />
• Semantik<br />
beschrieben mit Hilfe natürlicher Sprache<br />
18.12.2002 Modellierung WS 02/03 6
<strong>UML</strong>: <strong>Metamodell</strong><br />
<strong>UML</strong>-<strong>Metamodell</strong>:<br />
Strukturierung der Komponente „Verhalten“<br />
Verfeinerung<br />
Verhalten<br />
Interaktion<br />
Anwendungsfälle<br />
Zustandsübergänge<br />
gemeinsames<br />
Verhalten<br />
18.12.2002 Modellierung WS 02/03 7
<strong>UML</strong>: <strong>Metamodell</strong><br />
<strong>UML</strong>-<strong>Metamodell</strong>:<br />
Strukturierung der Komponente „Grundlagen“<br />
Grundlagen<br />
Verfeinerung<br />
Hilfselemente<br />
Kern<br />
Erweiterungsmechanismen<br />
Datentypen<br />
18.12.2002 Modellierung WS 02/03 8
<strong>UML</strong>: <strong>Metamodell</strong><br />
• Kern<br />
<strong>UML</strong>-<strong>Metamodell</strong>: Grundlagen<br />
– Basiskonzepte (wesentliche Metaklassen wie Klasse, Eigenschaft,<br />
Klassifizierer, Generalisierung, Assoziation).<br />
– Beispiele:<br />
Abstrakte Konstrukte (nicht instantiierbar)<br />
Konkrete Konstrukte (instantiierbar)<br />
Modellelement<br />
Verallgemeinerbares_Element<br />
Klassifizierer<br />
Klasse<br />
Attribut<br />
Operation<br />
Assoziation<br />
– Gerüst, in das weitere Sprachkonstrukte eingeklinkt werden,<br />
insbesondere über die Klassen Modellelement und Klassifizierer, d.h.<br />
das „Grundlagen“ kann als Framework verstanden werden (innerhalb<br />
des <strong>UML</strong>-<strong>Metamodell</strong>s).<br />
– „Kern“ ist gegliedert in „Grundgerüst“ und „Beziehungen“.<br />
18.12.2002 Modellierung WS 02/03 9
<strong>UML</strong>: <strong>Metamodell</strong><br />
<strong>UML</strong> - <strong>Metamodell</strong>: Grundlagen (Forts.)<br />
• Hilfselemente<br />
– Erweiterung des Kerns um Elemente, die für die graphische Darstellung<br />
von Diagrammen gebraucht werden (für weiterführende Konzepte wie<br />
Abhängigkeiten, Sichten)<br />
• Erweiterungsmechanismen<br />
– Erweiterung von Modellelementen um neue Semantikaspekte,<br />
beispielsweise um Werteabhängigkeiten und andere Constraints<br />
(Beispiel: wenn Bestellung nach 10.12. eingeht, dann setze Lieferung<br />
auf „dringend“)<br />
• Datentypen<br />
– grundlegende Datenstrukturen, die in <strong>UML</strong> als primitiv gelten<br />
18.12.2002 Modellierung WS 02/03 10
<strong>UML</strong>: <strong>Metamodell</strong><br />
<strong>UML</strong> - <strong>Metamodell</strong>: Grundidee der Komponente „Kern“<br />
18.12.2002 Modellierung WS 02/03 11
<strong>UML</strong>: <strong>Metamodell</strong><br />
ElementOwnership<br />
Sichtbarkeit: Sichtbarkeitsart<br />
<strong>UML</strong> - <strong>Metamodell</strong> „Kern“ (Grundgerüst)<br />
Abstrakte Syntax<br />
Element<br />
Namensraum<br />
0..1<br />
Namensraum<br />
Zugehöriges Element<br />
*<br />
Modellelement<br />
Name: Name<br />
constrained element<br />
1..* {ordered} * constraint<br />
Constraint<br />
body:<br />
boolean expr.<br />
Realisierung<br />
*<br />
Spezifikation<br />
Verallgemeinerbares<br />
Element<br />
istWurzel: Boolean<br />
istBlatt: Boolean<br />
istAbstrakt: Boolean<br />
*<br />
Klassifizierer<br />
1 owner<br />
n<br />
feature<br />
{ordered}<br />
Strukturelles<br />
Element<br />
Stelligkeit: Stelligkeit<br />
änderbar: Änderbarkeit<br />
Zielbereich: Bereichsart<br />
*<br />
Eigenschaft<br />
Bereich: Bereichsart<br />
Sichtbarkeit: Sichtbarkeitsart<br />
Verhaltenseigenschaft<br />
istAnfrage: boolean<br />
*<br />
0..1<br />
Parameter<br />
default: expr<br />
Art: ParameterRichtungArt<br />
*<br />
parameters{ordered}<br />
Klasse<br />
istAktiv:<br />
boolean<br />
Methode<br />
body:<br />
Prozedurexpr.<br />
Implementation<br />
Schnittstelle<br />
Datentyp<br />
Attribut<br />
Initialwert:<br />
expr<br />
Operation<br />
Spezifikation: uninterpretiert<br />
istploymorph: boolean<br />
Parallelität: Parallelitätsart<br />
1 *<br />
Spezifikation<br />
18.12.2002 Modellierung WS 02/03 12
<strong>UML</strong>: <strong>Metamodell</strong><br />
<strong>UML</strong> - <strong>Metamodell</strong> „Kern“ (Beziehungen)<br />
Abstrakte Syntax<br />
Angebot *<br />
Kunde *<br />
Lieferant *<br />
Modellelement<br />
Name: Name<br />
Anforderung *<br />
Abhängigkeit<br />
Beschreibung:<br />
string<br />
Generalisierung<br />
Diskriminator:<br />
Name<br />
* 1<br />
Generalisierung Untertyp<br />
* 1<br />
Spezialisierung Obertyp<br />
Verallgemeinerbares<br />
Element<br />
Verbindung<br />
Namensraum<br />
Klassifizierer<br />
wie vorne<br />
Typ Assoziationsende<br />
1 *<br />
Spezif. Teilnehmer<br />
* *<br />
Assoziationsende<br />
navigierbar: boolean<br />
geordnet: boolean<br />
Aggregation: Aggregationsart<br />
Stelligkeit: Stelligkeit<br />
änderbar: Änderbarkeitsart<br />
Zielbereich: Bereichsart<br />
2..*<br />
{ordered} 1<br />
Assoziation<br />
Klasse<br />
0..1<br />
* {ordered}<br />
Assoziationsende<br />
Qualifizierer<br />
Attribut<br />
Assoziationsklasse<br />
18.12.2002 Modellierung WS 02/03 13
<strong>UML</strong>: <strong>Metamodell</strong><br />
Metaklassen der Komponente „Kern“ (Forts.)<br />
Metaklasse „Modellelement“ (abstrakte Metaklasse):<br />
Ein Modellelement ist ein mit einem Namen versehenes Element eines Modells.<br />
Attribute der Metaklasse „Modellelement“:<br />
Name: eindeutig im Namensraum<br />
Assoziationen der Metaklasse „Modellelement“:<br />
constraint:<br />
Anforderung,<br />
Angebot<br />
Namensraum:<br />
Menge von Constraints, die das Modellelement betreffen<br />
inverse Assoziationen zu Kunde, Lieferant<br />
derjenige Namensraum, in dem das Modellelement vorkommt<br />
18.12.2002 Modellierung WS 02/03 14
<strong>UML</strong>: <strong>Metamodell</strong><br />
Metaklassen der Komponente „Kern“<br />
Metaklasse „Assoziation“:<br />
Eine Assoziation definiert eine semantische Beziehung zwischen Klassifizierern. Die<br />
Ausprägungen einer Assoziation sind eine Menge von Tupeln, die Ausprägungen der<br />
Klassifizierer zueinander in Beziehung setzen. Jedes Tupel kommt maximal einmal vor.<br />
Assoziation steht über Assoziationsenden mit zwei oder mehr Klassifizierern in Beziehung.<br />
Die verbundenen Klassifizierer sind geordnet.<br />
Attribute der Metaklasse „Assoziation“:<br />
Name: Name einer Assoziation, der in Verbindung mit den 2 oder mehr Klassifizierern<br />
eindeutig sein muß im Namensraum<br />
Assoziationen der Metaklasse „Assoziation“:<br />
zu Assoziationsenden (hier wird die wesentliche Struktur einer Assoziation definiert)<br />
18.12.2002 Modellierung WS 02/03 15
<strong>UML</strong>: <strong>Metamodell</strong><br />
Metaklassen der Komponente „Kern“ (Forts.)<br />
Metaklasse „Assoziationsklasse“:<br />
eine Assoziation, die als Klasse dargestellt wird (deshalb ererbend von Assoziation und Klasse)<br />
18.12.2002 Modellierung WS 02/03 16
<strong>UML</strong>: <strong>Metamodell</strong><br />
Metaklassen der Komponente „Kern“ (Forts.)<br />
Metaklasse „Assoziationsende“:<br />
Endpunkt einer Assoziation. Über Assoziationsenden werden Assoziationen und Klassifizierer<br />
verknüpft.<br />
Attribute der Metaklasse „Assoziationsende“:<br />
Aggregation<br />
Mögliche Werte:<br />
– keine Aggregation<br />
– Aggregation<br />
– Komposition<br />
18.12.2002 Modellierung WS 02/03 17
<strong>UML</strong>: <strong>Metamodell</strong><br />
Metaklassen der Komponente „Kern“ (Forts.)<br />
Attribute der Metaklasse „Assoziationsende“ (Forts.):<br />
änderbar<br />
geordnet<br />
navigierbar<br />
Stelligkeit<br />
Zielbereich<br />
Mögliche Werte:<br />
Mögliche Werte:<br />
- keine Einschränkungen der Änderbarkeit<br />
- eingefroren (keine Änderungen nach Erzeugung des Quellobjektes)<br />
- nur hinzufügen (neue Assoziationen jederzeit möglich, Löschen einer<br />
Assoziation nur, wenn mindestens eines der teilnehmenden<br />
Objekte gelöscht wird)<br />
Instanz (Assoziation zielt auf Objekte)<br />
Klassifizierer (Assoziation zielt auf Klassen)<br />
18.12.2002 Modellierung WS 02/03 18
<strong>UML</strong>: <strong>Metamodell</strong><br />
Metaklassen der Komponente „Kern“ (Forts.)<br />
Verhaltenseigenschaft (abstrakte Metaklasse):<br />
Eine Verhaltenseigenschaft beschreibt eine dynamische Eigenschaft eines Modellelementes<br />
(Operation oder Methode). Sie gehört zu einem Klassifizierer.<br />
Attribute der Metaklasse „Verhaltenseigenschaft“:<br />
istAnfrage:<br />
spezifiert, ob eine Ausführung der Eigenschaft (also der verbundenen<br />
Operation oder Methode) den Systemzustand ändert.<br />
istAnfrage = true bedeutet, daß der Systemzustand nicht geändert wird<br />
Assoziationen der Metaklasse „Verhaltenseigenschaft“:<br />
parameters:<br />
eine geordnete Liste von Parametern, die zur Operation / Methode gehören<br />
18.12.2002 Modellierung WS 02/03 19
<strong>UML</strong>: <strong>Metamodell</strong><br />
Metaklassen der Komponente „Kern“ (Forts.)<br />
Metaklasse „Klasse“:<br />
Eine Klasse ist eine Beschreibung einer Menge von Objekten, die die gleichen Attribute,<br />
Operationen, Verbindungen und Bedeutung haben. Eine Klasse kann eine Menge von<br />
Schnittstellen auszeichnen, mit Hilfe derer Mengen von Operationen bekannt gemacht werden.<br />
Im <strong>Metamodell</strong> besteht eine Klasse (als Subtyp von Klassifizierer) aus einer Menge von<br />
Eigenschaften (Operationen, Attributen).<br />
Jedes Objekt, das zu einer Klasse instantiiert wird, beinhaltet seine eigene Menge von Werten<br />
(korrespondierend zu den verbundenen strukturellen Eingenschaften (vgl. voller Deskriptor in der<br />
Erläuterung der Semantik))<br />
Attribute der Metaklasse „Klasse“:<br />
istaktiv:<br />
spezifiziert, ob ein Objekt seinen eigenen Kontrollbereich hat (thread of<br />
control). Wenn istaktiv = true, dann haben Objekte der Klasse einen eigenen<br />
Kontrollbereich. Ansonsten laufen sie im Kontrollbereich des aufrufenden<br />
Objekts.<br />
18.12.2002 Modellierung WS 02/03 20
<strong>UML</strong>: <strong>Metamodell</strong><br />
Metaklassen der Komponente „Kern“ (Forts.)<br />
Metaklasse „Klassifizierer“ (abstrakte Metaklasse):<br />
Ein Klassifizierer beschreibt Verhaltenseigenschaften und strukturelle Eigenschaften.<br />
Assoziationen der Metaklasse „Klassifizierer“:<br />
feature:<br />
Menge von Eigenschaften, die zu einem Klassifizierer gehören<br />
(Attribute, Operationen)<br />
Teilnehmer:<br />
Realisierung:<br />
Spezifikation:<br />
Zeigt an, daß der Klassifizierer in einer Assoziation vorkommt<br />
Über die Assoziation „Realisierung“ werden andere Klassifizierer verbunden,<br />
die die Operationen des Klassifizierers realisieren.<br />
Über die Assoziation „Spezifikation“ werden andere Klassifizierer verbunden,<br />
die Operationen zusammenfassen, die durch den Klassifizierer implementiert<br />
werden.<br />
18.12.2002 Modellierung WS 02/03 21
<strong>UML</strong>: <strong>Metamodell</strong><br />
Metaklassen der Komponente „Kern“ (Forts.)<br />
Metaklasse „Abhängigkeit“:<br />
Eine Abhängigkeit gibt an, daß die Implementierung oder das Funktionieren eines oder mehrerer<br />
Modellelemente die Verfügbarkeit eines oder mehrerer anderer Modellelement erfordert.<br />
Attribute der Metaklasse „Abhängigkeit“:<br />
Beschreibung: textuelle Beschreibung der Abhängigkeit<br />
Assoziationen der Metaklasse „Abhängigkeit“:<br />
Kunde:<br />
Lieferant:<br />
Über diese Assoziation sind die Modellelemente angeschlossen, die die<br />
Verfügbarkeit des Lieferanten erfordern.<br />
Über die Assoziation sind die Modellelemente angeschlossen, deren<br />
Verfügbarkeit von dem Kunden gefordert werden.<br />
18.12.2002 Modellierung WS 02/03 22
<strong>UML</strong>: <strong>Metamodell</strong><br />
Metaklassen der Komponente „Kern“ (Forts.)<br />
Metaklasse „Eigenschaft“:<br />
Eine Eigenschaft ist eine Operation oder ein Attribut, die durch eine Schnittstelle, einen Datentyp<br />
oder eine Klasse verkapselt wird.<br />
Attribute der Metaklasse „Eigenschaft“:<br />
Bereich:<br />
Sichtbarkeit<br />
Mögliche Werte: Instanz gibt an, daß die Eigenschaft in jeder Ausprägung<br />
des Klassifizierers gilt.<br />
Klassifizierer gibt an, daß die Eigenschaft nicht in jeder<br />
Ausprägung, sondern nur einmal pro Klassifizierer vorkommt<br />
Mögliche Werte: public Jeder Klassifizierer, der den Klassifizierer kennt, kann<br />
auf die Eigenschaft zugreifen<br />
protected Jeder Nachkomme des Klassifizierers kann auf<br />
die Eigenschaft zugreifen.<br />
private: Nur der Klassifizierer selbst kann auf die<br />
Eigenschaft zugreifen.<br />
Assoziationen der Metaklasse „Eigenschaft“:<br />
owner: Über die Assoziation „owner“ wird der Klassifizierer verbunden, der über das Attribut<br />
verfügt.<br />
18.12.2002 Modellierung WS 02/03 23
<strong>UML</strong>: <strong>Metamodell</strong><br />
Metaklassen der Komponente „Kern“ (Forts.)<br />
Metaklasse „Verallgemeinerbares Element“ (abstrakte Metaklasse):<br />
Ein verallgemeinerbares Element ist ein Modellelement, das in einer Generalisierungsbeziehung<br />
teilnehmen kann. Verallgemeinerbare Elemente sind hierarchisch angeordnet.<br />
Attribute der Metaklasse „Verallgemeinerbares Element“:<br />
istAbstrakt: gibt an, ob ein verallgemeinerbares Element eine unvollständige Deklaration ist<br />
oder nicht. Solange istAbstrakt=true, ist keine Instantiierung möglich.<br />
istBlatt:<br />
gibt an, daß keine weiteren Nachkommen vorkommen dürfen<br />
istWurzel: analog<br />
Assoziationen der Metaklasse „Verallgemeinerbares Element“:<br />
Generalisierung: Über diese Assoziation wird ein verallgemeinerbares Element<br />
A an ein Objekt der Metaklasse „Generalisierung“ angeschlossen, das in der<br />
Generalisierung den Untertypen spielt.<br />
B<br />
Spezialisierung: Über diese Assoziation wird ein verallgemeinertes Element an<br />
ein Objekt der Metaklasse „Generalisierung“ angeschlossen, das in der<br />
Generalisierung den Obertypen spielt.<br />
18.12.2002 Modellierung WS 02/03 24
<strong>UML</strong>: <strong>Metamodell</strong><br />
Metaklassen der Komponente „Kern“ (Forts.)<br />
Metaklasse „Generalisierung“:<br />
Eine Generalisierung ist eine Beziehung zwischen einem allgemeinen und einem konkreteren<br />
Element. <strong>Das</strong> konkretere Element hat alle Eigenschaften und Beziehungen des allgemeinen<br />
Elements und kann weitere umfassen.<br />
Attribute der Metaklasse „Generalisierung“:<br />
Diskriminator: wie bereits erörtert<br />
Assoziationen der Metaklasse „Generalisierung“:<br />
Ober- und Untertyp:<br />
(vgl. Verallgemeinerbares Element)<br />
18.12.2002 Modellierung WS 02/03 25
<strong>UML</strong>: <strong>Metamodell</strong><br />
Metaklassen der Komponente „Kern“ (Forts.)<br />
Metaklasse „Schnittstelle“:<br />
Eine Schnittstelle deklariert eine Menge von Operationen, die die Dienstleistung eines<br />
Klassifizierers angeben.<br />
Ein Klassifizierer kann mehrere Schnittstellen anbieten, d.h. der Klassifizierer implementiert<br />
mehrere Schnittstellen. Mehrere Klassifizierer können eine Schnittstelle realisieren.<br />
Schnittstellen haben keie eigenen Attribute, Assoziationen, Operationen.<br />
18.12.2002 Modellierung WS 02/03 26
<strong>UML</strong>: <strong>Metamodell</strong><br />
Assoziationen:<br />
Regeln zur syntaktischen Korrektheit<br />
(Komponente „Kern“)<br />
1) Assoziationsenden einer Assoziation müssen eindeutige Namen haben.<br />
self.allConnections -> ∀ r 1 , r 2 : r 1 .name = r 2 .name ⇒ r 1 = r 2<br />
2) Höchstens ein Assoziationsende kann eine Aggregation oder Komposition sein.<br />
self.allConnections -> select (aggregation ≠ #none) -> size ≤ 1<br />
3) Wenn eine Assoziation 3 oder mehr Assoziationsenden hat, dann ist kein Ende eine<br />
Aggregation oder Komposition.<br />
Zusätzliche Operationen:<br />
Die Operation allConnections liefert die Menge der Assoziationsenden einer Assoziation,<br />
18.12.2002 Modellierung WS 02/03 27
<strong>UML</strong>: <strong>Metamodell</strong><br />
Regeln zur syntaktischen Korrektheit<br />
(Komponente „Kern“)<br />
Verallgemeinerbares Element:<br />
1) Eine Wurzel hat keine Generalisierungen.<br />
(self.istWurzel => self.Generalisierung) -> isEmpty<br />
2) Ein verallgemeinerbares Element kann nicht über eine Assoziation „Obertyp“ an eine<br />
Generalisierung verbunden sein, über die ein Element erreicht wird, das ein Blatt ist.<br />
self.supertype -> ∀ s : ¬ s.istBlatt)<br />
nicht OK !<br />
A<br />
B<br />
istBlatt = true<br />
nicht OK !<br />
entspricht<br />
Generalisierung<br />
von A zu B<br />
Generalisierung<br />
Spezialisierung<br />
Untertyp<br />
B<br />
A<br />
Obertyp<br />
istBlatt = true<br />
18.12.2002 Modellierung WS 02/03 28
<strong>UML</strong>: <strong>Metamodell</strong><br />
Regeln zur syntaktischen Korrektheit<br />
(Komponente „Kern“)<br />
Schnittstelle:<br />
1) Eine Schnittstelle kann nur Operationen enthalten.<br />
self.allFeatures -> ∀ f : f.oclisKindof (Operation)<br />
2) Eine Schnittstelle kann keine Klassifizierer enthalten.<br />
self.allContents -> isEmpty<br />
3) Alle Eigenschaften, die in einer Schnittstelle definiert werden, sind public.<br />
self.allFeatures -> ∀ f : f.Sichtbarkeit = #public)<br />
18.12.2002 Modellierung WS 02/03 29
<strong>UML</strong>: <strong>Metamodell</strong><br />
Definition der Semantik am Beispiel von „Kern“<br />
Die Semantikfestlegung der <strong>UML</strong> besteht aus der Erläuterung der abstrakten<br />
Syntax und der Syntaxregeln. Es wird damit keine formale Ebene erreicht<br />
(Unterschied zu modellbasierter und algebraischer Spezifikation), es lassen<br />
sich auf dieser Ebene jedoch die bisher erkannten Unklarheiten ausräumen.<br />
Beispiele für eine solche Semantikfestlegung am Beispiel von „Kern“:<br />
Unter einem vollständigen Deskriptor versteht man die Beschreibung aller Attribute zur<br />
Beschreibung eines Objektes oder einer Instanz.<br />
Der vollständige Deskriptor ergibt sich aus der Hierarchie der verallgemeinerbaren<br />
Elemente, zu der ein Objekt gehört und aus der Menge der Attribute dieser<br />
verallgemeinerbaren Elemente.<br />
Gemäß der vollständigen Deskriptoren werden Objekte erzeugt als ob es Klassen gäbe,<br />
die alle Elemente umfassen, die durch den Deskriptor zusammengefaßt werden<br />
18.12.2002 Modellierung WS 02/03 30