1) Einführung in die formale Verifikation



Ähnliche Dokumente
Semantik von Formeln und Sequenzen

Professionelle Seminare im Bereich MS-Office

Grundbegriffe der Informatik

Informationsblatt Induktionsbeweis

Übung: Verwendung von Java-Threads

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Prolog basiert auf Prädikatenlogik

Programmierkurs Java

geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Gehen wir einmal davon aus, dass die von uns angenommenen

Primzahlen und RSA-Verschlüsselung

Anti-Botnet-Beratungszentrum. Windows XP in fünf Schritten absichern

Whitebox-Tests: Allgemeines

Speicher in der Cloud

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

Erfolg und Vermögensrückgänge angefertigt im Rahmen der Lehrveranstaltung Nachrichtentechnik von: Eric Hansen, am:

Java: Vererbung. Teil 3: super()

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.

Theoretische Grundlagen des Software Engineering

Sudoku-Informatik oder wie man als Informatiker Logikrätsel löst

1 Mathematische Grundlagen

Lineare Gleichungssysteme

Zahlen und das Hüten von Geheimnissen (G. Wiese, 23. April 2009)

Seamless Model-based Engineering of a Reactive System

Java Entwicklung für Embedded Devices Best & Worst Practices!

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

Mai Hauptseminar: Nichtrelationale Datenbanken Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln

Klausur zur Einführung in die objektorientierte Programmierung mit Java

EINFACHES HAUSHALT- KASSABUCH

Informatik I Debugging

Einführung in. Logische Schaltungen

Ein Tool für automatische Performancetests von Java3D Applikationen

WINDOWS 10 Upgrade. Beispiel: Desktop-Ausschnitt von vorhandenem WIN 8.1 (rechte Ecke der Taskleiste)

Urlaubsregel in David

Formale Methoden II. Gerhard Jäger. SS 2008 Universität Bielefeld. Teil 8, 11. Juni Formale Methoden II p.1/30

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Grammatiken. Einführung

Grundlagen der Theoretischen Informatik, SoSe 2008

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Prädikatenlogik - Micromodels of Software

Grundlagen der Künstlichen Intelligenz

Formale Sprachen und Grammatiken

Motivation. Motivation

Fragebogen ISONORM 9241/110-S

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

7 Rechnen mit Polynomen

Logische Folgerung. Definition 2.11

Studieren- Erklärungen und Tipps

SEP 114. Design by Contract

Das System sollte den Benutzer immer auf dem Laufenden halten, indem es angemessenes Feedback in einer angemessenen Zeit liefert.

Probeklausur. Lenz Belzner. January 26, Lenz Belzner Probeklausur January 26, / 16

Internet Explorer Version 6

Mathematik. UND/ODER Verknüpfung. Ungleichungen. Betrag. Intervall. Umgebung

Printserver und die Einrichtung von TCP/IP oder LPR Ports

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

Berühmt berüchtigte Softwarefehler. Der Pentium Division-Bug. vorgetragen von: Sebastian Knieschewski

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Universität Paderborn Die Universität der Informationsgesellschaft. Validierung und Verifikation (inkl. Testen, Model-Checking, Theorem Proving)

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Anhand des bereits hergeleiteten Models erstellen wir nun mit der Formel

Das Pflichtenheft. Dipl.- Ing. Dipl.-Informatiker Dieter Klapproth Ains A-Systemhaus GmbH Berlin

Fragebogen: Abschlussbefragung

Erster Bug: eine Motte

Inhaltsverzeichnis. Handbuch zur Installation der Software für die Bürgerkarte

Simulation LIF5000. Abbildung 1

Wie oft soll ich essen?

Robot Karol für Delphi

Lineare Gleichungssysteme

Qualitätsmanagement. Grundlagen

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Applikations-Performance in Citrix Umgebungen

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus:

Aktivierung der SeKA-Anmeldung

Formeln. Signatur. aussagenlogische Formeln: Aussagenlogische Signatur

Anleitung zur Inbetriebnahme einer FHZ2000 mit der homeputer CL-Software

Übersicht U7-U10 Turniere in Fußball Online

Info-Veranstaltung zur Erstellung von Zertifikaten

