03.02.2014 Aufrufe

Spezifikationsmodule - Software and Systems Engineering - TUM

Spezifikationsmodule - Software and Systems Engineering - TUM

Spezifikationsmodule - Software and Systems Engineering - TUM

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

die Konstruktoren (Constructor) und den Selektor (Selector). Die Objekte in<br />

der rechten Hälfte bilden die interne Typstruktur des Selektors.<br />

:DataDef<br />

:AbstractType<br />

:AbstractType<br />

Name = "MySignal"<br />

TConst<br />

Name = "MySignal"<br />

Name = "Int"<br />

TArgs [0]<br />

TArgs [1]<br />

Constructors [0] Constructors [1]<br />

:Constructor<br />

Name = "Absent"<br />

:Constructor<br />

Name = "Present"<br />

Selectors [0]<br />

:Selector<br />

Type<br />

:TAppl<br />

THead<br />

:AbstractType<br />

Name = "value"<br />

Name = "->"<br />

Abbildung 3.1: Objektdiagramm einer einfachen Typdefinition<br />

Dieser Typstruktur von Selektoren müssen wir besondere Aufmerksamkeit<br />

widmen. Selektoren stellen im eigentlichen Sinne Funktionen dar, die aus einer<br />

Instanz des Datentyps die entsprechende Teilinformation extrahiert. Der im Beispiel<br />

verwendet Selektor value hat demzufolge nicht den Typ Int, wie Definitionssyntax<br />

nahelegt, sondern den Funktionsapplikationstyp MySignal -> Int. Im<br />

Objektdiagramm findet sich dieser Typ als TAppl-Objekt mit der ->-Funktion als<br />

angew<strong>and</strong>te Funktion (THead) und den entsprechenden AbstractType-Objekten<br />

als Parameter (TArgs) wieder.<br />

Abbildung 3.2 zeigt den hier wesentlichen Ausschnitt aus dem AutoFocus 2-<br />

Metamodell. Neben den organisatorischen Klassen, DTD und DTDModule, finden<br />

sich sämtliche im Objektdiagramm der Datentypdefinition vorkommenden Klassen.<br />

Die Oberklassen sind nur der Vollständigkeit halber angegeben. ODL musste<br />

im Verlauf dieser Diplomarbeit erweitert werden, um mit Vererbungsbeziehungen<br />

im Metamodell korrekt umgehen zu können.<br />

3.1.2 Sonderbeh<strong>and</strong>lung von Selektortypen<br />

ODL ist bisher nur auf ungeordneten Mengen definiert und kann daher im Prinzip<br />

mit Assoziationen, die im Metamodell den Stereotyp haben,<br />

nicht mehr anfangen als mit herkömmlichen Assoziationen. Allerdings muss bei<br />

den Typen der Selektoren die Argumentliste korrekt interpretiert werden. Für<br />

einen Typvergleich müssen wir aus der Argumentliste der Funktionsapplikation<br />

den Ergebnistyp, also das zweite Argument der geordneten Relation, extrahieren.<br />

Hierfür wurde ODL um die Funktion indexOf(listElem, baseElem,<br />

relName) erweitert. listElem ist das assoziierte Element, dessen Index wir bestimmen<br />

wollen, baseElem das Ausgangselement und relName der Name der zu<br />

durchsuchenden Relation. Diese Erweiterung, die sich auf das in [Höl05] eingeführte<br />

Funktionsframework stützt, war die einfachste Alternative den Spezialfall<br />

geordneter Assoziationen zu h<strong>and</strong>haben.<br />

Um die Überprüfung eines Selectors auf einen bestimmten Ergebnistyp zu<br />

erleichtern, verwenden wir das folgende benamte Prädikat. Es nimmt mit Hilfe<br />

21

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!