VDM (Vienna Development Method) ist eine der etabliertesten modellorientierten formalen Methoden; ihre Wurzeln liegen in der Programmiersprachen-Semantik-Forschung des IBM-Labors Wien in den 1970er-Jahren. Spezifikationen werden in der formalen Sprache VDM-SL geschrieben, deren Semantik in einem ISO-Standard mathematisch festgelegt ist; VDM++ ergänzt objektorientierte Konzepte (Klassen, Vererbung, Threads), VDM-RT erweitert um Echtzeit-Aspekte.
Die Werkzeuge
Das zentrale Open-Source-Werkzeug ist das Overture Tool; sein Kommandozeilen-Kern heißt VDMJ und ist in Java geschrieben. VDMJ unterstützt alle drei Dialekte und kann per vdmj-Kommando gestartet werden, das die VDM-Dateien parst und typisiert.
vdmj -e '1+2' # Ausdruck auswerten
vdmj -i Spez.vdmsl # interaktiv (REPL)
vdmj -p Spez.vdmsl # parsen ohne ausfuehren
vdmj -t Spez.vdmsl # typisieren
VDM-SL im Kern
- Datenmodell: Mengen, Sequenzen, Abbildungen (Maps), Tupel, Records — Typen wie
set of natoderseq of char. - Explizite vs. implizite Spezifikation: explizit mit
f(x) == x+1(ausführbar), implizit über Vor- und Nachbedingungenpre/post. - Zustand:
state-Blöcke mitinv-Invarianten; Operationen mitext-Klauseln (rd/wr) auf Zustandsvariablen. - Logik:
forall/exists-Quantoren,=>,not,and/or,if-then-else,cases.
VDM-Modelle werden primär zur Analyse entwickelt, nicht als Endimplementierung — man validiert sie im Interpreter, testet Invarianten und generiert daraus Code.
Verwandte formale Methoden: Isabelle, TLA+, Alloy sowie PVS und Frama-C.