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.

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!