07.03.2014 Aufrufe

Das UML-Metamodell

Das UML-Metamodell

Das UML-Metamodell

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!