Formale Verifikation von Software. 8. Juli 2015

Ähnliche Dokumente
Formale Verifikation von Software. 10. Juli 2013

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

Software Engineering in der Praxis

1. Einführung in Temporallogik CTL

Computergestützte Modellierung und Verifikation

Validierung und Verifikation!

Software Engineering Praktikum

1.4! Einführung. Systemmodellierung. Methoden und Werkzeuge

Qualitätssicherung von Software

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

CTL Model Checking SE Systementwurf CTL Model Checking Alexander Grafe 1

Systematisches Testen der Funktionalität von Softwaresystemen. 17. Juni 2015

Seminar Programmierung Eingebetteter Systeme

Software-Qualität Ausgewählte Kapitel

4. Alternative Temporallogiken

Theoretische Grundlagen des Software Engineering

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

Theorem Proving. Software Engineering in der Praxis. Prädikatenlogik. Software Engineering in der Praxis Wintersemester 2006/2007

Validierung und Verifikation

MODEL CHECKING 2 - AUTOMATEN

Softwarequalität: Einführung. 15. April 2015

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

1) Einführung in die formale Verifikation

Entscheidungsverfahren mit Anwendungen in der Softwareverifikation

Verifikations- und Spezifikationsmethoden

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

Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken

Software Engineering. Validierung und Verifikation. Martin Glinz Harald Gall. Kapitel 7. Universität Zürich Institut für Informatik

Proseminar: Moderne Technologien für die Entwicklung von verteilten, dynamischen Anwendungen

Formale Modellierung Vorlesung 13 vom : Rückblick und Ausblick

Logik für Informatiker

Entscheidungsverfahren mit Anwendungen in der Softwareverifikation

Seminar Formal Methods for Fun and Profit

5 ECTS. 4 Modulverantwortlicher Prof. Dr. Francesca Saglietti

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

Praktikum Software Engineering: Verfahren und Werkzeuge

ActiveCharts. Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0

Abschlusseigenschaften. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Abschlusseigenschaften

Germany s next Simulation Model Besser automatisieren in der Prozesstechnik

Foundations of Systems Development

Softwaremetriken. 15. Mai 2013

Software Engineering II (IB) Testen von Software / Modultests

Modell zur Einflussanalyse Ein Modell zur Einflussanalyse von Methodenänderungen in Entwicklungsprozessen

Ausführbare UML Modelle multimodaler Interaktionsanwendungen Marcel Dausend 1, Mark Poguntke 2 1

Modellbasierter Test mit der UML. Vortragender: Lars Westmeier Seminar: Spezifikationsbasierter Softwaretest

Einführung Arten von Softwaretests Prinzipien Continuous Integration Tests in FLOSS-Projekten Quellen. Softwaretests. Christoph Betschart

Software-Refactoring. 29. Mai 2013

Hauptseminar Automotive Software Engineering Testen, Rapid Prototyping und x in the loop

Ereignisdiskrete Systeme

Kapitel 2: Algorithmen für CTL und LTL

Vortrag zum Hauptseminar Hardware/Software Co-Design

Aussagenlogische Testspezifikation

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

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

Warum Programme Verträge schließen sollten

4.Grundsätzliche Programmentwicklungsmethoden

Sudoku. Warum 6? Warum 6?

Formale Methoden: Ein Überblick

Entwurf eines FPGA-Cores zur Simulationsbeschleunigung zeitkontinuierlicher Modelle im HiL Kontext

Requirements Engineering I

1 Transitionssysteme. 1.1 Motivation: Model-Checking

Entwurfsmuster und Softwarearchitekturen für sicherheitskritische Systeme

Modeling Security Aspects of Network Aggregation Protocols. Fachgespräch Sensornetze August 2009

Logik. Vorlesung im Wintersemester 2010

Virtuelle Inbetriebnahme von Maschinen und Fabriken

Warum Modellierung? OE-Vorlesung 2016 Einführung in Petrinetze. Was ist ein Modell? Und warum Petrinetze? Petrinetze sind ein Modellierungswerkzeug.

