Spezifikationsmodule - Software and Systems Engineering - TUM
Spezifikationsmodule - Software and Systems Engineering - TUM
Spezifikationsmodule - Software and Systems Engineering - TUM
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Kapitel 4<br />
Spezifikationsvereinigung<br />
aus theoretischer Sicht<br />
Nachdem wir in Kapitel 3 einen ersten Eindruck gewonnen haben, wie mit ODL<br />
das Teilproblem der Typunifikation gelöst wird, wenden wir uns nun wieder<br />
dem Gesamtproblem der Spezifikationsvereinigung zu. In diesem Kapitel werden<br />
wir hierfür ein Lösungskonzept entwickeln und formal fundieren. Wir erläutern<br />
zunächst geeignete Lösungsstrukturen. Über diesen werden wir, ausgehend vom<br />
AutoFocus 2-Metamodellstruktur, Prädikate definieren, welche uns die Lösung<br />
des Vereinigungsproblems als Variablenbelegungsproblem ermöglichen. Eine Betrachtung<br />
des notwendigen Berechnungsaufw<strong>and</strong>es des beschriebenen Verfahrens<br />
schließt dieses Kapitel ab.<br />
Die hier gezeigte theoretische Fundierung ist für das Anwendungsbeispiel aus<br />
Kapitel 2 um viele Modellelemente vereinfacht worden. In Anhang A finden sich<br />
die für das Anwendungsbeispiel relevanten, zusätzlichen Theorieüberlegungen,<br />
die aber im Wesentlichen den hier beschriebenen entsprechen.<br />
4.1 Definition des Lösungsraumes<br />
Im Einführungsbeispiel (siehe Kapitel 3) zu ODL haben wir gesehen, wie die Typunifikation<br />
realisiert wurde. Das Problem der Spezifikationsvereinigung werden<br />
wir ebenfalls mit Hilfe eines der Unifikation ähnlichen Ablaufs lösen.<br />
In Abschnitt 3.4 haben wir gesehen, wie die Typvereinigung mit ODL interaktiv<br />
durchgeführt wird. Die Eingabe des Benutzers waren dabei Mengen<br />
von 2-Tupeln über den Modellelementmengen der Datendefinitionen DataDef,<br />
Konstruktoren Constructor und Selektoren Selector. Verallgemeinern wir diese<br />
Strukturen, so kommen wir zu Relationen von zu unifizierenden Modellelementen,<br />
die wir im folgenden als Unifikationsrelationen bezeichnen.<br />
Wir erhalten jeweils eine Unifikationsrelation für jedes Metamodellelement,<br />
also für jede Klasse von Modellelementen. Für unser Beispiel sind dies die folgenden<br />
Relationen:<br />
componentMap ∈ P( Component × Component )<br />
portMap ∈ P( P ort × P ort )<br />
32