Anwendung Formaler Verifikation
Vorlesung im Sommersemester 2012
Prof. Dr. Bernhard Beckert (BB)
Dr. Vladimir Klebanov (VK)
Zielgruppe: | Diplom Informatik, Master Informatik |
---|---|
Umfang: | 3 SWS |
Vertiefungsfächer: | Theoretische Grundlagen und Softwaretechnik und Übersetzerbau |
Ort: | SR 236 (Geb. 50.34) |
Zeit: | Do 11:30-13:00 und Fr 11:30-13:00 |
Erstmals: | Do 19.04.2012 |
LVNr.: | 24625 |
Aktuelles
- 2012-06-25: Keine Vorlesung am 6. Juli
- 2012-06-01: Keine Vorlesung am 8. Juni (Brückentag)
- 2012-05-11: Keine Vorlesung am 18. Mai (Brückentag)
- 2012-04-25: Erste Version der virtuellen Maschine verfügbar
Anwendung formaler Verifikation
Methoden für die formale Spezifikation und Verifikation - zumeist auf der Basis von Logik und Deduktion - haben einen hohen Entwicklungsstand erreicht. Es ist zu erwarten, dass sie zukünftig traditionelle Softwareentwicklungsmethoden ergänzen und teilweise ersetzen werden. Formale Methoden haben den Bereich akademischer Fallstudien hinter sich gelassen, und die Softwareindustrie zeigt ernsthaftes Interesse.
Nahezu sämtliche formale Spezifikations- und Verifikationsverfahren haben zwar die gleichen theoretisch-logischen Grundlagen, wie man sie etwa in der Vorlesung "Formale Systeme" kennenlernt. Zum erfolgreichen praktischen Einsatz müssen die Verfahren aber auf die jeweiligen Anwendungen und deren charakteristischen Eigenschaften abgestimmt sein. An die Anwendung angepasst sein müssen dabei sowohl die zur Spezifikation verwendeten Sprachen als auch die zur Verifikation verwendeten Kalküle.
Auch stellt sich bei der praktischen Anwendung die Frage nach der Skalierbarkeit, Effizienz und Benutzbarkeit (Usability) der Verfahren und Werkzeuge.
Terminplan
Die Veranstaltung hat 3 SWS, also 21 Doppelstunden im Semester. Entsprechend besteht jede der sieben Einheiten aus zwei Doppelstunden Vorlesung und einer Doppelstunde Übung, in denen die Verfahren anhand konkreter Verifikatiossysteme von den Studierenden praktisch erprobt werden. Vorlesung und Übung gehen dabei fließend ineinander über.
Dieser Plan ist nicht endgültig. Verschiebungen sind möglich.
Donnerstag, 11:30-13:00, SR 236 | Freitag, 11:30-13:00, SR 236 |
19.04.2012: V/Ü | 20.04.2012: V/Ü |
26.04.2012: V/Ü | 27.04.2012: V/Ü |
03.05.2012: V/Ü | 04.05.2012: V/Ü |
10.05.2012: V/Ü | 11.05.2012: V/Ü |
17.05.2012: --- (Chr. Himmelfahrt) | 18.05.2012: --- |
24.05.2012: V/Ü | 25.05.2012: V/Ü |
31.05.2012: V/Ü | 01.06.2012: V/Ü |
07.06.2012: --- (Fronleichnam) | 08.06.2012: --- |
14.06.2012: V/Ü | 15.06.2012: V/Ü |
21.06.2012: V/Ü | 22.06.2012: V/Ü |
28.06.2012: --- | 29.06.2012: --- |
05.07.2012: V/Ü | 06.07.2012: --- |
12.07.2012: V/Ü | 13.07.2012: V/Ü |
19.07.2012: V/Ü | 20.07.2012: V/Ü |
Materialien
Virtuelle Maschine mit vorinstallierten Verifikationswerkzeugen
VM Image, Dokumentation (für ein ähnliches System)
Verifikation funktionaler Eigenschaften imperativer und objekt-orientierter Programme: KeY-System
KeY wird am KIT, der TU Darmstadt, und an der Chalmers University of Technology in Göteborg entwickelt. Es ist ein Softwareverifikationswerkzeug, mit dem die Übereinstimmung von Java-Programmen und ihrer Spezifikation formal bewiesen werden kann.
Das KeY-System besitzt eine graphische Benutzeroberfläche und ist komplett in Java geschrieben, so dass es auf jeder Plattform, für die eine virtuelle Maschine für Java zur Verfügung steht, lauffähig ist.
Version 1.6 ist die zuletzt veröffentlichte Version und kann über die Dowloadseite des KeY-Projektes bezogen werden. Wenn Sie die Software Java Web Start installiert haben (auf fast allen modernen Systemen mit Java der Fall), können Sie KeY auch direkt aus dem Internetbrowser heraus starten, ohne etwas installieren zu müssen.
Bitte installieren Sie KeY auf Ihrem Rechner. Falls Sie nicht schon zuvor Erfahrung mit KeY gesammelt haben, arbeiten Sie bitte die Einführung zum Beweisen von prädikatenlogischen Formeln mit KeY durch.
Materialien
- Folien Einführung in JML
- Folien Java DL
- Beispiele
- Übungsblatt
- JML Home
Lektüre:
- Einführung zum Beweisen von prädikatenlogischen Formeln mit KeY (KeYIntro.pdf)
- Zusammenfassung JML: Deductive verification of object-oriented software (nur Kapitel 2)
- The KeY Book Kapitel 5.1, 5.3, 10, 3
- JML Reference Manual
Model Checker SPIN
Bitte installieren Sie Spin und das Frontend jspin auf Ihrem Rechner. Um Spin in vollem Umfang nutzen zu können, ist ein C-Compiler notwendig. Bei der Installation von jspin ist es nötig, die Pfade zu spin usw. in der Datei config.cfg korrekt anzugeben.
Materialien
- Folien Einführung in Promela
- Folien Einführung in SPIN
- Folien Modellierung von Nebenläufigkeit
- Folien Model Checking mit LTL
- Übungsblatt
- Beispiele
Lektüre:
- (kurz) The Model Checker SPIN
- (länger) Principles of the Spin Model Checker (verfügbar im KIT-Netz)
- (lang) Gerard J. Holzmann: The SPIN Model Checker: Primer and Reference Manual. Addison-Wesley Professional, 2004.
Deduktive Verifikation nebenläfiger Programme in Isabelle/HOL
Rely-Guarantee ist eine Technik für die deduktive Verifikation nebenläufiger Programme. Sie wird in modernen Verifikationssystemen eingesetzt, wie z.B. dem Verifying C Compiler von Microsoft Research. Wir werden Rely-Guarantee anhand einer Formalisierung im generischen Beweiser Isabelle/HOL kennenlernen.
Materialien
- Folien von Leonor Prensa Nieto (Autorin der Formalisierung von Rely-Guarantee in Isabelle)
- Beispiele
- Übungsblatt
Lektüre:
- Artikel zum Thema (weiterführende Lektüre)
Hinweise:
- Laden von Beispielen mit:
isabelle jedit <dateiname.thy>
Verifikation von Echtzeiteigenschaften: UPPAAL
UPPAAL ist eine Toolumgebung zur Modellierung, Validierung und Verifikation von Echtzeitsystemen, die als Timed-Automata modelliert werden.
Eine Installationsanleitung befindet sich in dem Paket, welches auf der Projektseite zum Download zur Verfügung steht. Alternativ ist UPPAAL in der virtuellen Maschine installiert.
Materialien
- Folien: Einführung in UPPAAL - relevant sind Folien 25-51, 73-100
- Folien: Weitere Themen zu UPPAAL - relevant sind Folien 97-109
- Das Vikinger-Beispiel ist Teil der UPPAAL-Distribution (demo/bridge.xml)
- Übungsblatt (Teilmodell)
- Hilfreich als Referenz: UPPAAL-Onlinehilfe
- UPPAAL-Tutorial
- Zeno's paradoxes (Wikipedia)
- How to Stop Time Stopping - weiterführende Lektüre
Modellierung und Verifikation in Rewriting Logic/Maude
Maude ist ein Termersetzungssystem, ein Hochleistungsinterpreter für Spezifikationen in Rewriting Logic. Als Anwendung werden wir u.a. Verifikation mittels ausführbarer Java-Semantik JavaFAN behandeln. Die Maude-Webseite enthält das Manual (entspricht weitgehend dem Maude-Buch) und einen Primer (Einführung).
Materialien
- Folien: Einführung in Maude - relevant sind Folien 1-36, 56-79 (Folien freundlich überlassen von Narciso Martí-Oliet)
- Folien: JavaFAN (Folien freundlich überlassen von Grigore Rosu)
- Beispiele
- Übungsblatt
Lektüre:
- All About Maude (Nachschlagewerk/weiterführende Lektüre)
Verifikation von Informationsflusseigenschaften
- Folien: Deduktive Verifikation von Informationsflusseigenschaften mit KeY
- Beispiele
- Tool: Rewriting-basierte Verifikation von Informationsflusseigenschaften mit Maude
Link zur Webseite des vorigen Jahres