Zuverlässige Kommunikation mittels. Time-Triggered Protokolle

Logik in der Informatik

Einführung Spezifikation von Software-Systemen

Formale Programmverifikation. Referentin: Kirsten Hradek

Softwareanalyse. Einsatzgebiete, Werkzeuge und Beispiele. Bodo A. Igler und Burkhardt Renz. Fachhochschule Gießen-Friedberg

Laufzeitverifikation

Software Engineering

Logik für Informatiker

Vortrag Diplomarbeit. Testentwurf in komplexen softwareintensiven Systemen mit der Klassifikationsbaummethode. von Rebecca Tiede

Qualität von Software und Softwaremodellen Seminar der AG Softwaretechnik im Sommer-Semester 2013

MDRE die nächste Generation des Requirements Engineerings

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

M. Sc. Mirjana Jakšić Dipl.-Inf. Christian Schönberg Dipl.-Inf. Franz Weitl

WCET-Analyseverfahren in der automobilen Softwareentwicklung

Software Engineering. 13. Qualitätssicherung. Franz-Josef Elmer, Universität Basel, WS 2006/07

Source: Stephan. Werner Stephan

Entwicklung einer sensorlosen Motorregelung für Dentalbohrer nach IEC Dr. Michael Schwarz

Programmierkurs II. Prof. Dr. Wolfgang Effelsberg. Universität Mannheim. Sommersemester Wolfgang Effelsberg Programmiersprachen

Programmierkurs II. Prof. Dr. Wolfgang Effelsberg. Universität Mannheim. Sommersemester Wolfgang Effelsberg Programmiersprachen

Assertions (Zusicherungen)

Zusicherungen und Laufzeit Überwachungen in der modellbasierten Software Entwicklung

Testen von graphischen Benutzeroberflächen. 24. Juni 2015

Praktische Informatik I

Qualitätssicherung. Was ist Qualität?

Arbeitspaket IV Methoden zur Verifikation von Analog- und Sensorkomponenten

Korrektheitsbegriffe für modellbasierte Codegeneratoren

Verifizierende Testverfahren

Können Computer programmieren? Bernd Finkbeiner, Universität des Saarlandes

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

Organisatorisches. Zeit und Ort: Mo MZH 1450 Mi MZH Prof. Carsten Lutz Raum Cartesium 2.59 Tel. (218)

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

Softwarequalität: Zusammenfassung und Ausblick. 17. Juli 2013

Transkript:

Formale Verifikation von Software 8. Juli 2015

Überblick Wann ist formale Softwareverifikation sinnvoll? Welche Techniken gibt es? Was ist Model Checking und wie kann man es zur Verifikation einsetzen? Welche Probleme gibt es bei der formalen Verifikation von Software? Taentzer Softwarequalität 2015 218

Berühmte Softwarefehler Airbusabsturz Sevilla, 2015: Softwarefehler in der Steuerungseinheit der Triebwerke führte zu ihrem Ausfall, 4 Tote, 2 Schwerverletzte Audi A4, Airbag-Probleme, 2014: Rückruf von ca. 150.000 Autos wegen Softwarefehler: Steuergeräte der Frontairbags falsch programmiert, Airbags können im Fall eines Unfalls versagen Pentium-Bug, Intel, 1994: spezielle Division verursachen Fehler und Kosten von knapp 500 Mio Dollar seitdem: Einsatz von formaler Verifikation bei Intel Taentzer Softwarequalität 2015 219

Validation und Verifikation Validation: Bauen wir das richtige Softwareprodukt? Wird die Software das tun, was die Nutzer fordern? Verifikation: Bauen wir das Softwareprodukt richtig? Wird die Software der Spezifikation entsprechen? Welche Qualitätskriterien werden jeweils bedient? Taentzer Softwarequalität 2015 220

