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

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Formale</strong> <strong>Methoden</strong> <strong>in</strong> <strong>der</strong> <strong>Praxis</strong><br />

1. Österreichischer ISA-EUNET Workshop, Wien<br />

Bernhard K. Aichernig und Peter Lucas<br />

Ord<strong>in</strong>ariat für S<strong>of</strong>twaretechnologie, TU-Graz,<br />

e-mail: {aichernig | lucas}@ist.tu-graz.ac.at<br />

28.4.1999<br />

1 Vorbemerkungen<br />

Im folgenden wird <strong>der</strong> Versuch unternommen, e<strong>in</strong>e kurze E<strong>in</strong>führung <strong>in</strong> jene S<strong>of</strong>twaretechniken zu<br />

geben, die heute unter dem Begriff formale <strong>Methoden</strong> subsummiert werden. Es geht, grob gesprochen,<br />

um den E<strong>in</strong>satz mathematischer <strong>Methoden</strong> <strong>in</strong> <strong>der</strong> S<strong>of</strong>twareentwicklung. Hierbei konzentrieren<br />

wir uns auf jene Techniken, die e<strong>in</strong>e Reife erlangt haben, um <strong>in</strong> <strong>der</strong> Industrie angewandt zu werden.<br />

Beispiele <strong>in</strong>dustrieller Projekte sollen die verschiedenen Anwendungsmöglichkeiten illustrieren.<br />

Die Idee, mathematische <strong>Methoden</strong> im S<strong>of</strong>tware Eng<strong>in</strong>eer<strong>in</strong>g e<strong>in</strong>zusetzen, ist we<strong>der</strong> neu noch<br />

beson<strong>der</strong>s erstaunlich. Alle Ingenieursdiszipl<strong>in</strong>en bauen wesentlich auf mathematischen <strong>Methoden</strong><br />

auf, man denke nur an die uns naheliegende Elektrotechnik, im weiteren auch Masch<strong>in</strong>enbau,<br />

Baustatik, usw. Der Term S<strong>of</strong>tware Eng<strong>in</strong>eer<strong>in</strong>g taucht erstmals 1968 als Titel e<strong>in</strong>er NATO-<br />

Konferenz auf und signalisiert den Wunsch, die S<strong>of</strong>twareentwicklung als Ingenieursdiszipl<strong>in</strong> zu<br />

sehen und auf e<strong>in</strong>e systematische Basis zu stellen [31] (siehe auch [8]).<br />

Der Ort <strong>der</strong> Präsentation gibt Anlaß zu e<strong>in</strong>er geschichtlichen Anmerkung, versehen mit e<strong>in</strong>em<br />

lokal-patriotischen Kolorit. Wesentliche Grundlagen, die sich heute <strong>in</strong> vielen formalen <strong>Methoden</strong><br />

wie<strong>der</strong>f<strong>in</strong>den, wurden <strong>in</strong> den späten 60-er Jahren im IBM Labor <strong>in</strong> Wien erarbeitet. Die entstandene<br />

Methode wurde unter dem Namen VDM (Vienna Development Method) bekannt. Das ist aber<br />

lange her. Die Methode hat e<strong>in</strong>ige Verbreitung gefunden und wurde <strong>in</strong>sbeson<strong>der</strong>e an <strong>der</strong> Manchester<br />

University <strong>in</strong> England und an <strong>der</strong> Technischen Universität Dänemark weiterentwickelt. E<strong>in</strong>e<br />

recht starke Gruppe ist <strong>der</strong>zeit auch am Tr<strong>in</strong>ity College <strong>in</strong> Irland tätig. Vor e<strong>in</strong>igen Jahren haben<br />

wir das Thema auch an <strong>der</strong> TU Graz aufgegriffen und so die Technologie wie<strong>der</strong> nach Österreich<br />

zurückimportiert.<br />

Bevor wir auf die <strong>Praxis</strong> e<strong>in</strong>gehen, ist es jedoch notwendig, e<strong>in</strong>en Überblick über die e<strong>in</strong>zelnen<br />

Techniken zu erlangen.<br />

2 <strong>Formale</strong> <strong>Methoden</strong><br />

2.1 Problem <strong>der</strong> Spezifikation<br />

E<strong>in</strong> sehr häufig verwendetes Klischee, das sich praktisch durch die gesamte Literatur des S<strong>of</strong>tware<br />

Eng<strong>in</strong>eer<strong>in</strong>g zieht, lautet: Die Spezifikation sagt, was die S<strong>of</strong>tware tun soll, wie die Funktionalität<br />

erreicht wird, ist Aufgabe <strong>der</strong> Implementierung.<br />

Das entsprechende Zitat aus ESA Standard ist:<br />

“The SR phase is the analysis phase <strong>of</strong> a s<strong>of</strong>tware project. A vital part <strong>of</strong> the analysis activity<br />

is the construction <strong>of</strong> a model describ<strong>in</strong>g what the s<strong>of</strong>tware has to do, and not how to do it.” (SR<br />

steht für “S<strong>of</strong>tware Requirement” Phase.)<br />

1


Aber wie macht man das? Wie beschreibt man die Funktionsweise, ohne gleichzeitig zu sagen,<br />

wie diese realisiert wird? Das ist ke<strong>in</strong>e leichte Aufgabe. Die <strong>Methoden</strong> müssen gelernt und geübt<br />

werden. Viele S<strong>of</strong>twarespezialisten s<strong>in</strong>d dieser Aufgabe nicht gewachsen.<br />

Episoden: “Wie kann man etwas beschreiben, das man noch nicht hat.”<br />

Dieser Problematik muß man sich stellen, unabhängig davon, ob man formale <strong>Methoden</strong><br />

benützt o<strong>der</strong> nicht. Aber die mathematischen Grundlagen helfen, die Alternativen zu sehen, um<br />

die Aufgabe zu lösen.<br />

2.2 Spezifikationsmethoden<br />

Es gibt mehr als e<strong>in</strong>e Möglichkeit, e<strong>in</strong> Programm zu spezifizieren, ohne die Details e<strong>in</strong>er Implementierung<br />

preiszugeben.<br />

Für die Zwecke dieser E<strong>in</strong>führung werden vier <strong>Methoden</strong> unterschieden.<br />

1. Spezifikation mittels Vor- und Nachbed<strong>in</strong>gungen.<br />

2. Algebraische Spezifikation.<br />

3. Explizite Spezifikationen.<br />

4. Kontrakte.<br />

Vor- und Nachbed<strong>in</strong>gungen sagen, welche Programme als Lösung akzeptabel s<strong>in</strong>d.<br />

Mit algebraischen Spezifikationen werden abstrakte Datentypen o<strong>der</strong> Objektklassen spezifiziert,<br />

<strong>in</strong>dem die Relation <strong>der</strong> Funktionen bzw. <strong>Methoden</strong> untere<strong>in</strong>an<strong>der</strong> festgelegt werden.<br />

Explizite Spezifikationen def<strong>in</strong>ieren Funktionen o<strong>der</strong> <strong>Methoden</strong> direkt mittels gegebener, aber<br />