Zahlen auf einen Blick

Dokumentation von Ük Modul 302

Typisierung des Replikationsplan Wirries, Denis Datenbankspezialist

Data Mining: Einige Grundlagen aus der Stochastik

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

Leichte-Sprache-Bilder

Übungen zur Softwaretechnik

Qualitätsmanagement im Projekt

Programmieren Formulierung eines Algorithmus in einer Programmiersprache

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Zeichen bei Zahlen entschlüsseln

9. Übung Formale Grundlagen der Informatik

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Updatehinweise für die Version forma 5.5.5

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Was meinen die Leute eigentlich mit: Grexit?

Wie optimiert man die Werbungserkennung von Ad- Detective?

Transkript:

1) Einführung in die formale Verifikation

GPS: Einführung in die formale Verifikation Fehlerbehaftete Systeme 9 Wofür formale Verifikation? steigender Einsatz von Computertechnologie im Alltag Internet, Mobiltelefonie, E-Banking, Flugzeug- und Autosteuerungen, Börsentransaktionen, medizinische Systeme... durchschnittliche Anzahl Benutzungen pro Mensch und Tag 1995: 25 Versagen solcher Systeme ist im Bereich zwischen ärgerlich... lebensbedrohend

GPS: Einführung in die formale Verifikation Fehlerbehaftete Systeme 10 Was so alles passieren kann...... wenn die Programme nicht korrekt funktionieren hoher ökonomischer Schaden für Hersteller oder Anwender herber Verlust unnötige Maintenance... Beispiele: Intel TM Pentium TM II FPU Bug 1994 $420.000.000 von Intel zur Schadensbehebung bereitgestellt einige Einträge in Tabelle für Divisionen fehlten

GPS: Einführung in die formale Verifikation Fehlerbehaftete Systeme 11 Was so alles passieren kann...... wenn die Programme nicht korrekt funktionieren Softwarefehler im Gepäcktransportsystem des Flughafens in Denver 1993-94 $1.100.000 Verlust pro Tag über 9 Monate hinweg ganzes System instabil Ausfall des Kommunikationssystems am Flughafen L.A. 2004 plötzlich kein Kontakt zu ca. 400 Flugzeugen in der Luft System nutzte 32Bit-Integer für Countdown-Timer in msec 2 32 msec 50 Tage automatischer Shutdown nach 7 Wochen Abhilfe: Techniker rebootet alle 30 Tage Crash der Ariane-5-Rakete 1997 fehlgeschlagene Konvertierung von 64Bit- auf 16Bit-Wert mit Shutdown Backup-System war identisch

GPS: Einführung in die formale Verifikation Fehlerbehaftete Systeme 12 Was so alles passieren kann...... wenn die Programme nicht korrekt funktionieren Mars Pathfinder 1997 ständige Resets mit jeweiligen Datenverlust Bug in einem Task Scheduler: niedrig priorisierter Thread konnte höher priorisierten Thread blockieren Therac-25 Bestrahlungsmaschine 1985-1987 automatische Steuerung ließ 100fache Überdosierung zu zwei verschiedene Modi (Intensität und Ausrichtung) vermischt 3 von 6 Krebspatienten kurz danach tot... mehr auf http://www.cse.lehigh.edu/~gtan/bug/softwarebug.html

GPS: Einführung in die formale Verifikation Fehlerbehaftete Systeme 13 Warum sind Systeme fehleranfällig? verschiedene Gründe: Größe Windows XP ca. 40.000.000 Zeilen Sourcecode Modularisierung Komponenten interagieren über Schnittstellen, die spezifiziert werden müssen Umgebung einer Komponente ist evtl. unbekannt Zustandsraum ist exponentiell in Anzahl involvierter Komponenten Nebenläufigkeit race conditions bei Multi-Thread-Systemen schwer vorhersehbar...

GPS: Einführung in die formale Verifikation Verifikation 14 Verifikation Verifikation = Erbringen eines Beweises dass ein gegebenes Programm sich an eine gegebene Spezifikation hält vage: das Programm ist korrekt Programm ist hier erst einmal abstrakt zu verstehen: Hardware, Software, etc. beachte: Verifikation ist im Allgemeinen natürlich unentscheidbar (warum?) verschiedene Techniken zur Verifikation gewisser Programme und gewisser Eigenschaften Verifikation mittlerweile üblicher und essentieller Bestandteil der Systementwicklung