Software-Verifikation Qualitätskriterien: Zuverlässigkeit: Korrekte und robuste Software Wiederverwendbarkeit: Komponenten mit wohldefinierten Eigenschaften analysierende Qualitätssicherungsmaßnahme Software-Verifikation Ziel: Zusicherung der spezifizierten Anforderung Ansätze: dynamische Analysen, z.b. Tests statische Analysen, z.b. formale Verifikation Taentzer Softwarequalität 2015 221

Formale Software-Verifikation Korrektheitsnachweis eines Algorithmus in Bezug auf eine formale Anforderungsspezifikation Ansätze zur formalen Verifikation: Model Checking Theorembeweiser weitere formale Kalküle, wie z.b. Petrinetze und Graphtransformation Formale Spezifikationsmethoden: für die Softwaresysteme: Automaten: endl. Zustandsautomaten, Transitionssysteme, Automaten mit Zeit, etc. Prozessalgebren für die zu zeigenden Eigenschaften: Logiken, speziell temporale Logiken Taentzer Softwarequalität 2015 222

Beispielanwendungen für formale Verifikation Übertragungsprotokolle in Kommunikationssoftware eingebettete Systeme z.b. im Automobil-, Bahn- und Luftfahrtbereich Bremssysteme Crash-Kontrolle für Airbags digitale Schaltkreise Systemsoftware Compiler Taentzer Softwarequalität 2015 223

Model Checking formales Modell (Systemanforderungen) Model Checking Werkzeug Antwort: - ja, Modell erfüllt die Spezifikation - nein, Gegenbeispiel Spezifikation (Systemeigenschaften) Taentzer Softwarequalität 2015 224

Beispiel für Model Checking Jeder Tank hat zwei Anzeigen: leer voll Tank okay, falls zwischen leer und voll 1. beide Tanks leer 2. Pumpe an, wenn Tank A nicht leer 3. Pumpe aus, wenn Tank A leer oder B voll 4. Pumpe nicht ausschalten, wenn aus Einfaches Pumpsystem mit zwei Tanks www.embedded.com Taentzer Softwarequalität 2015 225

Beispiel: Formales Modell MODULE main VAR ta : {empty, ok, full}; tb : {empty, ok, full}; p : {on, off}; ASSIGN next(ta) := case ta = empty : {empty, ok}; ta = ok & p = off : {ok, full}; ta = ok & p = on : {ok, empty, full}; ta = full & p = off : full; ta = full & p = on : {ok, full}; 1 : {ok, empty, full}; esac; ta - Tank A tb - Tank b next(tb) := case tb = empty & p = off : empty; tb = empty & p = on : {empty, ok}; tb = ok & p = off : {ok, empty}; tb = ok & p = on : {ok, empty, full}; tb = full & p = off : {ok, full}; tb = full & p = on : {ok, full}; 1 : {ok, empty, full}; esac; next(p) := case p = off & (ta = ok ta = full) & (tb = empty tb = ok) : on; p = on & (ta = empty tb = full) : off; 1 : p; -- keep pump status as it is esac; INIT (p = off) p - Pumpe www.embedded.com Taentzer Softwarequalität 2015 226

Beispiel: Zustandsraum Anfang des Zustandsraums für ein einfaches Pumpsystem www.embedded.com Taentzer Softwarequalität 2015 227

Beispiel: Systemeigenschaften Informelle Beschreibung: Wenn die Pumpe aus ist, ist Tank A leer oder Tank B voll. Tank B kann jederzeit okay oder voll werden. Spezifikation auf Basis des Zustandsraums: In jedem Zustand gilt: In allen Pfaden gibt es einen Folgezustand, in dem gilt: Wenn die Pumpe aus ist, ist Tank A leer oder Tank B voll. In jedem Zustand gilt: Es gibt einen Folgezustand, in dem Tank B okay oder voll ist. Taentzer Softwarequalität 2015 228

Temporale Operatoren in CTL Computational Tree Logic (CTL) ist eine spezielle temporale Logik EF wahr, falls es in einem Pfad einen Zustand gibt, der erfüllt. AF wahr, falls es in jedem Pfad (der bei S 0 startet), einen Zustand gibt, der erfüllt. www.embedded.com Taentzer Softwarequalität 2015 229

