Verifikation in der Realität. In der Industrie wird der Begriff Verifikation häufig im Zusammenhang mit nicht formalen Methoden verwendet:

Ähnliche Dokumente
Model Checking mit SPIN

Model Checking. Grundlagen und Motivation. Alex Salnikow

Statisches Programmverständnis. pk12w16,

4. Alternative Temporallogiken

Verifizierende Testverfahren

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.4. Verifikation - 1 -

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.4. Verifikation - 1 -

Model Checking I. Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg

Zeitlogik. Hardware Verifikation. Zeitlogik und Verifikation. Helmut Veith,

WS 05/06 mod Verifikation

Computergestützte Modellierung und Verifikation

Einführung in die Programmiertechnik

Research Collection. Bounded Model Checking was kommt danach? Other Conference Item. ETH Library. Author(s): Biere, Armin. Publication Date: 2000

Korrektheit und Hoare-Kalkül für Imperative Programme

LTL und Spin. Stefan Radomski

Motivation und Einführung

Formale Verifikation von Software. 10. Juli 2013

n 1. Erste Schritte n 2. Einfache Datentypen n 3. Anweisungen und Kontrollstrukturen n 4. Verifikation n 5. Reihungen (Arrays)

Entscheidungsverfahren mit Anwendungen in der Softwareverifikation

Model Checking mit SPIN

Zusammenfassung. Definition. 1 (x i ) 1 i n Sequenz von Registern x i, die natürliche Zahlen beinhalten. 2 P ein Programm. Befehle: 1 x i := x i + 1

1. Motivation. Modelchecking. NuSMV. NuSMV und SMV. 2. Modellierung. Erinnerung (Kapitel II)

! 1. Erste Schritte! 2. Einfache Datentypen! 3. Anweisungen und Kontrollstrukturen! 4. Verifikation! 5. Reihungen (Arrays) II.1.4. Verifikation - 1 -

Analyse von Echtzeit-Systemen mit Uppaal. Dr. Carsten Weise Ericsson Deutschland GmbH

Software Engineering in der Praxis

Qualitätssicherung von Software (SWQS)

CTL Model Checking SE Systementwurf CTL Model Checking Alexander Grafe 1

Formale Modellierung Vorlesung 13 vom : Rückblick und Ausblick

1.1 Transitionssysteme Produkte von Transitionssystemen Kripkestrukturen Verifikation und Model-Checking...

Mathematische Beweise und Symbolische Tests

1. Einführung in Temporallogik CTL

Formale Verifikation von Software. 8. Juli 2015

Korrektheit imperativer Algorithmen

Modellprüfung von UML-Zustandsmaschinen und UML-Kollaborationen in SAL

Was bisher geschah Modellierung in Logiken: klassische Prädikatenlogik FOL(Σ, X) Spezialfall klassische Aussagenlogik AL(P)

{P} S {Q} {P} S {Q} {P} S {Q} Inhalt. Hoare-Kalkül. Hoare-Kalkül. Hoare-Tripel. Hoare-Tripel. Hoare-Tripel

4.3 Verifikation von Aussagen über Algorithmen

C. A. R. Hoare. An Axiomatic Basis for Computer Programming. Nicolas Schelp. Proseminar Assertions SS 2007

Abschnitt 11: Korrektheit von imperativen Programmen

An Overview of the Signal Clock Calculus

Entscheidungsverfahren mit Anwendungen in der Softwareverifikation

MODEL CHECKING 2 - AUTOMATEN

Aussagenlogische Testspezifikation

Einführung in LTL unter MAUDE. Maschine!es Beweisen Einführung in LTL Seit# 1

Kapitel 4: Analyse von Petrinetzen

Einführung in die Theoretische Informatik

Informatik I - Programmierung Globalübung Hoare-Kalkül. Thomas Weiler. Fachgruppe Informatik RWTH Aachen. T. Weiler, RWTH Aachen - 1 -

Seminar Programmierung Eingebetteter Systeme

Übersicht Formale Semantik. Übersicht Axiomatische Semantik. Inhaltsübersicht HPS WS 2003/04. Vorlesung Höhere Programmiersprachen,

Technische Universität München SoSe 2015 Institut für Informatik I Mai 2015 Dr. Tobias Lasser. Aufgabe 1 Rechnen mit Landau-Symbolen

5.3 Korrektheit und Verifikation

Beispiel 1 zur Verifikation eines bedingten Anweisung. Hoare-Regel für die bedingte Anweisung. else

