08.03.2014 Aufrufe

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

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.

<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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!