Spezifikationsmodule - Software and Systems Engineering - TUM
Spezifikationsmodule - Software and Systems Engineering - TUM
Spezifikationsmodule - Software and Systems Engineering - TUM
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