Temporale Operatoren in CTL EG wahr, falls es einen Pfad (bei S 0 startend) gibt, so dass jeder Zustand in diesem Pfad erfüllt. AG wahr, falls jeder Zustand in jedem Pfad (der bei S 0 startet) erfüllt. www.embedded.com Taentzer Softwarequalität 2015 230

Beispiel: Systemeigenschaften Informelle Beschreibung auf Basis des Zustandsraums: In jedem Zustand gilt: In allen Pfaden gibt es einen Folgezustand, in dem gilt: Wenn die Pumpe aus ist, ist Tank A leer oder Tank B voll. In jedem Zustand gilt: Es gibt einen Folgezustand, in dem Tank B okay oder voll ist. Spezifikation mit CTL: SPEC AG AF (p = off -> (ta = empty tb = full)) AG (EF (tb = ok tb = full)) Taentzer Softwarequalität 2015 231

Beispiel: Nachweis von Systemeigenschaften Egal, wie sich das System verhält, die Pumpe ist irgendwann mal an. SPEC AF (p = on) Gilt diese Eigenschaft? Ausgabe des Model Checkers SMV: -- specification AF p = on is false -- as demonstrated by the following execution sequence -- loop starts here state 1.1: ta = empty tb = empty p = off SPEC AF (p = off) Diese Eigenschaft ist erfüllt. Taentzer Softwarequalität 2015 232

Praktische Anwendung von Model Checking Modellierung des Systems: Jedes Model-Checking-Werkzeug hat seine eigene Sprache. Beziehung: Informelle Anforderungen formales Modell unklar Nicht alle Anforderungen sind modellierbar Spezifikation der Systemeigenschaften: ähnliche Probleme, manche Eigenschaften sind nicht spezifizierbar Zustandsraum des modellierten Systems: Anzahl der Zustände kann extrem hoch sein. Model Checker braucht lange oder gibt auf. Reduzierung des Zustandsraums nötig Taentzer Softwarequalität 2015 233

Wann lohnt sich formale Verifikation? spezielle Anwendungen: Sicherheitskritische Systeme Andere kritische Anforderungen (z.b. finanzielle und rechtliche) Verbesserung der Anforderungsspezifikation: Präzise und klare Spezifikation erstellbar Reduzierung von Testaufwand: Vermeidung von Testfällen Realistische Tests sind schwer durchführbar Taentzer Softwarequalität 2015 234

Grenzen der formalen Methoden Mögliche Gründe für Fehler: Software ist nicht korrekt (d.h. erfüllt nicht die Spezifikation): Formale Verifikation kann diese Fehler finden. Software ist nicht angemessen (d.h. die Spezifikation ist fehlerhaft): Formale Spezifikation/Verifikation kann diese Fehler vermeiden/finden. Betriebssystem, Compiler oder Hardware sind fehlerhaft: kann im Normalfall nicht vermieden werden Keine volle Spezifikation/Verifikation Softwaresystem ist zu komplex: Einschränkung auf wichtige Komponenten/Eigenschaften Taentzer Softwarequalität 2015 235

Zusammenfassung Anwendung von formaler Verifikation ist aufwändig. Formale Verifikation lohnt sich speziell für sicherheits- und kostenkritische Systeme. Formale Verifikation wird meist mit Model Checking durchgeführt. Ausgewählte Literatur: G.K. Palshikar: An Introduction to Model Checking sites.google.com/site/girishpalshikar/home/mypublications W. Reif: Software-Verifikation und ihre Anwendungen, it+ti Themenheft, Oldenbourg Verlag, 1997 http://www.informatik.uni- augsburg.de/lehrstuehle/swt/se/publications/1997- sw_verif_anwend/ Visser, Havelund, Brat, Park: Model Checking Programs, in Journal Automated Software Engineering, 10(2), 2003 swtv.kaist.ac.kr/courses/cs750b-sw-model-checking-fall-06/ ase00finaljournal.pdf Taentzer Softwarequalität 2015 236