Auf dem Weg zur Semantikdefinition? - Informationssysteme€¦ · 18.12.2002 Modellierung WS 02/03...

30
18.12.2002 Modellierung WS 02/03 1 UML: Metamodell Auf dem Weg zur Semantikdefinition? Das UML-Metamodell (für Klassendiagramme) Willkürlicher Ausschnitt aus dem UML-Metamodell Generalization Zumindest ist mit einem Metamodell klar, was ein syntaktisch korrektes Modell in UML ist. Relationship Assocation Association Role

Transcript of Auf dem Weg zur Semantikdefinition? - Informationssysteme€¦ · 18.12.2002 Modellierung WS 02/03...

18.12.2002 Modellierung WS 02/03 1

UML: Metamodell

Auf dem Weg zur Semantikdefinition?Das UML-Metamodell (für Klassendiagramme)

Willkürlicher Ausschnittaus dem UML-Metamodell

Generalization

Zumindest ist mit einem Metamodell klar, was ein syntaktisch korrektes Modell in UML ist.

Zumindest ist mit einem Metamodell klar, was ein syntaktisch korrektes Modell in UML ist.

Relationship

Assocation

AssociationRole

18.12.2002 Modellierung WS 02/03 2

UML: Metamodell

UML - Auf dem Weg zur SemantikdefinitionLernziel: Das Vorgehen zur Definition der Semantik verstehen!

Bisher: jede Menge Syntaxund

informale Erläuterung

Aber: jede Menge offener Details, sowohl in syntaktischer als auch in semantischer Hinsicht, z.B.

C

B A

Haben Objekte der Klasse C Verbindungenzu Objekten der Klasse A?

C

kenntB A

kennt

Ist die Verbindung von C zu A syntaktisch korrekt?Sind die beiden „kennt“-Verbindungen von C geordnet?

18.12.2002 Modellierung WS 02/03 3

UML: Metamodell

UML: Vier Ebenen von Modellen und Metamodellen

Ebene Beschreibung Beispiel

Meta-Metamodell Sprache zur Beschreibung Metaklasse, Metaoperationvon Metamodellen

Metamodell Eine Ausprägung eines Meta-Metamodells, Klasse, Operation, Aktivität,Sprache zur Beschreibung von Modellen Objekt

Modell Eine Ausprägung eines Metamodells. Bestellung, Zahlung,Beschreibung eines Anwendungsbereichs. prüfe_Zahlung

Anwendungsobjekte Ausprägung eines Modells Bestellung4712, prüfe_Zahlung(objekt9311)

18.12.2002 Modellierung WS 02/03 4

UML: Metamodell

Beispiele zu Modellen, Metamodellen usw.

Meta-Metamodell für konkret: OMG Meta Object Facility (MOF)objektorientierte Sprachen

Meta-MetamodellMetaklasse

Metaoperation

MetamodellCoad / Yourdon

MetamodellOMT

...

MetamodellMetamodell

UML

Modell Schwamminformations-system

Bestellung

Anwendungsobjekte Schwamminformationssystembei Schwämme Ekelbert mit dazugehörigen

Objekten

Schwamminformationssystembei OBI mit Objekten

18.12.2002 Modellierung WS 02/03 5

UML: Metamodell

UML - Abstrakte Syntax und der Versuch einer Semantikdefinition

