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

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

esult has Name(mk_prt.copy,<br />

concat(mk_prt.orig.one.Name, mk_prt.orig.two.Name)) <strong>and</strong><br />

/* set direction attribute */<br />

exists mk_nd:new Direction . (<br />

result has Direction(mk_prt.copy, mk_nd) <strong>and</strong><br />

result has<br />

IsEntry(mk_nd, mk_prt.orig.one.Direction.IsEntry)<br />

) <strong>and</strong><br />

/* set port type */<br />

exists mk_prt_mt:new MIFType . (<br />

result has DefinedType(mk_prt.copy, mk_prt_mt) <strong>and</strong><br />

exists ntm_elem_port:new_tconst_map . (<br />

mk_prt.orig.one.DefinedType.Model =<br />

ntm_elem_port.orig.one.TConst <strong>and</strong><br />

mk_prt.orig.two.DefinedType.Model =<br />

ntm_elem_port.orig.two.TConst <strong>and</strong><br />

result has Model(mk_prt_mt, ntm_elem_port.copy)<br />

)))) .<br />

Hier sehen wir auch, dass bei vielen Modellelementen zusätzliche Elemente<br />

erzeugt werden müssen, die meist nur als Kapselobjekte für primitive Datentypen<br />

(Direction) oder zur Flexibilisierung der Modellierungsfähigkeiten (MIFType<br />

für unvollständige Modelle) von AutoFocus 2 benutzt werden.<br />

5.5.5 Konstruktion nicht-unifizierter Elemente<br />

Da die Unifikationsrelationen hier partielle Funktionen sein dürfen, müssen wir<br />

nicht-unifizierte Elemente der jeweiligen Modellelementklasse ebenfalls beh<strong>and</strong>eln.<br />

Für sie erstellen wir jeweils eine Kopie und verknüpfen sie entsprechend<br />

mit den restlichen neuen Elementen. Hier zeigen wir die Umsetzung wieder am<br />

Beispiel der Port-Elemente.<br />

Wir konstruieren dazu zunächst die Menge der nicht-unifizierten Port-Elemente.<br />

Sie besteht aus allen Elementen, die zu einer der beiden Komponenten<br />

gehören und nicht in der portmap-Menge auftauchen.<br />

exists copy_port_set: lfp FP7 set fp7_it:Port<br />

with (<br />

(<br />

fp7_it.Component = component_pair.one or<br />

fp7_it.Component = component_pair.two<br />

) <strong>and</strong><br />

neg exists sm_fp7:port_map . (<br />

sm_fp7.one = fp7_it or<br />

sm_fp7.two = fp7_it<br />

)<br />

).<br />

Für diese Menge erzeugen, wie eben, eine bijektive Abbildung auf neue Port-<br />

Elemente und bauen für diese die Assoziationen mit einer Subroutine auf, die<br />

56

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!