GPS: Einführung in die formale Verifikation Verifikation 15 Der Designzyklus Programme, insbesondere große Systeme, werden nicht ad-hoc erstellt siehe z.b. Wasserfallmodell aus Software Engineering beachte: muss nicht so sein!

GPS: Einführung in die formale Verifikation Verifikation 16 Verifikation im Designzyklus wird Fehler während Verifikationsphase entdeckt, so muss man wieder weiter oben einsteigen je früher Fehler entdeckt werden, desto besser: spart Entwicklungszeit und -kosten spät entdeckte Fehler machen evtl. Arbeit redundant bei Hardware am Ende keine Korrektur mehr möglich daher Verifikation oft früh im Designzyklus auf Modellebene statt auf Implementationsebene

GPS: Einführung in die formale Verifikation Verifikation 17 Anforderungen an gute Verifikationstechniken wie immer: schnell, billig, gut; aber was heißt das genau? Geschwindigkeit: Designzyklus nicht unnötig verzögern Kosten: Designzyklus nicht unnötig verteuern Bedienbarkeit: soll von Software-Ingenieuren durchgeführt werden können Integrierbarkeit: soll nicht erst am fertigen Produkt durchführbar sein Sicherheit: Verifikation selbst soll nicht denselben Fehlerquellen unterliegen wie Programmierung

GPS: Einführung in die formale Verifikation Verifikation 18 Anforderungen an gute Verifikationstechniken Automatisierbarkeit: wegen Geschwindigkeit und Sicherheit Vollständigkeit: nach erfolgreich durchgeführter Verifikation soll sichergestellt sein, dass Programm der Spezifikation genügt Gegenbeispiele: soll nicht nur Anwesenheit von Fehler anzeigen, sondern diesen auch lokalisieren Spitzfindigkeit: sollte insbesondere auch Fehler finden, die nicht offensichtlich sind nur selten auftreten Messbarkeit: sollte Maß an Güte eines Programms nach Verifikation zulassen...

GPS: Einführung in die formale Verifikation Verifikationstechniken 19 Verifikationstechniken Peer Review an der Programmierung Unbeteiligte inspizieren Code Form der manuellen, statischen Analyse findet i.a. viele Fehler, ist jedoch nicht vollständig Fehler durch Nebenläufigkeit oder falsche Algorithmen schwer zu entdecken Emulation verwendet in Hardwareverifikation rekonfigurierbarer Chip wird programmiert, so dass er sich wie der gewünschte verhält weiter wie bei Testen Simulation wie Emulation, jedoch wird Modell des Chips in Software simuliert

GPS: Einführung in die formale Verifikation Verifikationstechniken 20 Verifikationstechniken Testen... Form der dynamischen Analyse Testfälle und jeweilige Ausgabe laut Spezifikation werden vorgegeben und überprüft kann (teilweise) automatisiert werden nicht vollständig: Testen kann Fehler finden, aber nicht deren Abwesenheit aufzeigen komplementiert Peer Review recht gut gute Testfälle zu finden fast so schwer wie Fehler zu finden Problem: Testumgebung Maß für Qualität schlecht an Anzahl der Tests festzulegen

GPS: Einführung in die formale Verifikation Der Korrektheitsbegriff 21 Der Begriff der Korrektheit Frage: Ist das folgende Programm korrekt? public static void main(string[] args) { int lo = 1; int hi = 1; System.out.println(lo); while (hi < 50) { System.out.print(hi); hi = lo + hi; lo = hi - lo; } } Korrektheit... bezieht sich immer auf eine Spezifikation ist keine absolute Eigenschaft eines Programms

GPS: Einführung in die formale Verifikation Der Korrektheitsbegriff 22 Der Begriff der Korrektheit Frage: Ist das folgende Programm korrekt? public static void main(string[] args) { int lo = 1; int hi = 1; System.out.println(lo); while (hi < 50) { System.out.print(hi); hi = lo + hi; lo = hi - lo; } } Korrektheit... bezieht sich immer auf eine Spezifikation ist keine absolute Eigenschaft eines Programms