[http://www.omg.org/cgi-bin/doc?formal/01-09-73/]

• 90 Metaklassen

• > 100 Metaassoziationen

• strukturiert in Komponenten

Modell-ManagementVerhalten

Grundlagen

18.12.2002 Modellierung WS 02/03 6

UML: Metamodell

UML - Metamodell

Das UML - Metamodell wird beschrieben durch:

• abstrakte Syntaxbeschrieben durch eine Untermenge von UML (solange fraglich,wie diese Untermenge nicht formal beschrieben ist!)

• Regeln zur syntaktischen Korrektheitbeschrieben mit Hilfe der OCL (Object Constraint Language) undmit Hilfe natürlicher Sprache

• Semantikbeschrieben mit Hilfe natürlicher Sprache

18.12.2002 Modellierung WS 02/03 7

UML: Metamodell

UML-Metamodell: Strukturierung der Komponente „Verhalten“

Verhalten Interaktion Anwendungs-fälle

Zustands-übergänge

gemeinsamesVerhalten

Verfeinerung

18.12.2002 Modellierung WS 02/03 8

UML: Metamodell

UML-Metamodell: Strukturierung der Komponente „Grundlagen“

Grundlagen Hilfselemente Kern Erweiterungs-mechanismen

Datentypen

Verfeinerung

18.12.2002 Modellierung WS 02/03 9

UML: Metamodell

UML-Metamodell: Grundlagen• Kern

– Basiskonzepte (wesentliche Metaklassen wie Klasse, Eigenschaft,Klassifizierer, Generalisierung, Assoziation).

– Beispiele:Abstrakte Konstrukte (nicht instantiierbar) Konkrete Konstrukte (instantiierbar)

Modellelement KlasseVerallgemeinerbares_Element AttributKlassifizierer 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 (innerhalbdes UML-Metamodells).

– „Kern“ ist gegliedert in „Grundgerüst“ und „Beziehungen“.

18.12.2002 Modellierung WS 02/03 10

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 wieAbhä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

18.12.2002 Modellierung WS 02/03 11

UML: Metamodell

UML - Metamodell: Grundidee der Komponente „Kern“

18.12.2002 Modellierung WS 02/03 12

UML: Metamodell

UML - Metamodell „Kern“ (Grundgerüst)Abstrakte Syntax

KlasseistAktiv:boolean

Klassi-fizierer

*

*

Spezifikation

VerallgemeinerbaresElement

istWurzel: BooleanistBlatt: Boolean

istAbstrakt: Boolean

StrukturellesElement

Stelligkeit: Stelligkeitänderbar: ÄnderbarkeitZielbereich: Bereichsart

EigenschaftBereich: Bereichsart

Sichtbarkeit: Sichtbarkeitsart

Operation

Spezifikation: uninterpretiertistploymorph: boolean

Parallelität: ParallelitätsartSpezifi-kation

Imple-mentation

1 *

Parameterdefault: expr

Art: ParameterRichtungArt

*parameters{ordered}

n

*

1 owner

feature{ordered}

*

Schnitt-stelle

Daten-typ

Realisierung

AttributInitialwert:

expr

Verhaltens-eigenschaft

istAnfrage: boolean

Methodebody:

Prozedurexpr.

Namens-raum

0..1

Constraintbody:

boolean expr.

Modellelement

Name: NameNamensraum

0..1

Zugehöriges Element

*

ElementOwnership

Sichtbarkeit: SichtbarkeitsartElement

constrained element

1..* {ordered} * constraint

18.12.2002 Modellierung WS 02/03 13

UML: Metamodell

UML - Metamodell „Kern“ (Beziehungen)Abstrakte Syntax

Kunde *

GeneralisierungDiskriminator:

Name

VerallgemeinerbaresElement

wie vorne

* 1

Generalisierung Untertyp* 1Spezialisierung Obertyp

Assoziationsendenavigierbar: booleangeordnet: boolean

Aggregation: AggregationsartStelligkeit: Stelligkeit

änderbar: ÄnderbarkeitsartZielbereich: Bereichsart

Typ Assoziationsende1 *Spezif. Teilnehmer* *

Assoziationsklasse

Assoziation

2..*{ordered} 1

Verbin-dung

Attribut

AssoziationsendeQualifizierer

0..1* {ordered}

Modellelement

Name: NameLieferant *Angebot *

Namens-raum

Anforderung *

AbhängigkeitBeschreibung:

string

Klassi-fizierer

Klasse

18.12.2002 Modellierung WS 02/03 14

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, inverse Assoziationen zu Kunde, LieferantAngebot

Namensraum: derjenige Namensraum, in dem das Modellelement vorkommt

18.12.2002 Modellierung WS 02/03 15

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)

