VDM Vienna Development Method
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Seminar in Software Engineering: Spezifikationsverfahren VDM Vienna Development Method Institut für Informatik, Universität Zürich Prof. Dr. Martin Glinz Nancy Schett WS 2000/01 12. Dezember 2000 Autor: Jens Balkausky Poststrasse 67 8957 Spreitenbach jens@balkausky.ch
VDM Seminar in Software Engineering: Spezifikationsverfahren Jens Balkausky WS 2000/01 Inhaltsverzeichnis: 1. Einleitung _______________________________________________________________ 3 2. VDM und VDM-SL _______________________________________________________ 3 3. Definition von Datentypen __________________________________________________ 4 3.1. Einfache Datentypen __________________________________________________ 4 3.2. Zusammengesetzte Datentypen__________________________________________ 5 3.2.1. Mengen __________________________________________________________ 5 3.2.2. Relationen ________________________________________________________ 5 3.2.3. Folgen ___________________________________________________________ 6 3.2.4. Records __________________________________________________________ 6 3.2.5. Produkte__________________________________________________________ 7 3.2.6. Vereinigungen _____________________________________________________ 7 4. Funktionen und Operationen _______________________________________________ 7 4.1. Funktionen __________________________________________________________ 8 4.1.1. Implizite Definition _________________________________________________ 8 4.1.2. Explizite Definition _________________________________________________ 8 4.2. Operationen _________________________________________________________ 9 4.2.1. Definition eines Zustandes ___________________________________________ 9 4.2.2. Implizite Definition _________________________________________________ 9 4.2.3. Explizite Definition _________________________________________________ 9 4.3. Zusätzliche Anweisungen______________________________________________ 10 4.4. Vereinfachte Notationen ______________________________________________ 10 5. Module ________________________________________________________________ 11 6. Software Entwicklung mit VDM ____________________________________________ 12 6.1. Verfeinerung ________________________________________________________ 12 6.2. Übersetzung ________________________________________________________ 12 7. Beispiel: Insertion Sort____________________________________________________ 13 8. Vergleich mit Z __________________________________________________________ 13 9. Zusammenfassung _______________________________________________________ 14 10. Fazit__________________________________________________________________ 14 11. Literaturverzeichnis _____________________________________________________ 16 12.12.2000 / V1.3 Seite 2/16
VDM Seminar in Software Engineering: Spezifikationsverfahren Jens Balkausky WS 2000/01 1. Einleitung Dieser Seminarbericht soll einen Einblick in die Verwendung der formalen Spezifikations- methode VDM (Vienna Development Method) geben und die Grundlagen vermitteln, eine in VDM-SL (VDM Specification Language) vorliegende Spezifikation zumindest in den Grundzügen zu verstehen. Hierzu wird zunächst auf die Geschichte von VDM und den allgemeinen Aufbau einer in VDM-SL geschriebenen Spezifikation eingegangen (Kapitel 2). Des weiteren werden die unterschiedlichen Datentypen der Sprache mit ihren Operatoren erläutert (Kapitel 3). Im folgenden wird auf die Funktionen, Operationen und weiteren Anweisungen sowie Ver- einfachungen der Notation eingegangen (Kapitel 4). Danach wird die Modularisierung einer Spezifikation (Kapitel 5) und die Vorgehensweise für die Verfeinerung und Übersetzung der Spezifikation in die für die spätere Implementation verwendete Programmiersprache dargelegt (Kapitel 6). Abschliessend werden anhand eines Beispiels die wichtigsten Elemente von VDM-SL nochmals repetiert (Kapitel 7) und ein kurzer Vergleich mit der formalen Spezifikationssprache Z vorgenommen (Kapitel 8). 2. VDM und VDM-SL VDM ist eine formale Spezifikationsmethode mit dem Ziel der Entwicklung von qualitativ hochwertiger Software. Die Methode und die zugehörige Sprache VDM-SL wurde seit Mitte der siebziger Jahre am IBM Forschungslabor in Wien entwickelt. Häufig wird der Begriff VDM mit der Sprache VDM-SL gleichgesetzt, wobei eigentlich erstere die gesamte Methode beschreibt. Sie ist insbesondere im englischsprachigen europäischen Raum eine der am häufigsten verwendeten präzisen Spezifikationsmethoden. Die Spezifikationssprache ist standardisiert, und zwar gemeinsam von der British Standards Institution (BSI) und der International Standards Organisation (ISO). Beim Entwurf von Software mit VDM beginnt man wie beim objektorientierten Entwurf mit der Konstruktion eines Datenmodells. Die Datentypen, die Klassen in einem System, werden mit Hilfe einer abstrakten Syntax in einer textbasierten Notation erstellt. Diese ist ähnlich zu der Grammatik einer Programmiersprache. Jede VDM Spezifikation besteht aus den Blöcken Typen, Werte, Funktionen, Operationen und Zustände, wobei diese in beliebiger Reihenfolge stehen können und nicht unbedingt alle enthalten sein müssen. Falls vorhanden, ist es jedoch nötig, dass sie mit dem entsprechenden Schlüsselbegriff beginnen. types ... type definitions ... values ... value definitions ... functions ... function definitions ... operations ... operation definitions ... ... state definition ... Abb. 1: Aufbau einer Spezifikation [Harry96] 12.12.2000 / V1.3 Seite 3/16
VDM Seminar in Software Engineering: Spezifikationsverfahren Jens Balkausky WS 2000/01 Zur Modellierung wird eine kleine Anzahl von Datentypen verwendet. Dies sind, neben den üblichen einfachen Datentypen wie z. B. die natürlichen Zahlen, die zusammengesetzten Datentypen wie Mengen, Relationen, Folgen, Records und Varianten. Anschliessend werden die Funktionen und Operationen entwickelt und deren Schnittstellen und Eigenschaften festgelegt. [Schm00] [Rol92] 3. Definition von Datentypen In den folgenden Unterkapiteln werden nun die einzelnen in VDM-SL verfügbaren Daten- typen und ihre entsprechenden Operatoren im einzelnen erläutert. Die einfachste Darstellungsform einer Typendefinition lautet wie folgt [Harry96]: z. B. Id ist ein beliebiger Bezeichner und T dessen Typ, im Beispiel die Menge der natürlichen Zahlen. Das Symbol wird anstatt von = verwendet, wenn es sich hierbei um eine Definition handelt. 3.1. Einfache Datentypen Die kleinste Einheit jeder Anweisung ist ein einfacher Datentyp, welcher nicht mehr weiter zerlegt werden kann. Diese sind vergleichbar zu denen in üblichen Programmiersprachen: z. B. Einfache Datentypen können mit folgenden Operatoren zu Ausdrücken kombiniert werden: Numerische Operatoren Vergleichsoperatoren 12.12.2000 / V1.3 Seite 4/16
VDM Seminar in Software Engineering: Spezifikationsverfahren Jens Balkausky WS 2000/01 Boolean Operatoren Prädikatenlogische Operatoren Zusätzlich gibt es die Operatoren floor, welcher den ganzzahligen Anteil einer Zahl, und abs, welcher den Absolutbetrag liefert. 3.2. Zusammengesetzte Datentypen Nebst den einfachen Datentypen bietet VDM-SL die Möglichkeit, durch Kombination der einfachen Datentypen zusammengesetzte Datentypen zu erhalten. Diese sind bekannt als Mengen, Relationen, Folgen, Records, Produkte und Vereinigungen. 3.2.1. Mengen T steht hierbei für einen einfachen Datentyp. z. B. oder Operatoren z. B. z. B. z. B. z. B. 3.2.2. Relationen Eine Relation kann z. B. in Form einer Menge dargestellt werden, wobei jeweils zusammen- hängende Elemente aufgelistet werden: z. B. Der dom (domain) und rng (range) Operator liefern die linken bzw. rechten Elemente eines Paares. Dies entspricht dem Definitions- bzw. Wertebereich: bzw. z. B. Jedem Namen ist eine Telefonnummer zugeordnet. z. B. Jedem Zeichen ist genau ein Wert zugeordnet und umgekehrt. z. B. Jeder natürlichen Zahl bis vier wird ihrem Quadrat zugeordnet. 12.12.2000 / V1.3 Seite 5/16
VDM Seminar in Software Engineering: Spezifikationsverfahren Jens Balkausky WS 2000/01 Operatoren z. B. z. B. z. B. z. B. z. B. z. B. z. B. z. B. aus folgt z. B. 3.2.3. Folgen T steht hierbei für einen einfachen Datentyp. z. B. Der erste Typ lässt auch leere Folgen zu, wobei in einer nicht-leeren Folge zumindest ein Element enthalten sein muss. Operatoren z. B. Um Folgen miteinander zu verketten, gibt es einerseits den obigen Operator und andererseits den conc Operator, der alle Elemente einer Folge verknüpft: bzw. VDM-SL kennt ausserdem einen Operator um Folgen zu verändern. Sq ist hierbei eine Folge und St eine Menge von Relationen, welche den jeweiligen Index der Folge mit dem neuen Wert verknüpft. z. B. 3.2.4. Records Ein Record fast mehrere einfache Datentypen zu einem neuen Verbund zusammen. Er kann mit VDM-SL auf zwei verschiedene Arten dargestellt werden: bzw. 12.12.2000 / V1.3 Seite 6/16
VDM Seminar in Software Engineering: Spezifikationsverfahren Jens Balkausky WS 2000/01 Beide Schreibweisen sind äquivalent. Id ist wieder beliebiger Bezeichner und T ein einfacher Datentyp. Ein einfaches Beispiel lautet: Bei der Deklaration eines Records werden automatisch die beiden Funktionen mk_Id und is_Id definiert, welche dazu dienen, einzelne Felder des Records zu setzen bzw. zu lesen. Um im obigen Beispiel die Adresse mit Werten zu füllen lautet der Syntax wie folgt: Es ist ausserdem möglich direkt auf die einzelnen Felder des Records R.Id zuzugreifen: Records können nur auf Gleichheit (=) bzw. Ungleichheit (? ) geprüft werden. Um ein grosse Anzahl von Feldern zu verändern, steht des weiteren der µ-Operator zur Verfügung: z. B. 3.2.5. Produkte Produkte dienen dazu Zahlentuppel der Form T1 × T 2 × ... Tn zu erzeugen. Sie werden in Funktionen verwendet, um mehr als einen Parameter übergeben zu können: Diese Funktion führt zum Beispiel eine Berechung mit zwei natürlichen Zahlen aus und gibt eine natürliche Zahl zurück. Wie bei den Records wird automatisch eine Funktion mk_(E1, E2, ..., En) definiert, wobei hier jedoch ein Bezeichner fehlt. Produkte können ebenfalls nur auf Gleichheit (=) bzw. Ungleichheit (? ) geprüft werden: 3.2.6. Vereinigungen Eine Vereinigung vom Typ T1 | T2 entspricht der Vereinigung der Werte aus den Datentypen T1 und T2. Wie aus der Mengenlehre bekannt, enthält eine Vereinigung alle Werte, welche in beiden Teilmengen vorkommen: 4. Funktionen und Operationen Um eine Spezifikation in VDM-SL in einzelne Teile zerlegen zu können und bis zu einem gewissen Grad zu modularisieren, benötigt man Funktionen und Operationen. Diese Zer- legung in eine Serie von Teilproblemen ermöglicht es, eine Spezifikation einfacher zu schreiben, zu verstehen und zu vervollständigen. [Harry96] VDM-SL erlaubt es, Funktionen und Operationen implizit, explizit oder einer Mischform innerhalb der gleichen Spezifikation zu definieren. Alle Parameter, welche Funktionen und 12.12.2000 / V1.3 Seite 7/16
VDM Seminar in Software Engineering: Spezifikationsverfahren Jens Balkausky WS 2000/01 Operationen übergeben werden, sind ausschliesslich Werte und keine Variablen. Alle Parameter können nur als Ergebnis einer Funktion zurückgegeben werden. Es handelt sich somit um Wert- und nicht Referenzsemantik. Grundsätzlich ist es nicht nötig, eine Funktion oder Operation vor der Verwendung zu definieren, zumal alle Deklarationen für die gesamte Spezifikation gelten. Sie können also an einer beliebigen Stelle stehen. Verschiedene Werkzeuge, welche zur Erstellung einer Spezifikationen herangezogen werden können, setzen jedoch häufig eine vorhergehenden Referenzierung voraus. [Harry96] [Jones90] 4.1. Funktionen Funktionen dienen hauptsächlich dazu, übergebene Parametern zu verarbeiten und das daraus entstehenden Ergebnis zurückzuliefern. Im Gegensatz zu Operationen erlauben Funktionen keine Seiteneffekte, d. h. es ist nicht möglich sich auf Werte ausserhalb ihres Geltungs- bereiches (Scope) zu beziehen oder diese zu verändern. Eine Funktion muss immer einen Wert zurückgeben, auch dann, wenn dieser konstant sein sollte. Funktionen lassen sich auf zwei Arten definieren: implizit und explizit. 4.1.1. Implizite Definition -- berechne das Maximum von drei natürlichen Zahlen Ids1, ..., Ids 3 stehen jeweils für einen oder mehrere Bezeichner vom Typ T. Idr repräsentiert einen Bezeichner für das zurückzuliefernde Ergebnis der Funktion. B und B’ definieren die Vor- und Nachbedingung, wobei die Vorbedingung nicht unbedingt vorhanden sein muss. Es ist ausserdem möglich, rekursive Funktionen zu definieren, indem in der Nachbedingung wiederum die Funktion aufgerufen wird. -- summiere eine Folge natürlicher Zahlen 4.1.2. Explizite Definition -- berechne das Maximum von drei natürlichen Zahlen Id1, Id2, ..., Idn sind die Bezeichner der übergebenen Parameter und T1, T2, ..., Tn deren Typen. E entspricht einem Ausdruck vom selben Typ T wie derjenige des zurückzugebenden Funktionswertes. B ist wiederum eine freiwillige Vorbedingung. Explizite Funktionen benötigen allerdings noch eine Signatur welche die Typen der Variablen definiert, welche ihr als Parameter übergeben werden und welche sie zurückliefert. Normaler- weise steht diese direkt vor der Funktion: z. B. z. B. z. B. 12.12.2000 / V1.3 Seite 8/16
VDM Seminar in Software Engineering: Spezifikationsverfahren Jens Balkausky WS 2000/01 4.2. Operationen Die grundlegende Idee von Operationen ist, dass sie Einfluss auf den aktuellen Zustand eines Systems nehmen und sich einerseits darauf beziehen und andererseits diesen verändern können. Die in einer Spezifikation verwendeten Zustandsvariablen sind somit globale Werte, wobei immer auch die vorhergehenden Inhalte berücksichtigt werden müssen. Zunächst folgt wie ein Zustand in VDM-SL definiert wird und danach die implizite und explizite Darstellung einer Operation. 4.2.1. Definition eines Zustandes In einer Spezifikation muss zunächst der Anfangszustand eines Systems bestimmt werden. Dies beinhaltet die Definition der Startwerte aller Variablen welche benutzt werden: z. B. Die Invarianten- und Initialisierungsklauseln können auch weggelassen werden. Invarianten sind Eigenschaften, die durch Anwendung beliebiger Operationen nicht verändert werden. Zu beachten ist, dass der Zustandsbezeichner Id und alle Zustandsvariablen für die gesamte Spezifikation gelten. 4.2.2. Implizite Definition Mit Hilfe einer impliziten Operation legt man fest, welche Eigenschaften nach dem Ausführen der Operation erfüllt sein müssen (Nachbedingung). -- berechne das Maximum von drei natürlichen Zahlen Idr und dessen Typ T sind unnötig, falls die Operation keine Werte zurückliefert. Die Vor- bedingung ist ebenfalls freiwillig. Auf externe Variablen wird mit Hilfe der ext Klausel zugegriffen, wobei nur Lesezugriff (rd) oder Schreib- und Lesezugriff (wr) erlaubt werden kann. Um zwischen dem Zustand einer Variable vor und nach einer Operation unterscheiden zu können, wird das hook Symbol verwendet: -- ersetzte max durch n falls n > max Im Beispiel muss nach der Operation entweder der alte Wert von max oder n in max stehen. 4.2.3. Explizite Definition -- ersetzte max durch n falls n > max Es kann wie bei impliziten Operationen auf externe Variablen zugegriffen werden, wobei hier allerdings keine ext Klausel benötigt wird. Der Typ und die Zugriffsrechte ergeben sich aus 12.12.2000 / V1.3 Seite 9/16
VDM Seminar in Software Engineering: Spezifikationsverfahren Jens Balkausky WS 2000/01 der Angabe der Operation und der Umgebung. Die Vorbedingung B ist wieder freiwillig. Das Schlüsselwort skip bewirkt, dass keine weiteren Handlungen erfolgen, sofern die Bedingung nicht erfüllt wird. Wie bei den expliziten Funktionen benötigen auch explizite Operationen eine Signatur, welche die Typen der Variablen definiert, die ihr als Parameter übergeben werden und welche sie zurückliefert. Üblicherweise steht diese direkt vor der Operation. -- erhöhe den aktuellen Wert um eins 4.3. Zusätzliche Anweisungen Wie von den üblichen Programmiersprachen her bekannt, kennt VDM-SL ebenfalls die if- und case- Anweisung. Bn sind hierbei Bedingungen, En Ausdrücke und Psn Marken. bzw. Iterationen können mit Hilfe von for- und while-Schlaufen realisiert werden. Id steht für einen beliebigen Bezeichner und St für eine beliebige Aussage. bzw. 4.4. Vereinfachte Notationen Des weiteren kennt VDM-SL drei Notationen um eine bessere Struktur und Lesbarkeit in die Spezifikation zu bringen. Die erste Notation ist die sogenannte Deklarationspräambel, welche es ermöglicht, einzelne lokale Bezeichner zu definieren. Dies ist allerdings nur in expliziten Operationen zulässig. Ein weitere Vereinfachung ist die def-Anweisung, welche mehrere lokale Definitionen zu einem Ausdruck zusammenfasst. Dies kann in Funktionen und Operationen verwendet werden. Als letztes folgt die let-Anweisung, welche es ermöglicht, alle nachfolgenden Bezeichner durch einen bestimmten Ausdruck zu ersetzen. Dies kann ebenfalls in Funktionen und Operationen verwendet werden. 12.12.2000 / V1.3 Seite 10/16
VDM Seminar in Software Engineering: Spezifikationsverfahren Jens Balkausky WS 2000/01 5. Module Um grosse Systeme beschreiben können, wurden sogenannte Module eingeführt, um die gesamte Spezifikation in unabhängige Einheiten mit eigenen Definitionen, Funktionen, Operationen und Zuständen zerlegen zu können. Jedes Modul besteht aus zwei Hauptteilen: 1. Interface-Block 2. Definitions-Block Diese werden wie folgt weiter aufgegliedert: z. B. An Anfang steht ein beliebiger Modulname. Der Interface-Block besteht einerseits aus dem import Abschnitt, in dem alle Datentypen, Funktionen und Operationen angegeben werden, welche von externen Modulen importiert werden und andererseits aus dem export Abschnitt, in welchem Angaben über die zur Verfügung stellenden Elemente stehen. Der Definitions- Block hat den üblichen Aufbau einer Spezifikation (vgl. Abbildung 1, Seite 3). Es gibt noch zwei optionale Abschnitte im Interface-Block: den parameters und den instantiations Abschnitt. Im ersteren kann definiert werden, ob das Modul für verschiedene Datentypen und Werte verwendet werden kann (Polymorphismus): Im Beispiel ist das Modul somit für die Datentypen Key, Element und Product verwendbar. Der instantiations Abschnitt dient dazu, Module in Modulen aufzurufen und sie entsprechend zu instanzieren: Im Beispiel wird das Modul Ext_List als Index instanziert. Unter types und functions wird wie im vorhergehenden export Abschnitt angegeben, welche Datentypen, Funktionen und Operationen aus diesem Modul verwendet werden sollen. [Schi97] [Harry96] [Fitz97] 12.12.2000 / V1.3 Seite 11/16
VDM Seminar in Software Engineering: Spezifikationsverfahren Jens Balkausky WS 2000/01 6. Software Entwicklung mit VDM Wie zu Beginn des Berichtes bereits festgehalten, handelt es sich bei VDM nicht nur um eine Spezifikationssprache, sondern auch um eine Methode, welche es ermöglicht einen verwend- baren Programmcode aus der Spezifikation zu erhalten. Dieses Kapitel soll nun einen kleinen Einblick in die Vorgehensweise geben. Ausgehend von einer abstrakten Spezifikation besteht das grundsätzliche Vorgehen aus zwei elementaren Schritten: Der Verfeinerung (Refinement) und der Übersetzung (Translation). 6.1. Verfeinerung Jeder Stufe des Verfeinerung führt zu einer konkreteren Stufe der Spezifikation. Da es sich um einen algebraischen Prozess handelt, kann die Korrektheit mit Hilfe von Regeln und Axiomen bewiesen werden. Grundsätzlich besteht eine formale Spezifikation aus zwei Teilen: Datentypen und Funktionen/Operationen. Somit kann die Verfeinerung in zwei Teilprozesse zerlegt werden: der Umwandlung von abstrakten Datentypen in konkrete Datenstrukturen (data reification) und der Umwandlung von Funktionen und Operationen in konkrete Algorithmen (operation decomposition). [Harry96] [Fitz97] Abb. 2: Verfeinerung [Harry96] 6.2. Übersetzung Die Übersetzung ist die Umwandlung der letzten Verfeinerungsstufe, welche sich immer noch in der Notation der formalen Sprache befindet, in einen konkreten Quelltext der zu verwen- denden Programmiersprache. Dieser kann auf einem Computer ausgeführt werden. Die Korrektheit dieses Schrittes kann allerdings nicht formal mit VDM bewiesen werden, da er sehr stark von der Semantik der Spezifikationssprache und der Programmiersprache abhängt. Eine Lösung wäre, die Semantik der Programmiersprache in VDM-SL zu formulieren. Dies würde zu einer Übereinstimmung der Spezifikation und der Implementation führen. In den meisten Fällen sind die Programmiersprachen allerdings überhaupt nicht oder nur sehr schlecht formal spezifiziert worden. 12.12.2000 / V1.3 Seite 12/16
VDM Seminar in Software Engineering: Spezifikationsverfahren Jens Balkausky WS 2000/01 7. Beispiel: Insertion Sort Anhand dieses Beispiels soll nun eine vollständige in VDM-SL verfasste Spezifikation mit den wichtigsten Elementen erläutert werden. Der Algorithmus liefert als Ergebnis eine aufsteigend sortierte Folge von reellen Zahlen. Dabei wird jeweils beginnend mit der zweiten Stelle ein Wert aus der Folge entfernt, alle grösseren Elemente auf der linken Seite nach rechts verschoben und der Wert an der freien Stelle wieder eingefügt. Dies wird für alle Elemente der Folge fortgeführt. -- Definiere PosReal als reelle Zahl -- DoSort erhält eine Folge von reellen Zahlen und -- liefert eine entsprechende Folge zurück -- Rückkehr bei leerer Folge -- Ersetze sorted durch DoSort(Listenende) -- Rekursiver Aufruf mit Listenkopf und DoSort -- InsertSorted erhält eine reelle Zahl und eine Folge -- von reellen Zahlen und lieferte eine Folge zurück -- Falls Folge leer, gib i zurück -- Falls i kleiner als kleinstes Element von l gib -- verknüpfte Folge zurück, ansonsten rekursiver -- Aufruf mit nächst kleineren Folge 8. Vergleich mit Z Gemeinsamkeiten VDM-SL und Z gehören beide zu den modelbasierten Spezifikationssprachen, d. h. sie versuchen beide den Systemzustand in Form eines mathema tisches Modells zu beschreiben. Somit werden sie eingesetzt zur Beschreibung sequentieller, dynamischer und zustands- orientierter Systeme. Sie obliegen dem formalen Kalkül, d. h. sie sind Spezifikationssprachen mit formal definierter Syntax und einer formal definierter Semantik, womit primär dem funktionalen Aspekt von Anforderungen Rechnung getragen wird. Sie basierend auf Mengen, Relationen und prädikatenlogischen Ausdrücken. Beide sind standardisiert und im kommerziellen Bereich relativ weit verbreitet. Spezifikationen werden im Prinzip durch Kombination von flexiblen Datentypen erstellt, wobei die Ähnlichkeiten zur linearen Algebra, insbesondere der Mengenlehre, klar erkennbar sind. Mit beiden Sprachen wird versucht, die Zusammenhänge zwischen Mengen durch Relationen und Funktionen zu definieren. Des weiteren stehen Konstrukte zur Zusicherung und Veränderung des Systemzustandes zur Verfügung. Eine Spezifikation in jeder dieser Sprachen ist immer eindeutig, da die Semantik formal definiert wurde. Es können mathematische Beweise zur Überprüfung von Eigenschaften geführt werden. Unterschiede Allerdings stehen in VDM-SL viel mehr Möglichkeiten zur Verfügung, die einer Program- miersprache entsprechen, um auch Algorithmen beschreiben zu können. Es ist deshalb leichter möglich von einer VDM-SL Spezifikation zu einer konkreten Implementierung zu 12.12.2000 / V1.3 Seite 13/16
VDM Seminar in Software Engineering: Spezifikationsverfahren Jens Balkausky WS 2000/01 gelangen. In Z wurden solche Konstrukte auf ein Minimum reduziert. Sie eignet sich somit eher zur Beschreibung von Systemzuständen. Sie bietet damit jedoch mehr Freiheiten für die effektive Implementierung, weil nicht zu viele Details bereits festgelegt werden können. [Harry96] Die mathematische Semantik beschreibt die zu Grunde liegenden Konzepte, das Deduktions- system und die Mechanismen welche verwendet werden können. Einige Vorgehensweisen legen besonderen Wert auf die konzeptuellen Aspekte, wie z. B. Z, andere auf die Folgerungs- aspekte, wie z. B. VDM-SL. VDM-SL und Z beinhalten ein Paket von flexiblen Datentypen welche während des Schreibens der Spezifikation kombiniert werden müssen. Dagegen werden in algebraischen Spezifikationen die Eigenschaften des zu entwickelnden Systems mit Hilfe eines kleinen vordefinierten Kerns festgelegt. Z basiert vollständig auf Mengen. Alles, insbesondere Funktionen, Relationen, Folgen und Bags, sind im Grunde Mengen mit speziellen, definierenden Eigenschaften. Es ist ausserdem sehr wirksam, alle Mengenoperatoren zu jeder Zeit verfügbar zu haben, wenn die Spezifi- kation aus bereits bestehenden Teilen gebildet wird. Im Vergleich dazu besitzt VDM-SL zahlreichere einfache Datentypen. Insbesondere sind Funktionen von Mengen unabhängig. [Gaud94] VDM besitzt eine eigene Drei-Werte Logik, welche es erlaubt einen undefinierten Zustand zu behandeln. Z dagegen basiert auf einer Zwei-Werte Logik. [Mano97] 9. Zusammenfassung VDM ist eine formale Spezifikationsmethode, welche eine sehr präzise Beschreibung von komplexen Systemen erlaubt. Sie beinhaltet die zugehörige Sprache VDM-SL welche aus klar definierten Datentypen und einer exakten Beschreibungen der möglichen Funktionen und Operationen besteht. Sie soll eine formale Grundlage bieten, welche dazu genutzt werden kann, mit Hilfe von Axiomen mathematische Beweise zu führen, um somit die Fehlerfreiheit der Spezifikation zu garantieren. Ist ein System erst vollständig beschrieben, ist es möglich, innerhalb von zwei Schritten, der Verfeinerung und der Übersetzung, zu einem auf einem Computer lauffähigen Programm zu gelangen. 10. Fazit Stärken Eine in VDM-SL geschriebene Spezifikation ist immer eindeutig, da die Semantik formal definiert wurde und es kann somit die Widerspruchsfreiheit formal überprüft werden. Die Erfüllung gewisser Eigenschaften z. B. Sicherheitsanforderungen über die Nichterreichbarkeit gefährlicher Zustände ist ebenfalls beweisbar. Eine VDM-SL Spezifikation ist lösungsneutral, Programme können formal verifiziert werden und die Modelle sind z. B. in Form von Petrinetzen simulier- bzw. animierbar. Schwächen Die Erstellung einer solchen Spezifikation ist jedoch sehr aufwendig und die Prüfung bzw. der Nachweis der Vollständigkeit wird nicht einfacher. Die gesamte Spezifikation ist nicht ohne profunde Ausbildung lesbar, d. h. eine Prüfung der Adäquatheit durch den Kunden ist nur schwer möglich. Es fehlen Mittel zur Dekomposition, d. h. grosse Spezifikationen sind 12.12.2000 / V1.3 Seite 14/16
VDM Seminar in Software Engineering: Spezifikationsverfahren Jens Balkausky WS 2000/01 auch für Fachleute nur schwer verstehbar. Dies hat zur Folge das die Fehlererkennung, die Prüfung auf Adäquatheit der Anforderungen und die korrekte Umsetzung der Anforderungen im Entwurf sehr kompliziert wird. Ein formale Spezifikation ist teilweise einseitig ausgerichtet, insbesondere auf Funktionen wie z. B. bei einer algebraischen Spezifikation oder auf das Verhalten wie z. B. bei Petrinetzen. Aspekte wie z. B. eine Benutzerschnittstelle sind praktisch nicht modellierbar und die Beschreibung von Ausnahmefällen gestaltet sich sehr schwierig. Zum Teil muss perfekte bzw. abstrakte Technologie angenommen werden. Es eignet sich somit eher für kleine, kritische Teile einer Spezifikation in denen hohe Präzision besonders wichtig ist. [Glinz98] Die zur Verfügung stehende Literatur ist sehr mathematisch und häufig verlieren sich die Autoren in vielen Details. Vielfach besteht der Grossteil eines Buches nicht aus der effektiven Beschreibung der Sprache, sondern in der Erklärung von allgemeinen Beweismethoden mit deren Hilfe die Richtigkeit einer VDM-SL Spezifikation überprüft werden kann. 12.12.2000 / V1.3 Seite 15/16
VDM Seminar in Software Engineering: Spezifikationsverfahren Jens Balkausky WS 2000/01 11. Literaturverzeichnis [Fitz97] John Fitzgerald: VDM Frequently-Asked Questions (V1.5, 20.08.1997) Centre for Software Reliability (CSR) Department of Computing Science, University of Newcastle upon Tyne Newcastle upon Tyne (GB), 1997 http://www.csr.ncl.ac.uk/vdm [Gaud94] M.C. Gaudel: Formal Specification Techniques Proceedings 16th International Conference on Software Engineering, S. 223-227 Sorrento (I), 1994 [Glinz98] Martin Glinz: Teilskript zur Vorlesung «Requirements Engineering» Formale Spezifikation, WS 1998/99 Institut für Informatik, Universität Zürich Zürich (CH), 1998 [Harry96] Andrew Harry: Formal Methods Fact File - VDM and Z John Wiley & Sons, West Sussex (GB), 1996 [Jones90] Cliff B. Jones: Systematic Software Development using VDM (Second Edition) Prentice Hall International (UK) Ltd, Hertfordshire/London (GB), 1990 [Mano97] D. M. Manoranjan: Formal Specification Using Z Faculty of Engineering and Applied Science Memorial University of Newfoundland St. John's, Newfoundland (CND), 1997 http://www.engr.mun.ca/~moorthy/slides/soft/tsld001.htm [Rol92] F. D. Rolland: Programming with VDM The Macmillan Press Ltd, Hampshire/London (GB), 1992 [Schi97] Christian Schiestl: The Vienna Development Method (VDM) Course in Specification Based Program Construction, University of Klagenfurt Klagenfurt (A), 1997 http://www.edu.uni-klu.ac.at/~cschiest [Schm00] Uwe Schmidt: Objektorientierte Software-Entwicklung mit der VDM Class Library Fachhochschule Wedel, F&E-Projekt «Objektorientierte Softwareentwicklung» Wedel (D), 2000 http://www.fh-wedel.de/infos/infrastruktur/spezielle_ab/vdm/vdm-class-lib.html 12.12.2000 / V1.3 Seite 16/16
Sie können auch lesen