GPS: Einführung in die formale Verifikation Modelle und Programme 23 Modelle und Programme Nächste Frage: Gibt das Programm irgendwann einmal 34 aus? public static void main(string[] args) { int lo = 1; int hi = 1; System.out.println(lo); while (hi < 50) { System.out.print(hi); hi = lo + hi; lo = hi - lo; } } hängt natürlich von der Semantik ab! zur Verifikation müssen Programme als semantische Objekte (nicht nur als syntaktische) angesehen werden Modelle stellen Semantik von Programmen dar

GPS: Einführung in die formale Verifikation Modelle und Programme 24 Herkunft: Modelle abstrakte Ebenen: in spezifischen Sprachen beschriebene Systeme, z.b. Programmflussdiagramme UML (Klassen-, Interaktions-Diagramme,... ) Hardware-Beschreibungssprachen (Verilog, VHDL,... ) Prozess-Beschreibungssprachen (Promela, Petrinetze, Prozessalgebren,... )... Prototypen: üblicherweise schnell und nur für Testzwecke realisiertes System Abstraktion: aus gegebenem Programm wird (üblicherweise vereinfachtes) extrahiert, welches das Verhalten des ursprünglichen nachbildet (siehe z.b. Datenabstraktion)

GPS: Einführung in die formale Verifikation Modelle und Programme 25 Schwächen der modellbasierten Verifikation wichtig: Resultate der Verifikation sind immer nur so gut wie die Modellbildung Bsp.: 1 Java-Sourcecode wird abstrahiert in Transitionssystem 2 Transitionssystem wird verifiziert 3 verwendeter Java-Compiler ist fehlerhaft Verifikation sagt nichts über Kompilat aus Modell-Programm-Beziehung muss treu sein

GPS: Einführung in die formale Verifikation Formale Verifikation 26 Formale Verifikation Verifikation... auf Ebene mathematische präziser und eindeutiger Modelle nach eindeutig festgelegten Regeln durchzuführende Verifikation Techniken der formalen Verifikation: 1 modellbasierte Simulation 2 modellbasiertes Testen 3 Model Checking 4 Theorembeweisen 5...

GPS: Einführung in die formale Verifikation Formale Verifikation 27 Modellbasierte Simulation benutzt Software-Tool (Simulator), um Systemverhalten in gewissen Szenarien zu untersuchen Szenarien sind benutzerdefiniert oder automatisch generiert + leicht durchzuführen + üblicherweise schnell + liefert Gegenbeispiele nicht geeignet um subtile Fehler aufzuspüren nicht geeignet um Maß an Güte des Systems festzulegen kann Abwesenheit von Fehlern nicht belegen etc.

GPS: Einführung in die formale Verifikation Formale Verifikation 28 Modellbasiertes Testen Testfälle werden automatisch aus Modell des Systems gewonnen + leicht durchzuführen + üblicherweise schnell + liefert Gegenbeispiele nicht geeignet um subtile Fehler aufzuspüren nicht geeignet um Maß an Güte des Systems festzulegen kann Abwesenheit von Fehlern nicht belegen etc.

GPS: Einführung in die formale Verifikation Formale Verifikation 29 Theorembeweisen durch logische Formeln dargestellt: zu verifizierende Korrektheitseigenschaft Φ correct Programmverhalten Φ model Verifikation: System ist korrekt gdw. = Φ model Φ correct Theorembeweiser = Tool zum (interaktiven) Führen von Beweisen in jeweiliger Logik oft eingebaute Programmiersprache, um direkt über Programme reden zu können

GPS: Einführung in die formale Verifikation Formale Verifikation 30 Theorembeweisen beachte: Prädikatenlogik FO bereits unentscheidbar daher Theorembeweisen oft nur Theorem-Assistent langsam sehr arbeitsintensiv, falls Taktiken nicht anschlagen fehleranfällig wegen Hauptlast auf Benutzer oft nicht erfolgreich erfordert u.u. Expertise auf Gebiet des Theorembeweisens + kann Abwesenheit von Fehlern aufzeigen + kann Aussagen über Programmen mit unendlichem Zustandsraum beweisen

