Formale Methoden in der Praxis - Institute of Software Technology
Formale Methoden in der Praxis - Institute of Software Technology
Formale Methoden in der Praxis - Institute of Software Technology
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>in</strong> dieser Situation? Grob gesprochen ist die Implementierung korrekt, wenn die <strong>in</strong> <strong>der</strong> Implementierung<br />
def<strong>in</strong>ierten Funktionen die Axiome <strong>der</strong> algebraischen Spezifikation erfüllen. Das ist e<strong>in</strong>e<br />
Richtung <strong>der</strong> Äquivalenz.<br />
Ist die Implementierung im gegebenen Fall spezifischer als die algebraische Spezifikation, d.h.<br />
lassen sich aus <strong>der</strong> Implementierung Eigenschaften ableiten, die aus <strong>der</strong> algebraischen Def<strong>in</strong>ition<br />
nicht ableitbar s<strong>in</strong>d? Im allgeme<strong>in</strong>en ist dies bei Implementierungen <strong>der</strong> Fall, weswegen diese als<br />
Def<strong>in</strong>ition normalerweise nicht geeignet s<strong>in</strong>d. In unserem speziellen Fall kann aber gezeigt werden,<br />
daß die Def<strong>in</strong>ition auf Grund von Listen ke<strong>in</strong>e zusätzlichen Eigenschaften impliziert, d.h. die beiden<br />
Def<strong>in</strong>itionen von Stacks s<strong>in</strong>d äquivalent. Welche man wählt ist Geschmacksache.<br />
Listen wurden als bekannt vorausgesetzt. Wie aber s<strong>in</strong>d nun Listen def<strong>in</strong>iert? Um mit den<br />
expliziten Def<strong>in</strong>itionen <strong>der</strong> Stackfunktionen zu manipulieren, braucht man algebraische Eigenschaften<br />
<strong>der</strong> Listenfunktionen. E<strong>in</strong>e Möglichkeit ist nun, die Listenfunktionen selbst algebraisch<br />
zu def<strong>in</strong>ieren. Das ist e<strong>in</strong>e recht ökonomische Strategie. Listen und e<strong>in</strong>e Handvoll von an<strong>der</strong>en Bereichen<br />
haben sich als wichtige Grundlage für Spezifikationen herausgestellt. Ökonomisch deshalb,<br />
weil die algebraischen Eigenschaften dieser grundlegenden Bereiche <strong>in</strong> vielen auf diesen Bereichen<br />
aufbauenden Spezifikationen verwendet werden können.<br />
Die Bereiche, die sich für Spezifikationen als grundlegend herausgestellt haben, s<strong>in</strong>d:<br />
• Mengen<br />
• Listen<br />
• Maps (f<strong>in</strong>ite Abbildungen)<br />
• Produkte (Tupel)<br />
• Zusammengesetzte Objekte (Records)<br />
Dieser modell-orientierte Ansatz hat den Vorteil gegenüber algebraischer <strong>Methoden</strong>, daß die resultierenden<br />
Theorien wi<strong>der</strong>spruchsfrei s<strong>in</strong>d. Daher komb<strong>in</strong>ierte man <strong>in</strong> RAISE [19] beide Ansätze.<br />
In [6] wird gezeigt, daß dies auch <strong>in</strong> VDM möglich ist.<br />
2.2.4 Kontrakte<br />
E<strong>in</strong>e Spezifikation von kommunizierenden Prozessen kann als Kontrakt zwischen den Prozessen<br />
aufgefaßt werden. Der Kontrakt def<strong>in</strong>iert die Aufgaben <strong>der</strong> ’Partner’ sowie <strong>der</strong>en Synchronisation.<br />
In <strong>der</strong> Prozeßalgebra CSP (Communication Sequential Processes) [21] werden die e<strong>in</strong>zelnen<br />
Prozesse durch die Ereignisse, auf welche sie reagieren (können), und den Reaktionen selbst def<strong>in</strong>iert.<br />
Aus den formalen Def<strong>in</strong>itionen <strong>der</strong> e<strong>in</strong>zelnen Prozesse, ist es möglich das Gesamtverhalten<br />
des Systems abzuleiten.<br />
Beispiel: Automat<br />
E<strong>in</strong> e<strong>in</strong>facher Kaffeeautomat kann <strong>in</strong> CSP wie folgt def<strong>in</strong>iert werden:<br />
Automat = µX .fünfer → (kaffee → X | tee → X )<br />
Der Automat kann nach dem E<strong>in</strong>wurf e<strong>in</strong>er 5-Schill<strong>in</strong>g-Münze Kaffee o<strong>der</strong> Tee ausgeben. Danach<br />
wartet er wie<strong>der</strong> auf das Ereignis e<strong>in</strong>es Münze<strong>in</strong>wurfs.<br />
Nun kann <strong>der</strong> Benutzer selbst als Prozeß modelliert werden. So ist z.B. das Verhalten e<strong>in</strong>es<br />
gierigen Benutzers, dadurch def<strong>in</strong>iert, daß er auch e<strong>in</strong>en Kaffee o<strong>der</strong> Tee, ohne ihn zu bezahlen,<br />
annehmen würde. Wirft er jedoch e<strong>in</strong>en Fünfer e<strong>in</strong>, so besteht er auf e<strong>in</strong>en Kaffee:<br />
Benutzer = (kaffee → Benutzer<br />
| tee → Benutzer<br />
| fünfer → kaffee → Benutzer)<br />
6