Beispiel 1 zur Verifikation eines bedingten Anweisung. Hoare-Regel für die bedingte Anweisung. Beispiel 2 zur Verifikation eines bedingten Anweisung

Modellierung von Echtzeitsystemen

Testen und abstrakte Interpretation

Grundlagen 1: Modelle & Mengen

Informatik II - Tutorium

6 SYMBOLIC MODEL CHECKING

Autotest. Automatische Testgenerierung mit Design by Contract. von Simon Greiner am 12. Juli 2007

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

Kapitel 4: Formale Verifikation

Modellbasierte Software- Entwicklung eingebetteter Systeme

Systemtheorie 1. Formale Systeme 1 # WS 2006/2007 Johannes Kepler Universität Linz, Österreich

Software-Qualität Ausgewählte Kapitel

Partielle Korrektheit von Programmen. Beispiele an der Tafel

Seminar Programmierung Eingebetteter Systeme

Motivation. Motivation

Grundlagen der Programmierung 2. Operationale Semantik

Was bisher geschah Modellierung von Daten durch Mengen Beziehungen (Zusammenhänge und Eigenschaften) durch Relationen, Graphen und Funktionen

Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration

3. Klausur Einführung in die Theoretische Informatik Seite 1 von Welches der folgenden klassischen Probleme der Informatik ist entscheidbar?

Berühmte Informatiker

ASIL-relevante SW-Module identifiziert! Was nun?

Einführung in die Theoretische Informatik

11.0 Systematisches Programmierung

Entscheidungsverfahren mit Anwendungen in der Softwareverifikation

Test-Suite Beurteilung

Software Engineering in der Praxis

SPARK95. Ingmar Wirths. 12. Juli 2007

Resolutionskalkül. wird t als eine Menge K t von Klauseln geschrieben, welche die einzelnen Maxterme repräsentieren:

Theoretische Grundlagen des Software Engineering

Ein Beispielbeweis zur Verifikation des Programms zur Division mit Rest auf der Basis der Hoare-Regeln

Logik für Informatiker

Modellierung verteilter Systeme (Grundlagen der Programm- und Systementwicklung II)

Software Engineering

Software Engineering in der Praxis

Kontrollfluss. man Verzweigungen und Sprünge. o bisher linear (von oben nach unten) o Für interessante Programme braucht

Prädikatenlogik - Micromodels of Software

Grundlagen 1: Modelle & Mengen

Systemtheorie 1. Einführung Systemtheorie 1 Formale Systeme 1 # WS 2006/2007 Armin Biere JKU Linz Revision: 1.4

Verifikation von Programmen

Informatik II, SS 2014

Informatik I Übung, Woche 41

Einführung in die Programmierung

Technische Universität München WS 2006/2007 Fakultät für Informatik 15. Februar 2007 Prof. Dr. A. Knoll

Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken

Übersicht. Nebenläufige Programmierung: Praxis und Semantik. Synchronisation (4) Eine untere Schranke für den Platzbedarf

Transkript:

Verifikation in der Realität In der Industrie wird der Begriff Verifikation häufig im Zusammenhang mit nicht formalen Methoden verwendet: Testen, Strategien: 100% Befehlsabdeckung (Statement Coverage) 100% Zweigüberdeckung (Branch Coverage) 100% Pfadüberdeckung (Path Coverage) Siehe auch http://www.software kompetenz.de/?10764 Code Reviews Verfolgbarkeitsanalysen WS 10/11 121

Testen Mit Testen ist es möglich die Existenz von Fehlern nachzuweisen, nicht jedoch deren Abwesenheit. Testen ist von Natur aus unvollständig (non exhaustive) Es werden nur ausgewählte Testfälle / Szenarien getestet, aber niemals alle möglichen. ölih WS 10/11 122

Deduktive Methoden Nachweis der Korrektheit eines Programms durch math. logisches Schließen Anfangsbelegung des Datenraums Endbelegung Induktionsbeweise, Invarianten klass. Bsp: Prädikatenkalkül von Floyd und Hoare, Betrachten von Einzelanweisungen eines Programms: Vorbedingung Anweisung Nachbedingung Programmbeweise sind aufwändig, erfordern Experten i.a. nur kleine Programme verifizierbar Noch nicht vollautomatisch, aber es gibt schon leistungsfähige Werkzeuge WS 10/11 123