GPS: Einführung in die formale Verifikation Formale Verifikation 31 Existierende Theorembeweiser Coq: Logik: Kalkül induktiver Definitionen Programme werden aus Beweisen extrahiert http://www.lix.polytechnique.fr/coq/ Isabelle: PVS:... Logiken: FO, HOL, ZF Programme: ML http://www.cl.cam.ac.uk/research/hvg/isabelle/ Logik: HOL http://pvs.csl.sri.com/

GPS: Einführung in die formale Verifikation Model Checking 32 Model Checking Modell wird als mathematische Struktur A model angesehen Korrektheitseigenschaft wird als logische Formel Φ correct formuliert Verifikation = Überprüfen, ob Struktur als logische Interpretation ein Modell der Formel ist A model = Φ correct? algorithmisch: Exploration des gesamten Modells in Bezug auf die gegebene Korrektheitseigenschaft beachte: Begriff Modell hier in zweierlei Hinsicht verwendet Beschreibung des Verhaltens eines Programms (also aus Modellierung) erfüllende Interpretation (aus Logik)

GPS: Einführung in die formale Verifikation Model Checking 33 Model Checking durchführen typischerweise 3 Phasen 1 Modellierungsphase Modell des Systems und Formel, die Korrektheitseigenschaft beschreibt, erstellen 2 Laufphase Model Checker (Software-Tool) führt Überprüfung durch 3 Analysephase falls System die Korrektheitseigenschaft... erfüllt, dann mache weiter im Designzyklus nicht erfüllt, dann repariere / entwerfe neu / verfeinere Systemmodell / Design / Eigenschaft (unter evtl. Zuhilfenahme eines Gegenbeispiels, welches der Model Checker geliefert hat)

GPS: Einführung in die formale Verifikation Model Checking 34 Model-Checking: Vor- und Nachteile erfordert ein wenig Expertise auf Gebiet der Logik als Spezifikationssprache (jedoch typischerweise weniger als beim Theorembeweisen) Anwendungsbereich limitiert auf kleine Modelle (je nach Technik und Anforderung verschiedene Bedeutungen) + kann die Abwesenheit von Fehlern aufzeigen + kann üblicherweise Gegenbeispiele liefern etc.

GPS: Einführung in die formale Verifikation Model Checking 35 Stärken des Model-Checkings anwendbar auf eine Vielfalt von Systemen partielle Verifikation: eine Eigenschaft nach der anderen Auffindbarkeit von Fehlern hängt nicht von deren Auftrittwahrscheinlichkeit ab liefert diagnostische Information potentielle Push-Button-Technologie in der Industrie immer häufiger eingesetzt in existierende Designzyklen integrierbar basiert auf mathematischer Theorie

GPS: Einführung in die formale Verifikation Model Checking 36 Schwächen des Model-Checkings nicht gut geeignet für datenintensive Anwendungen limitiert durch Unentscheidbarkeitsresultate nur Verifikation eines Modells, nicht des Systems selbst nur angesagte Anforderungen werden überprüft State-Space-Explosion-Problem ganz ohne Expertise auf dem Gebiet geht es schlecht nicht geeignet für Generalisierungen (z.b. n-philosophen statt 5-Philosophen) Model-Checker selbst könnte inkorrekt sein

GPS: Einführung in die formale Verifikation Model Checking 37 Existierende Model Checker NuSMV: symbolischer MC für LTL, CTL, erweiterbar http://nusmv.fbk.eu/ Spin: automatenbasierter MC für LTL http://spinroot.com/spin/whatispin.html UPPAAL: MC für Echtzeitsysteme und Echtzeit-CTL http://www.uppaal.com/ Java Pathfinder: MC für Java-Programme http://babelfish.arc.nasa.gov/trac/jpf...

GPS: Einführung in die formale Verifikation Model Checking 38 Andere Methoden zur Qualitätssicherung Model Checking ersetzt nicht andere Methoden Software Engineering Proof-Carrying Code Programmsynthese...