möglichst abstrakter Datentypen.<br />

Kontrakte spezifizieren die wechselseitigen Anfor<strong>der</strong>ungen paralleler Prozesse, sowie <strong>der</strong>en Verhalten.<br />

Wird <strong>der</strong> Benützer als e<strong>in</strong> Prozeß gesehen, so kann man auch Spezifikationen mit Vor- und<br />

Nachbed<strong>in</strong>gungen als Kontrakte bezeichnen.<br />

Die folgenden Beispiele illustrieren <strong>der</strong> Reihe nach die erwähnten <strong>Methoden</strong>.<br />

2.2.1 Def<strong>in</strong>ition durch Vor- und Nachbed<strong>in</strong>gungen<br />

Beispiel: Quadratwurzel<br />

Es soll e<strong>in</strong> Programm sqrt spezifiziert werden, das die Quadratwurzel e<strong>in</strong>er gegebenen reellen Zahl<br />

x liefert. Wir erleichtern uns die Aufgabe, <strong>in</strong>dem wir die E<strong>in</strong>- und Ausgabebereiche festlegen, und<br />

dem Resultat e<strong>in</strong>en Namen geben.<br />

sqrt (x : R) s : R<br />

Die Aufgabe besteht nun dar<strong>in</strong>, s <strong>in</strong> Relation zu x ausreichend festzulegen. Die Charakterisierung<br />

des Resultats soll möglichst e<strong>in</strong>fach und e<strong>in</strong>leuchtend se<strong>in</strong>. Es ist nicht <strong>der</strong> Algorithmus<br />

gefragt, son<strong>der</strong>n nur e<strong>in</strong> Kriterium, das entscheidet, ob e<strong>in</strong> angebotenes s e<strong>in</strong>e Lösung ist.<br />

Aus dem elementaren Mathematikunterricht er<strong>in</strong>nern wir uns an die “Probe”, die nach gewissen<br />

Rechenoperationen zu machen war. Als Probe zur Berechnung <strong>der</strong> Quadratwurzel wird das<br />

Resultat quadriert, das, wenn richtig gerechnet wurde, gleich dem Argument se<strong>in</strong> muß. Damit<br />

haben wir das gesuchte Kriterium für die Lösung. Weil diese Bed<strong>in</strong>gung nach <strong>der</strong> Ausführung des<br />

Programms gelten soll, nennt man sie Nachbed<strong>in</strong>gung (post-condition). Man schreibt:<br />

sqrt (x : R) s : R<br />

post s × s = x<br />

Die Annahmen, die man bezüglich <strong>der</strong> Inputs zu e<strong>in</strong>em Programm trifft, nennt man Vorbed<strong>in</strong>gung<br />

(pre-condition). Falls das Resultat im Bereich <strong>der</strong> reellen Zahlen liegen soll, muß die<br />

Vorbed<strong>in</strong>gung den Argumentbereich auf die positiven reellen Zahlen e<strong>in</strong>schränken.<br />

2


sqrt (x : R) s : R<br />

pre x ≥ 0<br />

post s × s = x<br />

Diese Spezifikation läßt jeweils zwei Lösungen zu, e<strong>in</strong>e positive und e<strong>in</strong>e negative. Wie vorh<strong>in</strong><br />

ausgeführt ist dies nicht von vornehere<strong>in</strong> abzulehnen. Im Falle <strong>der</strong> Quadratwurzel soll aber doch<br />

e<strong>in</strong>e bestimmte Lösung ausgewählt werden, und zwar die positive Lösung. Die Nachbed<strong>in</strong>gung ist<br />

also zu ergänzen:<br />

sqrt (x : R) s : R<br />

pre x ≥ 0<br />

post s × s = x ∧ s ≥ 0<br />

Die Spezifikation sollte realistisch se<strong>in</strong>. Im Computer stehen uns die reellen Zahlen nur näherungsweise<br />

zur Verfügung. Die Probe wird also nicht exakt aufgehen. Es ist daher notwendig die<br />

Genauigkeit <strong>der</strong> gewünschten Lösung zu charakterisieren.<br />

sqrt (x : R) s : R<br />

pre x ≥ 0<br />

post abs (x-s × s) < ɛ × x ∧ s ≥ 0<br />

Damit ersche<strong>in</strong>t die Funktion des Programms sqrt ausreichend spezifiziert. Die verwendete Notation<br />

ist VDM-SL, die ISO-standardisierte Spezifikationssprache von VDM [26, 28]. E<strong>in</strong>e ähnliche<br />

Notation verwenden die <strong>Methoden</strong> Z [34] und B [1].<br />

2.2.2 Algebraische Spezifikationen<br />

In den vorherigen Beispielen hatten wir es mit sehr konkreten Bereichen zu tun, nämlich den<br />

reellen bzw. den ganzen Zahlen. Gewisse Operationen, z.B. die Addition und Multiplikation waren<br />

als bekannt vorausgesetzt und <strong>in</strong> <strong>der</strong> Spezifikation verwendet.<br />

Algebraische Spezifikationen werden nach dem Muster e<strong>in</strong>er abstrakten Algebra gebildet, deshalb<br />

auch <strong>der</strong> Name. Algebraische Spezifikationen postulieren e<strong>in</strong>en o<strong>der</strong> mehrere Grundbereiche<br />

auch Sorten genannt (sorts), sowie e<strong>in</strong> o<strong>der</strong> mehrere Funktionsnamen und <strong>der</strong>en “Typ”, <strong>in</strong> <strong>der</strong> üblichen<br />

Term<strong>in</strong>ologie <strong>der</strong> Programmierung. Man nennt dies auch die Signatur. Das bedeutet im E<strong>in</strong>zelnen:<br />

für jeden Funktionsnamen wird die Anzahl <strong>der</strong> Argumente (arity) festgelegt und Argumentund<br />

Funktionsbereich def<strong>in</strong>iert. Die Bedeutung <strong>der</strong> Funktionsnamen wird durch Gleichungen charakterisiert,<br />

die die Beziehung <strong>der</strong> Funktionen untere<strong>in</strong>an<strong>der</strong> festlegen. Diese Gleichungen nennt<br />

man auch Axiome.<br />

E<strong>in</strong>e algebraische Spezifikation besteht also aus drei Teilen.<br />

1. Sorten (Grundbereiche)<br />

2. Signatur (Funktionsnamen und <strong>der</strong>en Typen)<br />

3. Axiome<br />

Als Beispiel wird e<strong>in</strong> Objektbereich (Stacks) betrachtet, <strong>der</strong> nicht <strong>in</strong> dem Maße vertraut ist<br />

wie die Zahlenbereiche.<br />

Beispiel: Stack<br />

Anfor<strong>der</strong>ungen, <strong>in</strong>formale Spezifikation<br />

Es wird e<strong>in</strong>e Menge von Elementen, Elem, angenommen, aus denen Stacks aufgebaut werden.<br />

E<strong>in</strong> Stack ist e<strong>in</strong>e Sammlung von Elementen. Wird <strong>der</strong> Begriff Stack im herkömmlichen technischen<br />

