Eduard Sauerbrei eddie@uni-muenster.de Formale Techniken Eduard Sauerbrei eddie@uni-muenster.de.

Slides:



Advertisements
Ähnliche Präsentationen
Excel – Kurs Philip Clasen
Advertisements

Temporale Logiken: LTL und CTL
Matrixmultiplikation
Rekursion: Rekurrenz: Algorithmen rufen sich selbst (rekursiv) auf.
Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel durch eine Rekursionsformel (recurrence,
6. Regelbasierte Systeme
LTL - Modellüberprüfung
Algebraische Zahlen: Exaktes Rechnen mit Wurzeln
Rekursion vs. Iteration
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Software-Engineering II Eingebettete Systeme, Softwarequalität, Projektmanagement Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt.
Bounded Model Checking II
Zusammenfassung der Vorwoche
Foliensatz von A. Weber zur Vorlesung Informatik I, Bonn, 2002/03
Default Logiken Zhao Li
8. Formale Sprachen und Grammatiken
Hauptseminar Modellüberprüfung Kathrin Ott
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Einführung in Berechenbarkeit und Formale Sprachen
An Axiomatic Proof Technique for Parallel Programs
Terminierung und Deadlocks Enkhbat Daginaa Betreuerin Prof. Heike Wehrheim Totale Korrektheit.
1 Computergestützte Verifikation SAT-basiertes Model Checking Ansatz: Übersetze das Model Checking Problem in ein aussagenlogisches Erfüllbarkeitsproblem.
1 Computergestützte Verifikation SAT-basiertes Model Checking Ansatz: Übersetze das Model Checking Problem in ein aussagenlogisches Erfüllbarkeitsproblem.
Software-Engineering II Eingebettete Systeme, Softwarequalität, Projektmanagement Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt.
Scratch Der Einstieg in das Programmieren. Scatch: Entwicklungsumgebung Prof. Dr. Haftendorn, Leuphana Universität Lüneburg,
Funktionalität Vorhandensein vor Funktionen mit festgelegten Eigenschaften. Diese Funktionen erfüllen die definierten Anforderungen. Richtigkeit - Liefern.
Übung 6.1Turing-Maschine 1.Machen Sie sich mit der Funktionsweise des Busy Beaver-Programms vertraut Vollziehen sie die 11 Schritte der ersten Turing-Tabelle.
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 2 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
© 2006 W. Oberschelp, G. Vossen Rechneraufbau & Rechnerstrukturen, Folie 2.1.
Grundkurs Theoretische Informatik, Folie 2.1 © 2006 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 2 Gottfried Vossen Kurt-Ulrich Witt.
Symbolisches Model Checking mit Binary Decision Diagrams
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Christian Schindelhauer
AC Analyse.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Isabelle/HOL ( Kripke Structures & Model Checking ) Ying Wang, Nelli Bärsch, Bartosz Rynarzewski,
Bild 1.1 Copyright © Alfred Mertins | Signaltheorie, 2. Auflage Vieweg+Teubner PLUS Zusatzmaterialien Vieweg+Teubner Verlag | Wiesbaden.
20:00.
Materialien zum Informatikunterricht (Pohlig-Häberle)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Polynome und schnelle Fourier-Transformation
Wiederholte Programmausführung
Analyse von Ablaufdiagrammen
2.4 Rekursion Klassifikation und Beispiele
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Analyseprodukte numerischer Modelle
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Integritätserhaltung und -Überprüfung in deduktiven Datenbanken
Korrektheit von Programmen – Testen
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen
Modellbasierte Software- Entwicklung eingebetteter Systeme Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt Universität und Fraunhofer.
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
Dr. Wolfram Amme, Verifikation imperativer Programme, Informatik II, FSU Jena, SS Verifikation von imperativen Programmen.
Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Semantik funktionaler Programme.
 Präsentation transkript:

Eduard Sauerbrei eddie@uni-muenster.de Formale Techniken Eduard Sauerbrei eddie@uni-muenster.de

Agenda Motivation Verifikation Symbolischer Test Zusammenfassung Hoare-Kalkül Model Checking Bounded Model Checking Symbolischer Test Zusammenfassung

Motivation Anteil der SW-Kosten höher als der HW-Kosten. Längere Lebensdauer der Software (SW). SW-Kosten hoch in der Wartungsphase, insb. durch die Fehlerbehebung. Kosten im Falle von „SW-Versagen“ (HW-Verlust, Schadensersatzansprüche etc.). SW soll wenige Fehler beinhalten oder gar fehlerfrei sein  formale Techniken zum Beweis von Korrektheit der SW

Korrektheit der SW Partielle Korrektheit Totale Korrektheit Programm liefert das richtige Ergebnis Annahme: Programm terminiert Totale Korrektheit Programm partiell korrekt Beweis: Programm terminiert (Terminationsbeweis)

Formale Techniken (Einordnung)

Formale Techniken (Eigenschaften) Programmcode enthält alle wichtigen Informationen. Wirkungen von Programmen auf hohem Abstraktionsniveau mit mathematischen Mitteln ermittelt  keine Ausführung einer Programminstanz Verzicht auf stichprobenartige Tests

Verifikation Ziel: Beweis der Konsistenz zw. der Spezifikation und Implementierung Spezifikation beschreibt formal die geforderten Eigenschaften des Programms formal: temporallogische Ausdrücke (Bounded Model Checking) Ein-/ Ausgangszusicherungen (Hoare-Kalkül) Außerdem notwendig: formal spezifizierte Semantik der Programmiersprache

Hoare-Kalkül (Allgemein) Halb-automatisches Verifikationsverfahren Programm: Sequenz von Zuständen und Pfaden Zustände: als Variablenwerte repräsentiert Gültige logische Aussagen in Bezug auf Variablen als Zusicherungen (assertions) bezeichnet Spezifikation des Programms: Eingangs- und Ausgangszusicherung des Programms {Q} S {R}

Zusicherungen Vor der Ausführung einer Anweisung S gilt die Vorbedingung Q Nach der Ausführung von S gilt die Nachbedingung R boolsche Ausdrücke (Prädikatenlogik) über Variablenwerte (Zustände) des Programms Allquantor und Existenzquantor

Semantik / Beweisregeln WHILE-Sprache mit folgenden Konstrukten Arithmetische Ausdrücke Boolsche Ausdrücke Programmanweisungen (Zuweisung, skip-, if-, while-Konstrukte) Axiomatische Semantik 6 Beweisregeln

Zuweisungsaxiom (A1) gegeben: Nachbedingung R gesucht: passende Vorbedingung RAx Vorgehen: alle Vorkommen von x in R durch A zu ersetzen

IF-Regel (A2) gegeben: zwei Programmstücke S1, S2 Q, R und Bedingung B Falls im Zähler in angegebener Form  Zusammenfassung zum Nenner möglich

Konsequenzregel (A3, A4) gegeben: Programmanweisung S Q‘ und R‘ Q‘ kann durch schärfere Vorbedingung Q ersetzt werden (A3) R‘ kann durch schwächere Nachbedingung R ersetzt werden (A4)

Sequenzregel (A5) gegeben: Programmanweisungen S1, S2 Q‘ ist Nachbedingung von S1 und Vorbedingung von S2 S1 und S2 können als Sequenz geschrieben werden ohne die Bedingung Q‘

WHILE- Regel (A6) gegeben: Schleifeninvariante P und Bedingung B S wird solange wiederholt, bis die B nicht mehr erfüllt ist

Schleifeninvariante Zusicherung an der Schnittstelle einer Schleife Ergibt unabhängig von der Anzahl der Schleifendurchläufe immer eine wahre Aussage Gilt vor und nach der Ausführung der Schleife Geeignete Invariante kann nicht automatisch gefunden werden. Wird Meistens aus der Nachbedingung abgeleitet . Richtige Invariante?  Beweis durch vollständige Induktion

Beispiel {x > 0 y > 0} z := 0; n := x; while n > 0 do begin z := z + y; n := n – 1; end; {(z = x * y) (n = 0) (y > 0)} Programm zur Multiplikation von zwei positiven ganzen Zahlen Schleifeninvariante: (z + ny = xy) (n >= 0) (y > 0).

Beispiel {x > 0 y > 0} z := 0; n := x; {(z + ny = xy) (n >= 0) (y > 0)} while n > 0 do begin z := z + y; n := n – 1; end; {(z = x * y) (n = 0) (y > 0)} Programm zur Multiplikation von zwei positiven ganzen Zahlen Schleifeninvariante: (z + ny = xy) (n >= 0) (y > 0).

Beispiel Q {x > 0 y > 0} z := 0; n := x; {(z + ny = xy) (n >= 0) (y > 0)} while n > 0 do begin z := z + y; n := n – 1; end; R {(z = x * y) (n = 0) (y > 0)} Herleitung der Eingangszusicherung Q aus der Ausgangszusicherung R durch Anwendung der Regeln  partielle Korrektheit bewiesen.

Beispiel Q {x > 0 y > 0} z := 0; n := x; Inv {(z + ny = xy) (n >= 0) (y > 0)}

Beispiel Q {x > 0 y > 0} z := 0; (A1) n := x; Inv {(z + ny = xy) (n >= 0) (y > 0)}

Beispiel Q {x > 0 y > 0} z := 0; {(z + xy = xy) (x >= 0) (y > 0)} (A1) n := x; Inv {(z + ny = xy) (n >= 0) (y > 0)}

Beispiel Q {x > 0 y > 0} (A1) z := 0; {(z + xy = xy) (x >= 0) (y > 0)} (A1) n := x; Inv {(z + ny = xy) (n >= 0) (y > 0)}

Beispiel Q {x > 0 y > 0} {(0 + xy = xy) (x >= 0) (y > 0)} (A1) z := 0; {(z + xy = xy) (x >= 0) (y > 0)} (A1) n := x; Inv {(z + ny = xy) (n >= 0) (y > 0)}

Beispiel Q {x > 0 y > 0} {(0 + xy = xy) (x > 0) (x = 0) (y > 0)} {(0 + xy = xy) (x >= 0) (y > 0)} (A1) z := 0; {(z + xy = xy) (x >= 0) (y > 0)} (A1) n := x; Inv {(z + ny = xy) (n >= 0) (y > 0)}

Beispiel Q {x > 0 y > 0} (A3) {(0 + xy = xy) (x > 0) (x = 0) (y > 0)} {(0 + xy = xy) (x >= 0) (y > 0)} (A1) z := 0; {(z + xy = xy) (x >= 0) (y > 0)} (A1) n := x; Inv {(z + ny = xy) (n >= 0) (y > 0)}

Beispiel Q {x > 0 y > 0} {(0 + xy = xy) (x > 0) (y > 0)} (A3). {(0 + xy = xy) (x > 0) (x = 0) (y > 0)} {(0 + xy = xy) (x >= 0) (y > 0)} (A1) z := 0; {(z + xy = xy) (x >= 0) (y > 0)} (A1) n := x; Inv {(z + ny = xy) (n >= 0) (y > 0)} Damit das obere Teil des Programms (rückwärts) bewiesen

Beispiel Bei der Ausführung des Schleifenrumpfes, d.h. B gilt: Inv {(z + ny = xy) (n >= 0) (y > 0)} while n > 0 do begin B=(n>0) {(z + ny = xy) (n > 0) (y > 0)} z := z + y; n := n – 1; (A1, A5) {(z+y + (n-1)y = xy) (n-1 > 0) (y > 0)} wg. n-1 {(z + ny = xy) (n >= 0) (y > 0)} = Inv!

Beispiel Wenn die Schleifenbedingung B nicht gilt: Inv {(z + ny = xy) (n >= 0) (y > 0)} while n > 0 do begin ... end; {(z + ny = xy) (n >= 0) (n >0) (y > 0)} R {(z = x * y) (n = 0) (y > 0)} Damit der untere Teil des Programms, sowie die partielle Korrektheit des gesamten Programms bewiesen.

Terminationsfunktion t Notwendig, um beweisen zu können, dass die Schleife terminiert (totale Korrektheit) Wird jedem Schleifendurchlauf zugeordnet Wertbereich: ganzzahlige nicht-negative Zahlen Mit jedem Schleifendurchlauf sollte der Wert kleiner werden  streng monoton fallende Folge  Schleife terminiert Für obiges Beispiel t = n  Schleife terminiert  Programm total korrekt!

Bounded Model Checking (Allgemein 1/2) BMC ist ein automatisches Verifikationsverfahren Verifikation von zustandsbasierten nebenläufigen Systemen Für reaktive Systeme verwendet, welche nicht terminieren  z.B. Kommunikationsprotokolle, Betriebssysteme auch für eingebettete Systeme Systemverhalten durch Zustände beschrieben Zustände als Bitfolge dargestellt Zustände und Zustandsübergänge als Kripke-Strukturen beschrieben und als gerichteter Graph modelliert

Bounded Model Checking (Allgemein 2/2) Idee: nur endlich lange Pfade betrachten und daraus das Verhalten des Systems bei unendlich langen Pfaden schließen Vorgehen: entlang der Pfade im Baum überprüfen, ob die Eigenschaft erfüllt wird. Ergebnis des Verfahrens: gezeigt, dass die Eigenschaften (logische Formeln) erfüllt werden, oder Gegenbeispiel  Verbesserung der Systems

Kripke-Modell Quintupel M= M = (S, I, T, A, l )

Beispiel: Kripke-Modell

Temporallogische Ausdrücke Bilden die Spezifikation, d.h. gewünschte Eigenschaften als temporallogische Ausdrücke angegeben Temporallogik ist um die Temporaloperatoren (TO) erweiterte Aussagenlogik TO erlauben Aussagen über zukünftiges Verhalten des Systems Verschiedene zeitliche Modelle liegen zugrunde: Verzweigte Zeit: Computation Tree Logic Lineare Zeit: Linear Temporal Logic (LTL)

LTL-Operatoren Bilden die Spezifikation Temporallogische Aussagen werden in aussagenlogische übersetzt  Entscheidbarkeitsproblem der Aussagenlogik

SAT-Tools Vorteil der Übersetzung in aussagenlogisches Problem: schnelle und effiziente Prüfung durch SAT-Tools SAT-Verfahren bilden Variationen des Davis-Putman-Algorithmus

Symbolischer Test (1/3) Symbolische Ausführung eines Programms Variablen des Programms statt konkreter mit symbolischen Werten versehen Anschließend Ausführung durch einen Interpreter  künstliche Umgebung es werden Wertbereiche abgedeckt  kein Stichprobencharakter Aber: es wird kein mathematischer Korrektheitsbeweis erbracht

Symbolischer Test (2/3) Ergebnis der Ausführung: Baum von Anweisungen (symbolischer Ausführungsbaum) Wurzel: Programmbeginn Blätter: Pfadbedingung (logische Ausdrücke) symbolischer Wert der Ausgabevariablen Pfadbedingung: gibt an, wie die Eingaben sein müssen, um den Wert der Ausgabevariablen zu bekommen

Symbolischer Test (3/3) Bedingungen für den ST: Kleine Anzahl von Pfaden (keine Schleifen mit Abbruchbedingung im Schleifenkörper) Vermeidung von bestimmten Datenstrukturen, z.B. Fließpunktdatentypen Korrektheit gezeigt bei Überdeckung zw. Eingabebereich und Pfadbedingungen sowie Übereinstimmung zw. Ergebnisausdrücken und Spezifikation

Zusammenfassung (1) Hoare-Kalkül: Problematisch neben Schleifen sind die Rekursionen  vollständige Induktion Höherer Aufwand  bei umfangreichen und komplexen Programmen Beweis manchmal unmöglich Kein Verzicht auf konventionelles Testen  z.B. Gleitpunktarithmetik Halb-automatisch (Invarianten, Beweise)  viele Werkzeuge Menschlicher Irrtum beim Beweis  Verifikation kann Fehler beinhalten

Zusammenfassung (2) BMC: Symbolischer Test Nicht Terminierung, sondern Erfüllung von best. Eigenschaften im Vordergrund (Lebendigkeit, Sicherheit)  keine totale Korrektheit Partielle Korrektheit mit vollständiger Sicherheit nicht beweisbar  Schließen von nicht-terminierenden auf terminierende Systeme Schneller als z.B. das Symbolic Model Checking Automatisches Verfahren  Werkzeugunterstützung gegeben (SATO, PROVE) Symbolischer Test Kein Korrektheitsbeweis nur Fehleraufdeckung Eingabebereiche überprüft  größere Leistungsfähigkeit im Ggs. zu konventionellen Tests Maschineneigenschaften nicht berücksichtigt  z.B. Fließpunktzahlen Kein Verzicht auf konventionelle Tests Einsatz als Testdatengenerator

Zusammenfassung (3) höhere Sicherheit bzgl. der Fehlerfreiheit ggü. den konventionellen Testverfahren Bei alle Verfahren Compilerfehler möglich  damit vollständige Fehlerfreiheit der SW durch alleinige Anwendung nicht erreichbar für sicherheits- und funktionskritische Bereiche