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.
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