S<strong>in</strong>n <strong>in</strong>terpretiert, s<strong>in</strong>d folgende Eigenschaften wesentlich:<br />

3


1. Das oberste Element e<strong>in</strong>es Stacks muß zugreifbar se<strong>in</strong>.<br />

2. Es muß möglich se<strong>in</strong>, e<strong>in</strong> neues Element als oberstes Element h<strong>in</strong>zuzufügen.<br />

3. Es muß möglich se<strong>in</strong>, das oberste Element zu entfernen.<br />

Wir präzisieren nun die <strong>in</strong>formale Beschreibung mit Hilfe e<strong>in</strong>er algebraischen Spezifikation.<br />

Wie <strong>in</strong> <strong>der</strong> <strong>in</strong>formalen Beschreibung werden zwei Grundbereiche postuliert.<br />

Grundbereiche: Elem, Stack<br />

Aus <strong>der</strong> Beschreibung s<strong>in</strong>d auch die gewünschten Operationen relativ leicht abzulesen. Für<br />

jede <strong>der</strong> Operationen erf<strong>in</strong>den wir e<strong>in</strong>en Funktionsnamen.<br />

Funktionsname<br />

top<br />

push<br />

pop<br />

Bedeutung, <strong>in</strong>formal<br />

Zugriff auf das oberste Element.<br />

H<strong>in</strong>zufügen e<strong>in</strong>es Elementes.<br />

Entfernen des obersten Elementes.<br />

Diese drei Operationen reichen nicht ganz. Sie setzen alle voraus, daß schon e<strong>in</strong> Stack vorhanden<br />

ist. Es ist also nötig, wenigstens e<strong>in</strong>en Stack e<strong>in</strong>zuführen, mit dem man beg<strong>in</strong>nen kann. Das<br />

ist <strong>der</strong> leere Stack: empty.<br />

Dieser e<strong>in</strong>e Stack hat ke<strong>in</strong> oberstes Element. Es wird daher im folgenden zu beachten se<strong>in</strong>, daß<br />

we<strong>der</strong> die Funktion top noch die Funktion pop auf empty anwendbar s<strong>in</strong>d.<br />

Mit dieser Analyse <strong>der</strong> Situation kann nun die Signatur des Objektbereiches festgelegt werden.<br />

Konstante im allgeme<strong>in</strong>en und empty im beson<strong>der</strong>en können als parameterlose Funktionen<br />

betrachtet werden.<br />

Signatur:<br />

empty : Stack<br />

top : Stack ˜→ Elem,<br />

push : Stack × Elem → Stack,<br />

pop : Stack ˜→ Stack<br />

Die Funktionen top und pop s<strong>in</strong>d partielle Funktionen, dies ist <strong>in</strong> <strong>der</strong> Notation durch e<strong>in</strong>e Tilde<br />

über dem Pfeil angedeutet. Partielle Funktionen s<strong>in</strong>d Funktionen, die nicht für alle Elemente des<br />

Argumentbereiches def<strong>in</strong>iert s<strong>in</strong>d. Im konkreten Fall s<strong>in</strong>d top und pop nicht für den leeren Stack<br />

def<strong>in</strong>iert.<br />

Die Funktion push ist für alle Argumente def<strong>in</strong>iert.<br />

Die Beziehungen <strong>der</strong> Funktionen s<strong>in</strong>d nun durch folgende e<strong>in</strong>fache Gleichungen (Axiome) def<strong>in</strong>iert.<br />

Axiome:<br />

top(push(s, e)) = e,<br />

pop(push(s, e)) = s<br />

Anmerkung 1: die Funktion push ist e<strong>in</strong>e Generatorfunktion. Ausgehend von empty können<br />

durch wie<strong>der</strong>holte Anwendung <strong>der</strong> Funktion push alle Stacks erzeugt werden.<br />

P(empty), P(s) ⊢ P(push(s, e))<br />

P(s)<br />

Anmerkung 2: Stacks können als Zustände e<strong>in</strong>er abstrakten Masch<strong>in</strong>e <strong>in</strong>terpretiert werden, o<strong>der</strong><br />

auch als <strong>in</strong>nere Zustände e<strong>in</strong>es Objekts (d.h. als Werte e<strong>in</strong>er privaten Variablen des Objekts). Die<br />

Funktionen push und pop s<strong>in</strong>d dann als Zustandstransformationen zu verstehen.<br />

E<strong>in</strong> prom<strong>in</strong>enter Vertreter algebraischer <strong>Methoden</strong> ist Larch [20].<br />

4


2.2.3 Explizite Def<strong>in</strong>itionen<br />

Im Gegensatz zu den algebraischen Spezifikationen setzen wir hier gewisse Datentypen als bekannt<br />

voraus. Die neu zu def<strong>in</strong>ierenden Bereiche werden nun unter Benutzung <strong>der</strong> gegebenen Datentypen<br />

def<strong>in</strong>iert. Die neu zu def<strong>in</strong>ierenden Funktionen werden explizit auf Grund <strong>der</strong> gegebenen Funktionen<br />

def<strong>in</strong>iert. Man gibt, wenn man so will, e<strong>in</strong>e mögliche Implementierung des neuen Bereiches<br />

an.<br />

Wir bleiben bei <strong>der</strong> Dreiteilung <strong>der</strong> Spezifikation. Die explizite Def<strong>in</strong>ition von Stacks läßt sich<br />

wie folgt formulieren. Als den gegebenen und bekannt vorausgesetzten Datentyp werden Listen<br />

verwendet.<br />

Die Listen über e<strong>in</strong>en gegebenen Bereich D werden mit D ∗ bezeichnet. Die für Listen def<strong>in</strong>ierten<br />

und im folgenden gebrauchten Funktionen s<strong>in</strong>d:<br />

Funktionsname Bedeutung, <strong>in</strong>formal<br />

[] leere Liste<br />

hd hd[x 1 , x 2 , . . . , x n ] = x 1 ]<br />

tl<br />

<br />

tl[x 1 , x 2 , . . . , x n ] = [x 2 , . . . , x n ]<br />

[x 1 , x 2 , . . . , x n ] [y 1 , 2 y, . . . , y m ] = [x 1 , . . . , x n , y 1 , . . . , y m ]<br />

Im Gegensatz zur algebraischen Formulierung, wird <strong>der</strong> Grundbereich Stack durch Listen def<strong>in</strong>iert,<br />

<strong>der</strong>en Elemente aus Elem s<strong>in</strong>d. Elem ist vom Typ Token, welcher nicht näher spezifizierte,<br />

aber unterscheidbare Werte repräsentiert.<br />

Grundbereiche:<br />

Stack = Elem ∗ ;<br />

Elem = token<br />

Die Signatur bleibt wie <strong>in</strong> <strong>der</strong> algebraischen Formulierung. Die auf Stacks anwendbaren Funktionen<br />

werden aber explizit durch Listenfunktionen ausgedrückt.<br />

top : Stack → Elem<br />

top (s) △ hd s<br />

pre s ≠ [] ;<br />

