Kein Folientitel

Download Report

Transcript Kein Folientitel

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