18.12.2002 Modellierung WS 02/03 16

UML: Metamodell

Metaklassen der Komponente „Kern“ (Forts.)

Metaklasse „Assoziationsklasse“:eine Assoziation, die als Klasse dargestellt wird (deshalb ererbend von Assoziation und Klasse)

18.12.2002 Modellierung WS 02/03 17

UML: Metamodell

Metaklassen der Komponente „Kern“ (Forts.)

Metaklasse „Assoziationsende“:Endpunkt einer Assoziation. Über Assoziationsenden werden Assoziationen und Klassifiziererverknüpft.

Attribute der Metaklasse „Assoziationsende“:

AggregationMögliche Werte:

– keine Aggregation– Aggregation– Komposition

18.12.2002 Modellierung WS 02/03 18

UML: Metamodell

Metaklassen der Komponente „Kern“ (Forts.)

Attribute der Metaklasse „Assoziationsende“ (Forts.):

änderbarMö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)

geordnetnavigierbarStelligkeitZielbereich

Mögliche Werte:Instanz (Assoziation zielt auf Objekte)Klassifizierer (Assoziation zielt auf Klassen)

18.12.2002 Modellierung WS 02/03 19

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: eine geordnete Liste von Parametern, die zur Operation / Methode gehören

18.12.2002 Modellierung WS 02/03 20

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: 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 aufrufendenObjekts.

18.12.2002 Modellierung WS 02/03 21

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 implementiertwerden.

18.12.2002 Modellierung WS 02/03 22

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 dieVerfügbarkeit des Lieferanten erfordern.

Lieferant: Über die Assoziation sind die Modellelemente angeschlossen, deren Verfügbarkeit von dem Kunden gefordert werden.

18.12.2002 Modellierung WS 02/03 23

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: Mögliche Werte: Instanz gibt an, daß die Eigenschaft in jeder Ausprägung

des Klassifizierers gilt.Klassifizierer gibt an, daß die Eigenschaft nicht in jederAusprägung, sondern nur einmal pro Klassifizierer vorkommt

Sichtbarkeit Mögliche Werte: public Jeder Klassifizierer, der den Klassifizierer kennt, kannauf 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.

18.12.2002 Modellierung WS 02/03 24

UML: Metamodell

Metaklassen der Komponente „Kern“ (Forts.)Metaklasse „Verallgemeinerbares Element“ (abstrakte Metaklasse):

Ein verallgemeinerbares Element ist ein Modellelement, das in einer Generalisierungsbeziehungteilnehmen kann. Verallgemeinerbare Elemente sind hierarchisch angeordnet.

Attribute der Metaklasse „Verallgemeinerbares Element“:istAbstrakt: gibt an, ob ein verallgemeinerbares Element eine unvollständige Deklaration ist

oder nicht. Solange istAbstrakt=true, ist keine Instantiierung möglich.istBlatt: gibt an, daß keine weiteren Nachkommen vorkommen dürfenistWurzel: analog

Assoziationen der Metaklasse „Verallgemeinerbares Element“:Generalisierung: Über diese Assoziation wird ein verallgemeinerbares Elementan ein Objekt der Metaklasse „Generalisierung“ angeschlossen, das in der Generalisierung den Untertypen spielt.Spezialisierung: Über diese Assoziation wird ein verallgemeinertes Element anein Objekt der Metaklasse „Generalisierung“ angeschlossen, das in der Generalisierung den Obertypen spielt.

A

B

18.12.2002 Modellierung WS 02/03 25

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: (vgl. Verallgemeinerbares Element)

18.12.2002 Modellierung WS 02/03 26

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.

18.12.2002 Modellierung WS 02/03 27

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,

18.12.2002 Modellierung WS 02/03 28

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 !

istBlatt = trueAGeneralisierungvon A zu B

SpezialisierungUntertyp

GeneralisierungB

entsprichtnicht OK !

B AObertyp istBlatt = true

18.12.2002 Modellierung WS 02/03 29

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)

18.12.2002 Modellierung WS 02/03 30

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