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.

Nach den Vorberechnungen lassen wir den Benutzer nun eine Teilmenge der<br />

eben berechneten Menge port map possible auswählen. Durch das Beschränkungsprädikat<br />

erzwingen wir, dass die somit nutzerdefinierte Unifikationsrelation<br />

für die Schnittstelle, wie in Abschnitt 4.2 festgelegt, eine partielle ein-eindeutige<br />

Funktion darstellt. Wie dort beschrieben kann diese Forderung entfallen, was<br />

aber zur Folge hat, dass die Konstruktion der neuen Komponente entsprechend<br />

angepasst werden muss.<br />

context port_map:{pm_test:set port_map_possible |<br />

forall pm1:pm_test . forall pm2:pm_test . (<br />

(pm1.one = pm2.one) equiv (pm1.two = pm2.two)<br />

)<br />

} .<br />

Die Ein-Eindeutigkeitsforderung werden wir im Folgenden durch den Ausdruck<br />

call Unique(XYZmap) abkürzen, wobei XYZmap durch die jeweils gemeinte<br />

Unifikationsrelation ersetzt wird. Die Abkürzung dient hier nur der Übersichtlichkeit<br />

und ist im Programmlisting im Anhang als korrekter ODL-Ausdruck<br />

jeweils ausprogrammiert 1 .<br />

5.4.3 Dialog für Zustände<br />

Der Dialog für die Zust<strong>and</strong>sunifikation erlaubt dem Benutzer ohne Vorberechnungen<br />

die Vereinigung der State-Elemente festzulegen. Durch die Beschränkung<br />

fordern wir zum einen wieder die Ein-Eindeutigkeit, zum <strong>and</strong>eren die Tatsache,<br />

dass mindestens ein Zust<strong>and</strong> der beiden Automaten unifiziert sein muss,<br />

damit im Ergebnis zumindest ein zusammenhängender Automat entsteht.<br />

context state_map:{<br />

sm_test:set (<br />

one:(component_pair.one.Automaton.State.SubStates),<br />

two:(component_pair.two.Automaton.State.SubStates)<br />

) |<br />

call Unique(state_map) <strong>and</strong> exists sm0:sm_test . true<br />

} .<br />

Wir haben an dieser Stelle von Einbeziehung der internen Abhängigkeit bei<br />

Zuständen, nämlich die Unterscheidung nach der Art des Zust<strong>and</strong>es (Start-,<br />

Zwischen- und Endzust<strong>and</strong>), abgesehen.<br />

5.4.4 Berechnung der Ein-/Ausgabevereinigungen<br />

Die Berechnung der Unifikationsrelationen für Input und Output realisieren wir<br />

in dem wir die externen Abhängigkeiten zu Transition und Port nutzen. Das<br />

Codebeispiel zeigt den Fall der Eingabeausdrücke.<br />

exists input_map: lfp FP3 set fp3_it:(one:Input, two:Input)<br />

with (<br />

exists tm_fp3:transition_map . (<br />

1 ODL fehlen zur Zeit noch die Mechanismen und Konzepte polymorphe Prädikate für<br />

Eindeutigkeit, Bijektivität, etc. zu formulieren<br />

49

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!