pop : Stack → Stack<br />

pop (s) △ tl s<br />

pre s ≠ [] ;<br />

push : Stack × Elem → Stack<br />

push (s, e) △ [e] s<br />

Im Rahmen e<strong>in</strong>er Dissertation am Ord<strong>in</strong>ariat wurde gezeigt, daß e<strong>in</strong>e Unterklasse von Spezifikationen<br />

mittels Vor- und Nachbed<strong>in</strong>gung automatisch <strong>in</strong> e<strong>in</strong>e explizite transformiert werden<br />

können [18].<br />

Diskussion<br />

Es gibt nun zwei Def<strong>in</strong>itionen von Stack. E<strong>in</strong>e implizite, algebraische Def<strong>in</strong>ition und e<strong>in</strong>e Implementierung<br />

mit Listen. S<strong>in</strong>d diese beiden Def<strong>in</strong>itionen äquivalent? Was was bedeutet äquivalent<br />

5


<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


Wird dieser Benutzer mit dem Automaten zusammengebracht, so wird se<strong>in</strong>e Gier nicht befriedigt,<br />

da <strong>der</strong> Automat nur auf den E<strong>in</strong>wurf e<strong>in</strong>es Fünfers reagiert. Hier gibt <strong>der</strong> Automat auch nie<br />

e<strong>in</strong>en Tee aus, da <strong>der</strong> Benutzer nur Kaffee will:<br />

(Benutzer || Automat) = µX .(fünfer → kaffee → X )<br />

Das Beispiel zeigt, wie e<strong>in</strong> System als Komposition zweier paralleler Prozesse auch als e<strong>in</strong> e<strong>in</strong>zelner<br />

Prozeß dargestellt werden kann.<br />

Diesen ereignisbasierten Spezifikationsstil kann man nun dazu benutzen, Prozesse <strong>der</strong>en Interfacefunktionen<br />

mit den vorher besprochenen <strong>Methoden</strong> def<strong>in</strong>iert wurden, zu spezifizieren. Hier<br />

gibt es zwei Möglichkeiten:<br />

1. <strong>Methoden</strong>aufrufe werden als Ereignisse <strong>in</strong>terpretiert. Dieser Ansatz wurde <strong>in</strong> VDM++, <strong>der</strong><br />

objekt-orientierten Erweiterung von VDM gewählt [32].<br />

2. Für jede Methode werden Lese- und Schreibkanäle def<strong>in</strong>iert, wobei die Semantik von Kanälen<br />

bereits <strong>in</strong> CSP def<strong>in</strong>iert ist. In RAISE werden so parallele Architekturen spezifiziert [19].<br />

2.3 Spezifikationen s<strong>in</strong>d <strong>der</strong> Weg, nicht das Ziel<br />

Spezifikationen s<strong>in</strong>d nur <strong>der</strong> erste Schritt zum fertigen Produkt. Je nach Größe und Schwierigkeit<br />

<strong>der</strong> S<strong>of</strong>tware muß die Spezifikation <strong>in</strong> mehr o<strong>der</strong> weniger großen Schritten <strong>in</strong> den exekutierbaren<br />

und verifizierten Code umgesetzt werden.<br />

<strong>Formale</strong> Spezifikationen, eben weil sie formal s<strong>in</strong>d, lassen gewisse automatisierte, <strong>in</strong>terne Konsistenzprüfungen<br />

zu. E<strong>in</strong> Beispiel ist die automatische Typenüberprüfung.<br />

E<strong>in</strong>e Hauptfrage ist natürlich, ob e<strong>in</strong>e auf Grund e<strong>in</strong>er formalen Spezifikation entwickelte Implementierung<br />

diese Spezifikation tatsächliche erfüllt. Idealerweise wäre e<strong>in</strong>e solche Frage durch<br />

e<strong>in</strong>en mathematischen Beweis zu erledigen. Dieser Weg kann aber aus praktischen Gründen <strong>der</strong>zeit<br />

nur selten begangen werden.<br />

Die Verifikation erfolgt daher meist durch Testen. Aber auch zum systematischen Testen kann<br />

die formale Spezifikation herangezogen werden [4, 5, 10].<br />

Ist das spezifizierte System so geartet, daß es nur endlich viele Zustände annehmen kann, ist<br />

das sogenannte “model check<strong>in</strong>g” e<strong>in</strong>e Möglichkeit. Model-check<strong>in</strong>g ist e<strong>in</strong> automatischer Prozeß,<br />

<strong>der</strong> e<strong>in</strong> System vollständig testet, <strong>in</strong>dem alle möglichen Zustände <strong>in</strong> Betracht gezogen werden.<br />

Ob model check<strong>in</strong>g angewandt werden kann, hängt von <strong>der</strong> Anzahl <strong>der</strong> möglichen Zustände des<br />

Systems ab.<br />

Ist model-check<strong>in</strong>g nicht s<strong>in</strong>nvoll, muß man auf e<strong>in</strong>en vollständigen Test verzichten. Man kann<br />

aber wenigstens versuchen auf <strong>der</strong> Basis <strong>der</strong> formalen Spezifikation für jede Fallunterscheidung,<br />

jeden Fall mit wenigsten e<strong>in</strong>em Testbeispiel abzudecken.<br />

Die IFAD VDM-SL Toolbox bietet noch e<strong>in</strong>e weitere Möglichkeit, die sogenannte Animation.<br />

Wenn <strong>in</strong> <strong>der</strong> Spezifikation gewisse implizite Formen <strong>der</strong> Def<strong>in</strong>ition vermieden werden, kann e<strong>in</strong>e<br />

Spezifikation direkt <strong>in</strong>terpretiert und “getestet” werden. Manchmal spricht man auch von “rapid<br />

prototyp<strong>in</strong>g”. Damit kann mit dem System experimentiert werden o<strong>der</strong> es kann (dem Kunden)<br />

demonstriert werden, bevor die eigentliche Implementierung erstellt ist.<br />

Werkzeuge:<br />

E<strong>in</strong>er <strong>der</strong> Gründe warum die Akzeptanz von <strong>Formale</strong>n <strong>Methoden</strong> <strong>in</strong> den letzten Jahren stieg, ist<br />

die Verfügbarkeit von Werkzeugen.<br />

Folgende Werkzeuge werden von uns verwendet:<br />

• IFAD VDMTools [24, 14]<br />

• Theorem Prover<br />

– PVS [35]<br />

– Isabelle [37]<br />

• FDR Model-Checker [36]<br />

7


3 Industrielle Anwendung<br />

Wo werden formale <strong>Methoden</strong> heute angewandt?<br />

<strong>Formale</strong> <strong>Methoden</strong> werden <strong>in</strong> Spezialgebieten angewandt, die entwe<strong>der</strong> sicherheitskritisch s<strong>in</strong>d<br />

o<strong>der</strong> beson<strong>der</strong>s schwierige Probleme stellen o<strong>der</strong> wenn sehr viel Geld am Spiel steht. Hier s<strong>in</strong>d<br />

e<strong>in</strong>ige Beispiele solcher Spezialgebiete:<br />

