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.
deten Quellstrukturen identisch zum Vorgehen beim Kopieren einer Komponentenhierarchie,<br />
wie sie in [Höl05] entwickelt wurde.<br />
Jede Instanz einer Unifikationsrelation definiert für uns eine ein-eindeutige<br />
Abbildung zwischen zu unifzierenden Elementmengen. Für konstruieren daher<br />
für jedes Element einer konkreten Unifikationsrelation ein entsprechendes neues<br />
Modellelement, wobei wir uns zusätzlich eine Tabelle erstellen, die das unifizierte<br />
Tupel mit dem neuen Element verknüpft.<br />
Anschließend analysieren wir für jede Modellelementklasse die relevanten<br />
Assoziationen, wie sie in den Ausgangsspezifikationen existieren, und bauen die<br />
entsprechende Struktur mit den neu erzeugten Elementen nach.<br />
Das Konstruktionsverfahren muss dabei auch beachten, dass es nicht nur<br />
unifzierte Modellelemente, sondern auch kopierte Elemente gibt. Der Strukturaufbau<br />
wird diese Unterscheidung entsprechend beachten. Wir konstruieren<br />
hierfür ebenfalls eine Tabelle, die die kopierten Elemente in Beziehung zu neuen<br />
Elementen setzt. Wir führen dies in Abschnitt 5.5.5 vor.<br />
Bezieht sich beispielsweise eine Eingabe im Quellmodell auf einen unifzierten<br />
Port, so verknüpfen wir das das neue Eingabeelement mit dem entsprechenden<br />
neuen Portelement aus der oben als erstes genannten Tabelle, <strong>and</strong>ernfalls suchen<br />
wir uns das Portelement aus der Tabelle für kopierte Portelemente.<br />
5.5.2 Erzeugung neuer Modellelemente mit ODL<br />
Zur Erzeugung von neuen Modellelementen stellt die ODL im Wesentlichen zwei<br />
Mechanismen bereit. Einzelne neue Elemente können durch den Typmodifikator<br />
new in Verbindung mit einem Existenzquantor erzeugt werden. Ein Beispiel<br />
hierfür sehen wir gleich, wenn wir für die beiden zu vereinigenden Komponenten<br />
eine neue erzeugen werden. Neu erzeugte Elemente müssen mit entsprechenden<br />
”result has”-Anweisungen an das bestehende Modell gekoppelt werden, da sie<br />
sonst am Ende der Ausführung wieder verworfen werden 2 .<br />
Das Erzeugen von einzelnen Modellelementen ist allerdings häufig nicht ausreichend<br />
um komplexere Modellstrukturen anzulegen. Im Beispiel ist dies der<br />
Fall, wenn wir die Eingabeausdrücke (Input) konstruieren. Wir benötigen dazu<br />
gleichzeitig Zugriff auf alle neu erzeugten Schnittstellenelemente (Port) und alle<br />
neu erzeugten Konstruktoren (Constructor). Ein ähnlich gelagerter Fall wurde<br />
bereist in [Höl05] erkannt und durch den speziellen ODL-Typ map für Abbildungen<br />
gelöst.<br />
Der Abbildungstyp map dient uns dazu, eine Zuordnungstabelle zu erstellen,<br />
die jeweils einem Element einer Unifikationsrelation bijektiv ein neu erzeugtes<br />
Element gleicher Modellelementklasse zuordnet. Wir haben damit gleichzeitig<br />
Zugriff auf alle neuen Elemente diesen Typs und können sie über die Bijektivität<br />
der Abbilung auch eindeutig identifizieren. Die genaue Funktionsweise des<br />
Abbildungstyps in ODL wird in [Höl05] ausführlich erläutert. Im übernächsten<br />
Abschnitt zeigen wir den Einsatz von map anh<strong>and</strong> der Konstruktion der Schnittstellenobjekte.<br />
2 Sie gelten wie bestehende Elemente, deren Assoziationen mit result not has entfernt<br />
wurden, als gelöscht.<br />
54