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
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