• Sicherheitskritische Systeme: Flugwesen, Raumfahrt, Eisenbahnwesen, ...<br />

• Protokolldef<strong>in</strong>ition<br />

• Sprachdef<strong>in</strong>ition<br />

• Echtzeitanwendungen<br />

• Hardwareverifikation<br />

3.1 Projekte des Ord<strong>in</strong>ariats<br />

E<strong>in</strong>e Auswahl von uns durchgeführter Projekte soll e<strong>in</strong>en E<strong>in</strong>blick <strong>in</strong> die Anwendungsmöglichkeiten<br />

und Vorteile formaler <strong>Methoden</strong> geben. Die Aufzählung soll auch e<strong>in</strong> weit verbreitetes Mißverständnis<br />

beseitigen, nämlich daß formale <strong>Methoden</strong> gleichbedeutend mit formalen Beweisen<br />

s<strong>in</strong>d.<br />

3.1.1 IFAD<br />

Der dänische Toolprovi<strong>der</strong> IFAD verwendet VDM um se<strong>in</strong>e eigenen VDM-Werkzeuge zu entwickeln.<br />

Drei Projekte, welche die Weiterentwicklung <strong>der</strong> Entwicklungswerkzeuge zum Ziel hatten,<br />

wurden bis jetzt mit IFAD durchgeführt.<br />

• Die Implementierung von Dynamik-L<strong>in</strong>k Modulen, um VDM-SL Spezifikationen mit C++<br />

Sourcecode zu verb<strong>in</strong>den [17].<br />

• Die Entwicklung e<strong>in</strong>es formalen Prototypen e<strong>in</strong>es Beweisverpflichtungs-Generators zum Auff<strong>in</strong>den<br />

von Konsistenzfehlern <strong>in</strong> VDM-Spezifikationen [7].<br />

• Die Erweiterung des VDM++-nach-Java Code-Generators um parallele Konstrukte [32].<br />

3.1.2 Siemens<br />

Mit <strong>der</strong> Firma Siemens PSE Graz wurde e<strong>in</strong> Projekt zur formalen Spezifikation des HBCI Homebank<strong>in</strong>g<br />

Protokolls durchgeführt. Die VDM-Formalisierung des <strong>in</strong>formalen Standards brachte<br />

mehr als 25 Mehrdeutigkeiten und mögliche Fehler im Protokoll zutage [38].<br />

Zur Zeit ist e<strong>in</strong>e Folgearbeit ausgeschrieben, welche die Implementierung e<strong>in</strong>er neuen Version<br />

des HBCI-Standards zur Aufgabe hat. Dabei soll auch untersucht werden, wie e<strong>in</strong>e formale<br />

Methode die durch Versionsän<strong>der</strong>ung bed<strong>in</strong>gten Modifikationen unterstützt.<br />

3.1.3 Frequentis<br />

Mit <strong>der</strong> Wiener Firma Frequentis Nachrichten GmbH wurde e<strong>in</strong> Projekt zur Spezifikation ihres<br />

Sprachvermittlungssystems VCS 3020S, e<strong>in</strong> Kommunikationssystem für die Flugverkehrskontrolle,<br />

durchgeführt. Es wurde e<strong>in</strong> ’leichter Ansatz’ gewählt [27], <strong>in</strong>dem e<strong>in</strong>e explizite VDM++ Spezifikation<br />

des sicherheitskritischen Teils erstellt wurde.<br />

Während <strong>der</strong> Spezifikation wurden 64 Mehrdeutigkeiten, Wi<strong>der</strong>sprüche, Unklarheiten und Fehler<br />

<strong>in</strong> den <strong>in</strong>formalen Dokumenten aufgezeigt und so die Qualität dieser <strong>in</strong>formalen Spezifikation<br />

verbessert. Abbildung 1 zeigt e<strong>in</strong>e Statistik <strong>der</strong> gefundenen Punkte.<br />

Im nächsten Schritt wurde die Qualität <strong>der</strong> System<strong>in</strong>tegrationstests evaluiert. Dazu wurde die<br />

explizite Spezifikation mit Hilfe <strong>der</strong> IFAD VDM++ Toolbox <strong>in</strong>terpretiert und die Testabdeckung<br />

8


25<br />

20<br />

2<br />

Ambiguous, contradictiory or unclear issues<br />

Erroneous issues<br />

15<br />

Issues<br />

10<br />

5<br />

0<br />

20<br />

Read<strong>in</strong>g<br />

5<br />

8<br />

Read<strong>in</strong>g with systemknowledge<br />

17<br />

12<br />

0 0<br />

Specification <strong>of</strong><br />

configuration<br />

Specification <strong>of</strong><br />

functionality<br />

Abbildung 1: Statistik <strong>der</strong> gefundenen ’Fehler’.<br />

<strong>der</strong> Systemtests gemessen. Das Ergebnis war, daß nur ca. 80% <strong>der</strong> Funktionalität des Systems durch<br />

die Testfälle abgedeckt war. Anhand <strong>der</strong> formalen Spezifikation erweiterte man die Testfälle, um<br />

e<strong>in</strong>e 100% Abdeckung zu erzielen. Tabelle 1 zeigt die Abdeckungsstatistik, wie sie von <strong>der</strong> IFAD<br />

Toolbox erzeugt wird.<br />

Class Name Number <strong>of</strong> Methods Coverage<br />

OP 31 91%<br />

RIF 11 70%<br />

SWITCH 35 79%<br />

average – 83%<br />

Tabelle 1: Zusammenfassung <strong>der</strong> Testabdeckung.<br />

Als letzte Aktivität wurde die formale Spezifikation anhand e<strong>in</strong>er Än<strong>der</strong>ungsanfrage (Change<br />

Request) modifiziert, um die Vorteile e<strong>in</strong>er formalen Spezifikation gegenüber herkömmlichen Dokumenten<br />

zu verdeutlichen. Durch das formale Modell konnte die Än<strong>der</strong>ung sowie die erfor<strong>der</strong>lichen<br />

neuen Testfälle systematisch designed werden.<br />

Die Aufwände <strong>der</strong> e<strong>in</strong>zelnen Arbeitsschritte s<strong>in</strong>d <strong>in</strong> Abbildung 2 zusammengefaßt [23, 22].<br />

Read FRQ Documents<br />

1,2<br />

Read FM Literature<br />

2,3<br />

Formal Specification<br />

Test Coverage Analysis<br />

Modification<br />

Meet<strong>in</strong>gs, Presentations<br />

1,1<br />

1,2<br />

3,0<br />

3,5<br />

Work<strong>in</strong>g times are given <strong>in</strong><br />

40 hour units (approx. 1 week)<br />

Abbildung 2: Aufwand des Projekts mit Frequentis.<br />

Zur Zeit läuft e<strong>in</strong>e Folgearbeit, die VDM <strong>in</strong> e<strong>in</strong>em laufenden Projekt anwendet. Das Ziel ist<br />

die Spezifikation e<strong>in</strong>es Netzwerkknotens für e<strong>in</strong> Kommunikationsnetz, welches die österreichischen<br />

