Ein Erfahrungsbericht zur Deduktiven Verifikation mit KeY : Masterarbeit
Die Qualität von Software hängt direkt von ihrer Zuverlässigkeit ab. Um diese sicherzustellen, kommen verschiedene Techniken zum Einsatz. Die bekanntesten Techniken hierzu sind testen und Code-Reviews, diese sind jedoch nicht formal. Deduktive Verifikation stellt eine statische, formale Alternative hierzu dar. Der Vorzug dieser Lösung ist, dass nicht einzelne Ausführungen getestet werden, sondern dass das korrekte Verhalten mit Hilfe von Deduktionen bewiesen werden kann. Trotz dieses großen Vorzuges wird die Technik jedoch scheinbar nur spärlich eingesetzt. In dieser Arbeit wird deshalb das Vorgehen mit KeY, einem Werkzeug zur deduktiven Verifikation von Java-Quelltext, an Hand der bestehenden Java Platform API exemplarisch vorgenommen, um den Aufwand einer solchen Verifikation zu betrachten und Probleme und Lösungen zu erkennen. Hierzu werden zunächst einzelne Methoden der Java-Platform-API spezifiziert und mit KeY verifiziert. Die Erfahrungen aus dieser Arbeit dienen späteren Anwendern, wenn sie ähnliche Fälle betrachten, und den Entwicklern von KeY, um die Verifikation zu vereinfachen. Da die Wahl der richtigen Optionen für die Beweisbarkeit und den Beweisaufwand entscheidend ist, spielen diese bei der Arbeit mit KeY eine zentrale Rolle. Deshalb werden aus vorliegenden Beschreibungen Hypothesen entwickelt, die anschließend mit Hilfe der zuvor erstellten Spezifikationen quantitativ untersucht werden. Um die Untersuchung durchzuführen, wurden zahlreiche Verifikationen durchgeführt. Die im Rahmen dieser Experimente ermittelten Daten werden ebenfalls genutzt, um mit Hilfe von SPLConqueror ein Modell zu berechnen, dass den Aufwand einer Verifikation in Abhängigkeit ihrer Optionen beschreiben soll. Mit Hilfe der Hypothesen, dem Modell und den Erfahrungen aus der Spezifikation werden Empfehlungen für Anpassungen an KeY erarbeitet. Die Hypothesen können außerdem zukünftige Anwender bei der Auswahl der richtigen Optionen unterstützen. Dadurch wird ein leichterer Einstieg in die Arbeit mit KeY ermöglicht.