Temporale Logik Mittels Verifikation soll überprüft werden, dass: Fehlerzustände nie erreicht werden Der Aufzug soll nie mit offener Tür fahren. ein System irgendwann einen bestimmten Zustand erreicht (und evtl. dort verbleibt) Nach einer endlichen Initialisierungsphase, geht der Aufzug in den Betriebsmodus über. Zustand x immer nach Eintreten des Zustandes y auftritt. Nach Drücken des Tasters im Stockwerk wird der Aufzug in einem späteren Zustand auch dieses Stockwerk erreichen. Um solche Aussagen auch für Rechner lesbar auszudrücken, kann temporale Logik, z.b. in Form von LTL (linear time temporal logic), verwendet werden. In LTL werden Zustandsübergänge g und damit auch die Zeit als diskrete Folge von Zuständen interpretiert. WS 10/11 124

Kripke Struktur Zur Darstellung eines Systems werden Kripke Strukturen K = (V,I,R,B) und eine endliche Menge P von atomaren logischen Aussagen verwendet. V: Menge binärer Variablen (z.b. Tür offen, Aufzug fährt) Die Zustandsmenge S ergibt sich aus allen möglichen Kombinationen über V, somit gilt S = 2 V Menge der möglichen Anfangszustände R: Transitionsstruktur B: Bewertungsfunktion S x P {true,false} zur Feststellung, ob ein Zustand eine Eigenschaft auf P erfüllt Mittels Model Checking muss nun nachgewiesen werden, dass eine gewisse Eigenschaft P ausgehend von den Anfangszuständen immer gilt schließlich erfüllt wird WS 10/11 125

Explizites Model Checking: Verfahren Ausgehend von den Startzuständen exploriert der Model Checker mögliche Nachbarzustände: Auswahl eines noch nicht evaluierten Zustandes Prüfung aller möglichen Zustandsübergange: bereits bekannter Zustand: verwerfen unbekannter Zustand, Eigenschaft prüfen falls Eigenschaft nicht erfüllt, Abbruch und Präsentation eines Gegenbeispiels falls erfüllt, zur Menge der nicht evaluierten Zustände hinzufügen Abbruchbedingung: alle erreichbaren Zustände wurden überprüft Problem: Zustandsexplosion Literaturhinweis: t i Edmund dm. Clarke, Orna Grumberg, Doron A. Peled, Model Checking, 1999, MIT Press WS 10/11 126

Umgang mit Model Checking Modellierung reales System Modell des realen Systems Anforderungen formalisierte Anforderungen Formalisierung korrigiere Modell Model Checker (Expansion des Zustandsraums, Vergleich der einzelnen Zustände mit den Anforderungen) nächste Anforderung Nein + Gegenbeispiel Ja fertig WS 10/11 127

Probleme mit formalen Methoden Entwickler empfinden formale Methoden häufig als zu kryptisch Beispiel TLA: Neue Ansätze: Erweiterung der Programmier / Modellierungssprachen, automatische ti Übersetzung WS 10/11 128

Beispiel: Verifikation von Esterel Programmen Esterel Verifier xeve Einfach: Verifikation der sicheren (Nicht )Auftretens von Signalen Komplexe Bedingungen: Codierung als Esterel Programm (Observer), dessen Verhalten mit dem des Ausgangsprogrammes geschnitten wird Grundsätzliche Vorgehensweise: Finden von Fehlern in den Annahmen / Modellen mit begrenztem Model Checker Nachweis der Korrektheit des verbesserten Modells in Bezug auf die korrigierten Eigenschaften mit unbegrenztem Model Checking / symbolischen Model Checking Esterel Studio Eingebaute Verifikationsfunktionalität zur einfachen Verifikation von Programmen Zur Modellierung der verschiedenen Eigenschaften kann das Schlüsselwort assert verwendet werden. Im Verifikationsmodus können die Eigenschaften dann getestet werden, dabei stehen Methoden zum unbegrenzten / in der Testtiefe begrenzten Modell Checking, sowie zum symbolischen Model Checking zur Verfügung. Detailssiehe siehe Demonstration: Bus Arbiter (xeve) WS 10/11 129

Bus Arbiter Beispiel Request Grant Pass Token / Pass Token

Verifikation ist immer nur auf Modellebene int16_t number; Signal e,end; float share; Prozess 1: number:=1; while (true) { } wait(e); number++; Prozess 2: while (true) { } wait(end); share:=1/number; print(share); number:=1; Was kann hier schiefgehen (unabhängig von inhalticher Korrektheit)? Problem Überlauf: Annahme Ereignisse zwischen zwei Endsignalen begrenzt (<1000)? Problem: Atomare Erhöhung, korrekt auf 16-Bit Controller, falsch auf 8-Bit Controller.

Kapitel 3 Nebenläufigkeit WS 10/11 132