Flugüberwachungse<strong>in</strong>richtungen verb<strong>in</strong>den soll. Weiters sollen aus dem formalen Modell systematisch<br />

Testfälle abgeleitet werden.<br />

3.1.4 Ferk Informatik<br />

Mit <strong>der</strong> Grazer Firma Ferk Informatik wird zur Zeit e<strong>in</strong> Datenbanksystem zur Materialverfolgung<br />

und Produktionsplanung entwickelt. Das Beson<strong>der</strong>e an diesem Projekt ist, daß klassische Techniken<br />

9


aus <strong>der</strong> Datenbankwelt mit formalen <strong>Methoden</strong> verknüpft werden.<br />

Hierbei wird das relationale Datenmodell, welches mittels Erw<strong>in</strong> designed wurde, automatisch<br />

<strong>in</strong> e<strong>in</strong> entsprechendes VDM-SL Modell übersetzt. Weiters lassen sich die SQL-Abfragen <strong>in</strong><br />

VDM-SL spezifizieren. Es folgt dann e<strong>in</strong>e Erweiterung <strong>der</strong> Spezifikation um logische Bed<strong>in</strong>gungen,<br />

wie Daten<strong>in</strong>varianten und Vorbed<strong>in</strong>gungen. Diese Bed<strong>in</strong>gungen können dann im Datenbankserver<br />

implementiert werden und zur Konsistenzüberprüfung von Datenbanktransaktionen dienen. Das<br />

Ergebnis ist e<strong>in</strong>e konsistente Datenbank [33]. Abbildung 3 zeigt das <strong>in</strong>formal-formale Vorgehensmodell.<br />

Requirements<br />

Document<br />

Early design<br />

Entity-Relationship<br />

Diagram<br />

Database Def<strong>in</strong>ition<br />

<strong>in</strong> VDM<br />

Additional Database<br />

Constra<strong>in</strong>ts <strong>in</strong> VDM<br />

Detailed design<br />

Formal Model<br />

Code<br />

Database Constra<strong>in</strong>ts<br />

via PL/SQL Triggers<br />

Implementation<br />

Arrows mean "Derived From / Us<strong>in</strong>g"<br />

Abbildung 3: Überblick des <strong>in</strong>tegrierten DB-Entwicklungsmodells.<br />

3.1.5 Forschungszentrum Seibersdorf<br />

E<strong>in</strong> zweijähriges Dissertationsprojekt <strong>in</strong> Kooperation mit dem Forschungszentrum Seibersdorf<br />

beschäftigt sich mit <strong>der</strong> formalen Entwicklung e<strong>in</strong>es Systems zur Überwachung von Wächterrouten.<br />

Ziel des Projektes ist es die komplexen Requirements zu formalisieren und diese Spezifikation<br />

zu e<strong>in</strong>er lauffähigen Implementierung h<strong>in</strong> zu verfe<strong>in</strong>ern.<br />

In <strong>der</strong> ersten Phase (6 Monate) wurde aus den 60 Anfor<strong>der</strong>ungen e<strong>in</strong>e VDM-SL Spezifikation<br />

von 35 A4-Seiten entwickelt. Teile <strong>der</strong> Anfor<strong>der</strong>ungen s<strong>in</strong>d auf e<strong>in</strong>em nie<strong>der</strong>en Abstraktionslevel<br />

und geben e<strong>in</strong>en Algorithmus vor. Die Konsequenz ist, daß durch viele Details die Spezifikation<br />

schwierig zu verstehen ist.<br />

Durch e<strong>in</strong>e erste Validierung per Interpretation konnten Fehler <strong>in</strong> den Anfor<strong>der</strong>ungen aufgezeigt<br />

werden. Außerdem stellten sich die Anfor<strong>der</strong>ungen als zu ungenau heraus. Daher wurde die Spezifikation<br />

mit Hilfe des Theorem Provers PVS formal analysiert. Dabei wurden Fragen gestellt wie<br />

z.B: Ist es möglich, daß e<strong>in</strong> Wächter se<strong>in</strong>e Route nicht beenden kann, da Türen versperrt bleiben?<br />

Das Ergebnis zeigte, daß die Unvollständigkeit <strong>der</strong> Anfor<strong>der</strong>ungen nur den Beweis e<strong>in</strong>geschränkter<br />

Eigenschaften zuläßt. Weiters läßt sich sagen, daß die formale Analyse mittels e<strong>in</strong>es Beweisers<br />

sehr zum Verstehen des Problems beigetragen hat. So konnte auch e<strong>in</strong> Ansatz zur systematischen<br />

Testfallgenerierung für das Zielsystem gefunden werden [12, 13, 11].<br />

In diesem Projekt wird auch geprüft, ob <strong>der</strong> C++ Code-Generator <strong>der</strong> IFAD-Tools für diese<br />

Aufgabe geeignet ist.<br />

10


3.2 Internationale Projekte<br />

International gibt es e<strong>in</strong>e Reihe von Firmen und Institutionen, welche formale <strong>Methoden</strong> mit Erfolg<br />

angewandt haben. In <strong>der</strong> Datenbank <strong>der</strong> FME (Formal Methods Europe) f<strong>in</strong>den sich e<strong>in</strong>e Reihe<br />

von <strong>in</strong>dustriellen Projekten mit detailierten Beschreibungen [16].<br />

Es folgt e<strong>in</strong>e Auswahl bekannter Unternehmen, die formale <strong>Methoden</strong> e<strong>in</strong>setzen.<br />

• NASA [30, 2, 3]<br />

• British Aerospace, Aerospatiale<br />

• Dänische Staatsbahnen, Ch<strong>in</strong>esische Eisenbahn, Japanische Eisenbahn<br />

• GAO<br />

• Matra<br />

• Intel<br />

• BMW<br />

• CAP Gem<strong>in</strong>i<br />

3.3 Fallstudie bei British Aerospace<br />

Abschließend sei noch e<strong>in</strong>e vergleichende Fallstudie bei British Aerospace zu nennen. In dieser Studie<br />

wurde demonstriert, daß formale <strong>Methoden</strong> nicht unbed<strong>in</strong>gt mehr Aufwand bedeuten müssen.<br />

In zwei parallelen Projekten wurde das gleiche System, e<strong>in</strong> sicherheitskritisches Nachrichtengateway<br />

entwickelt. Die e<strong>in</strong>e Gruppe verwendete VDM, die an<strong>der</strong>e die konventionelle <strong>in</strong>formale<br />

Methode <strong>der</strong> Firma.<br />

Die folgende Tabelle zeigt das überaschende Ergebnis: Die formale Entwicklungsmethode war<br />

schneller.<br />

Phase Allocated Conventional Formal Excess<br />

Time Method Method F over C<br />

System Design 40 30 35 + 17%<br />

SW-Design 40 40 33 - 17%<br />

Implementation 20 17 13 - 24%<br />

Totals 100 87 81 -7%<br />

In <strong>der</strong> zweiten Tabelle ist die Verteilung <strong>der</strong> Aufwände nach Projektphasen aufgeschlüsselt.<br />

Phase Conventional Formal<br />

Method Method Ratio<br />

% Project % Project (C/F)<br />

System Design 34 43 0.77<br />

SW-Design 46 41 1.15<br />

Implementation 20 16 1.25<br />

Totals 100 100<br />

E<strong>in</strong>e genauere Beschreibung des Experimentes f<strong>in</strong>det sich <strong>in</strong> [9].<br />

4 Abschließende Bemerkungen<br />

Daß diese <strong>Methoden</strong> <strong>der</strong>zeit vorwiegend <strong>in</strong> Spezialgebieten e<strong>in</strong>gesetzt werden, ist vermutlich nur<br />

e<strong>in</strong> Übergangsstadium. Die verbreitete Me<strong>in</strong>ung sche<strong>in</strong>t zu se<strong>in</strong>, daß formale <strong>Methoden</strong> e<strong>in</strong>en<br />

11


zusätzlichen Aufwand bedeuten und daher nur dort e<strong>in</strong>gsetzt werden können, wo man sich diesen<br />

Aufwand leisten kann.<br />

Man kann aber auch <strong>der</strong> Me<strong>in</strong>ung se<strong>in</strong>, daß sich <strong>der</strong> Aufwand auch <strong>in</strong> nicht kritischen Anwendungen<br />

letztlich bezahlt macht. Hier ist unter an<strong>der</strong>em UML zu erwähnen, die neue “Universal<br />

Modell<strong>in</strong>g Language” die von den führenden Vertretern des objektorientierten Entwurfs kreiert<br />

wurde. UML kommt mit e<strong>in</strong>em Zusatz, <strong>der</strong> sogenannten Object Constra<strong>in</strong>t Language (OCL), die<br />

es erlaubt, Daten<strong>in</strong>varianten und <strong>Methoden</strong> von Objektklassen mathematisch zu spezifizieren.<br />

Wo ist mehr Information über die Anwendung formaler <strong>Methoden</strong> zu f<strong>in</strong>den? Viele Anwendungen<br />

s<strong>in</strong>d <strong>in</strong> den Proceed<strong>in</strong>gs <strong>der</strong> FME Konferenzen zu f<strong>in</strong>den. Die nächste Konferenz FM’99 f<strong>in</strong>det<br />

vom 20.–24. September <strong>in</strong> Toulouse statt [15]. Neben <strong>der</strong> schon erwähnten Datenbank <strong>der</strong> FME<br />

[16], gibt es noch die Virtual Library zum diesem Thema [29]. Alle hier zitierten Publikationen<br />

des Ord<strong>in</strong>ariats für S<strong>of</strong>twaretechnologie s<strong>in</strong>d auch als PostScript-Files auf unserem WWW-Server<br />

verfügbar [25].<br />

Literatur<br />

[1] J.-R. Abrial. The B-Book, Assign<strong>in</strong>g programs to mean<strong>in</strong>gs. Number ISBN 0521 49619<br />

5(hardback). Cambridge University Press, 1996.<br />

[2] Sten Agerholm and Peter Gorm Larsen. Model<strong>in</strong>g and validat<strong>in</strong>g SAFER <strong>in</strong> VDM-SL. In Michael<br />

Holloway, editor, Fourth NASA Langley Formal Methods Workshop. NASA, September<br />

1997. Available from http://atb-www.larc.nasa.gov/Lfm97/proceed<strong>in</strong>gs/.<br />

[3] Sten Agerholm and Peter Gorm Larsen. SAFER specification <strong>in</strong> VDM-SL.<br />

Technical report, IFAD, Odense, Denmark, September 1997. Available from<br />

http://www.ifad.dk/examples/examples.html.<br />

[4] Bernhard K. Aichernig. Automated requirements test<strong>in</strong>g with abstract oracles. In ISSRE’98:<br />

The N<strong>in</strong>th International Symposium on S<strong>of</strong>tware Reliability Eng<strong>in</strong>eer<strong>in</strong>g, Pa<strong>der</strong>born, Germany,<br />

pages 21–22, IBM Thomas J.Watson Research Center, P.O.Box 218, Route 134, Yorktown<br />

Heights, NY, USA, November 1998. Ram Chillarege. ISBN 3-00-003410-2.<br />

[5] Bernhard K. Aichernig. Automated black-box test<strong>in</strong>g with abstract vdm oracles. In Proceed<strong>in</strong>gs<br />

<strong>of</strong> SAFECOMP’99: The 18th International Conference on Computer Safety, Reliability<br />

and Security, Toulouse, Lecture Notes <strong>in</strong> Computer Science. Spr<strong>in</strong>ger, September 1999.<br />

[6] Bernhard K. Aichernig and Andreas Kerschbaumer. Property orientation <strong>in</strong> the model oriented<br />

vienna development method (vdm). Technical Report IST-TEC-99-02, <strong>Institute</strong> for<br />

S<strong>of</strong>tware <strong>Technology</strong>, TU-Graz, Austria, February 1999. Submitted to FM’99, Toulouse,<br />

France, September 20–24.<br />

[7] Bernhard K. Aichernig and Peter Gorm Larsen. A pro<strong>of</strong> obligation generator for VDM-SL.<br />

In J. Fitzgerald, C.B. Jones, and P. Lucas, editors, FME’97: Industrial Applications and<br />

Strengthened Foundations <strong>of</strong> Formal Methods, volume 1313 <strong>of</strong> Lecture Notes <strong>in</strong> Computer<br />

Science, 1997.<br />

[8] Bernhard K. Aichernig and Peter Lucas. S<strong>of</strong>twareentwicklung — e<strong>in</strong>e Ingenieursdiszipl<strong>in</strong>!(?).<br />

Telematik, Zeitschrift des Telematik-Ingenieur-Verbandes (TIV), 4(2):2–8, 1998. ISSN 1028-<br />

5068.<br />

[9] T.M. Brooks, J.S. Fitzgerald, and P.G. Larsen. Formal and <strong>in</strong>formal specifications <strong>of</strong> a secure<br />

system component: F<strong>in</strong>al results <strong>in</strong> a comparative study. In Marie-Claude Gaudel and James<br />

Woodcock, editors, FME’96: Industrial Benefit and Advances <strong>in</strong> Formal Methods, volume<br />

1051 <strong>of</strong> Lecture Notes <strong>in</strong> Computer Science, 1996.<br />

12


[10] Jeremy Dick and Ala<strong>in</strong> Faivre. Automat<strong>in</strong>g the generation and sequenc<strong>in</strong>g <strong>of</strong> test cases<br />

from model-based specifications. In J.C.P. Woodcock and P.G. Larsen, editors, FME’93:<br />

Industrial-Strength Formal Methods. Spr<strong>in</strong>ger-Verlag, April 1993.<br />

[11] Georg Droschl. Design and application <strong>of</strong> a test case generator for vdm-sl (extended abstract).<br />

Technical report, IST, TU-Graz, Austria, 1999. Submitted to Workshop VDM <strong>in</strong> practice at<br />

FM’99, Toulouse, France, September 20–21.<br />

[12] Georg Droschl. Formal specification and analysis <strong>of</strong> an access control us<strong>in</strong>g IFAD’s VDMtools.<br />

Technical report, <strong>Institute</strong> for S<strong>of</strong>tware <strong>Technology</strong>, TU-Graz, Austria, January 1999.<br />

Submitted to Computer Communications Journal, Special Issue: Formal Description Techniques<br />

<strong>in</strong> Practice.<br />

[13] Georg Droschl. Us<strong>in</strong>g PVS for requirements analysis <strong>of</strong> an access control. Technical Report<br />

IST-TEC-99-05, <strong>Institute</strong> for S<strong>of</strong>tware <strong>Technology</strong>, TU-Graz, Austria, February 1999.<br />

Submitted to FM’99, Toulouse, France, September 20–24.<br />

[14] John Fitzgerald and Peter Gorm Larsen. Modell<strong>in</strong>g Sytems, Practical Tools and Techniques.<br />

Cambridge University Press, 1998.<br />

[15] FME. FM’99 World Congress on Formal Methods <strong>in</strong> Development <strong>of</strong> Comput<strong>in</strong>g Systems.<br />

http://www.cert.fr/fm99/.<br />

[16] FME. Formal Methods Europe Hub. http://www.cs.tcd.ie/FME/.<br />

[17] Brigitte Froehlich and Peter Gorm Larsen. Comb<strong>in</strong><strong>in</strong>g VDM-SL specifications with C++<br />

code. In James Woodcock Marie-Claude Gaudel, editor, FME’96: Industrial Benefit and<br />

Advances <strong>in</strong> Formal Methods, volume 1051 <strong>of</strong> LNCS, pages 179–194. Spr<strong>in</strong>ger, March 1996.<br />

[18] Brigitte Fröhlich. Program Generation Based on Implicit Def<strong>in</strong>itions <strong>in</strong> a VDM-like Language.<br />

PhD thesis, <strong>Institute</strong> for S<strong>of</strong>tware <strong>Technology</strong>, TU-Graz, Austria, December 1998. Supervisor:<br />

Peter Lucas.<br />

[19] Chris George et al. The Raise Development Method. The BCS Practitioner Series. Prentice<br />

Hall, 1995.<br />

[20] John V. Guttag, James Horn<strong>in</strong>g, and otheres. Larch, Languages and Tools for Formal Specification.<br />

Texts and Monographs <strong>in</strong> Comuter Science. Spr<strong>in</strong>ger Verlag, 1993.<br />

[21] C.A.R. Hoare. Communicat<strong>in</strong>g Sequential Processes. Series <strong>in</strong> Computer Science. Prentice-<br />

Hall, 1998.<br />

[22] Johann Hörl. Formal specification for a voice communication system <strong>in</strong> air traffic control. Master’s<br />

thesis, <strong>Institute</strong> for S<strong>of</strong>tware <strong>Technology</strong>, TU-Graz, Austria, January 1999. Supervisor:<br />

Bernhard K. Aichernig and Peter Lucas.<br />

[23] Johann Hörl and Bernhard K. Aichernig. Formal specification <strong>of</strong> a voice communication<br />

system used <strong>in</strong> air traffic control, an <strong>in</strong>dustrial application <strong>of</strong> light-weight formal methods<br />

us<strong>in</strong>g vdm++. Technical Report IST-TEC-99-03, <strong>Institute</strong> for S<strong>of</strong>tware <strong>Technology</strong>, TU-<br />

Graz, Austria, February 1999. Submitted to FM’99, Toulouse, France, September 20–24.<br />

[24] IFAD. IFAD’s products. URL: http://www.ifad.dk/Products/products.htm.<br />

[25] IST. Homepage des Ord<strong>in</strong>ariats für S<strong>of</strong>twaretechnologie. http://www.ist.tu-graz.ac.at/.<br />

[26] Cliff B. Jones. Systematic S<strong>of</strong>tware Development Us<strong>in</strong>g VDM. Prentice-Hall International,<br />

Englewood Cliffs, New Jersey, second edition, 1990.<br />

[27] Cliff B. Jones. Formal methods light: A rigorous approach to formal methods. IEEE Computer,<br />

29(4):20–21, April 1996.<br />

13


[28] P. G. Larsen, B. S. Hansen, H. Bruun, N. Plat, H. Toetenel, D. J. Andrews, J. Dawes,<br />

G. Park<strong>in</strong>, et al. Information technology — Programm<strong>in</strong>g languages, their environments and<br />

system s<strong>of</strong>tware <strong>in</strong>terfaces — Vienna Development Method — Specification Language — Part<br />

1: Base language, December 1996. International Standard ISO/IEC 13817-1.<br />

[29] Virtual Library. Formal methods. http://www.comlab.ox.ac.uk/archive/formalmethods.html.<br />

[30] NASA. Formal methods, specification and verification guidebook for s<strong>of</strong>tware and<br />

computer systems, volume II: A practitioner’s companion. Technical Report NASA-<br />

GB-001-97, NASA, Wash<strong>in</strong>gton, DC 20546, USA, May 1997. Available from<br />

http://eis.jpl.nasa.gov/quality/Formal Methods/.<br />

[31] Peter Naur and Brian Randell. SOFTWARE ENGINEERING. NATO Science Committee,<br />

January 1969.<br />

[32] Oliver Oppitz. Concurrency extensions for the vdm++ to java code generator <strong>of</strong> the ifad<br />

vdm++ toolbox. Master’s thesis, <strong>Institute</strong> for S<strong>of</strong>tware <strong>Technology</strong>, TU-Graz, Austria, May<br />

1999. Supervisor: Peter Gorm Larsen and Peter Lucas.<br />

[33] Rudi Schlatte and Bernhard K. Aichernig. Database development <strong>of</strong> a work-flow plann<strong>in</strong>g<br />

and track<strong>in</strong>g system us<strong>in</strong>g VDM-SL. Technical Report IST-TEC-99-04, <strong>Institute</strong> for S<strong>of</strong>tware<br />

<strong>Technology</strong>, TU-Graz, Austria, February 1999. Submitted to FM’99, Toulouse, France,<br />

September 20–24.<br />

[34] J. M. Spivey. The Z Notation. Series <strong>in</strong> Computer Science. Prentice-Hall, 1989.<br />

[35] SRI. The PVS Specification and Verification System. http://pvs.csl.sri.com/.<br />

[36] Formal Systems. FDR2 model-checker. http://www.formal.demon.co.uk/FDR2.html.<br />

[37] Cambridge University and TU-München. Isabelle Generic Theorem Prover.<br />

http://www.cl.cam.ac.uk/Research/HVG/Isabelle/.<br />

[38] Simon J. Zwölfer. A formal specification <strong>of</strong> the HBCI homebank<strong>in</strong>g protocol. Master’s<br />

thesis, <strong>Institute</strong> for S<strong>of</strong>tware <strong>Technology</strong>, TU-Graz, Austria, August 1998. Supervisor: Brigitte<br />

Fröhlich and Peter Lucas.<br />

14

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!