Qualitätssicherung von Software (SWQS) Prof. Dr. Holger Schlingloff Humboldt-Universität zu Berlin und Fraunhofer FOKUS 4.6.2013: Software Model Checking.

Slides:



Advertisements
Ähnliche Präsentationen
Software Engeniering II
Advertisements

der Universität Oldenburg
der Universität Oldenburg
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Modellbasierte Software-Entwicklung eingebetteter Systeme
Modellbasierte Software-Entwicklung eingebetteter Systeme
Eingebettete Systeme Qualität und Produktivität
Qualitätssicherung von Software (SWQS)
Software-Engineering II Eingebettete Systeme, Softwarequalität, Projektmanagement Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt.
Eingebettete Systeme Qualität und Produktivität
Qualitätssicherung von Software (SWQS)
Qualitätssicherung von Software (SWQS)
Qualitätssicherung von Software (SWQS)
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Qualitätssicherung von Software
Qualitätssicherung von Software
Software-Engineering II Eingebettete Systeme, Softwarequalität, Projektmanagement Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt.
Prof. Dr. Holger Schlingloff
Modellbasierte Software-Entwicklung eingebetteter Systeme
Modellbasierte Software- Entwicklung eingebetteter Systeme Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt Universität und Fraunhofer.
Management großer Softwareprojekte Prof. Dr. Holger Schlingloff Humboldt-Universität zu Berlin, Institut für Informatik Fraunhofer Institut für Rechnerarchitektur.
Software Verification 2 Automated Verification Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt Universität and Fraunhofer Institut für.
Threads Richard Göbel.
Java: Grundlagen der Sprache
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
M a r c – o l i v e r p a h l Die ObjektOrientierte Mühle Das Beispiel soll noch einmal das Konzept der Objektorientiertheit erläutern. Dabei werden außerdem.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
3.1.4 Leser/Schreiber-Ausschluß (reader/writer exclusion)
Einführung in die OOP in Java
DVG Einführung in Java1 Einführung in JAVA.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Bestimmung des ggT zweier Zahlen
UML Begleitdokumentation des Projekts
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Applets Java für’s Web.
Zusammenfassung der Vorlesung
Mahmoud Zoabi Khaled Isa
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Die Zählschleife int s = 0 for (int k=1; k
Parallel Programming Thread Synchronization. Heute 1. Lösung zu Assignment 2 2. Erstellen und Starten von Threads in Java 3. Das synchronized Schlüsselwort.
Einführung in JavaKara
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Schleifen
Modellbasierte Software-Entwicklung eingebetteter Systeme
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Prof. Dr. Alois Schütte Advanced System Programming 1 Das concurrent Paket 1 Überblick 2 Lock 3 Condition 4 Queue 5 Executors.
Qualitätssicherung von Software Prof. Dr. Holger Schlingloff Humboldt-Universität zu Berlin und Fraunhofer FIRST.
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
Modellbasierte Software- Entwicklung eingebetteter Systeme Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt Universität und Fraunhofer.
Modellbasierte Software- Entwicklung eingebetteter Systeme Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt Universität und Fraunhofer.
Modellbasierte Software- Entwicklung eingebetteter Systeme Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt Universität und Fraunhofer.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Modellbasierte Software- Entwicklung eingebetteter Systeme Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt Universität und Fraunhofer.
Lösung der Hausaufgaben von Vorlesung 10 Universität Bonn Institut für Kartografie und Geoinformation Dipl.-Ing. Dörschlag, Dr. Gröger, Prof. Dr. Plümer.
BA Stuttgart, Technische Informatik, SW-Engineering, Objektorientierter Entwurf April 2007 Seite 1 Objektorientierter Entwurf (OOD) Beispiel: Generator.
Software Verification 2 Automated Verification Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt Universität and Fraunhofer Institut für.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Vererbung.
Modellbasierte Software-Entwicklung eingebetteter Systeme
Java-Kurs - 4. Übung weitere Kontrollstrukturen
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Die Klasse Vielfrass in Java
Mit der Turtle Java Programmieren
Grundkurs Informatik mit Java
Mit Java die Turtle steuern
 Präsentation transkript:

Qualitätssicherung von Software (SWQS) Prof. Dr. Holger Schlingloff Humboldt-Universität zu Berlin und Fraunhofer FOKUS : Software Model Checking

Folie 2 H. Schlingloff, Software-Qualitätssicherung Fragen zur Wiederholung Was versteht man unter temporaler Logik? Wozu wird sie verwendet? Was bedeutet (p U q) Wie formuliert man Auf jeden Regen folgt einmal Sonnenschein? Unterschied LTL-CTL? Wie funktioniert Modellprüfung für temporale Logik?

Folie 3 H. Schlingloff, Software-Qualitätssicherung Software Model Checking Modellprüfung verifiziert eine temporale Formel in einem Modell woher kommt die Formel? woher das Modell? Technologische Fortschritte direkte Verifikation von Source Code möglich? nur Standardeigenschaften? Viele (Forschungs-)Tools verfügbar BANDERA, BLAST, CBMC, dSPIN, JPF, MAGIC, SLAM, SPIN 4, Verisoft XT, CMC, ZING, etc. Beispiel Java Path Finder (Nasa) analysiert direkt den Java Byte Code spezialisiert auf Parallelitätsfehler (race conditions)

Folie 4 H. Schlingloff, Software-Qualitätssicherung Beispiel JPF public class MyRaceCondition { private static class Target { int i = 0; public void incr() { i++; } } private static class RaceCar extends Thread { Target finish; public void run() { for (int k = 0; k<5; k++) finish.incr(); } } public static void main(String[] args) throws InterruptedException { Target line = new Target(); RaceCar racer1 = new RaceCar(); racer1.finish = line; RaceCar racer2 = new RaceCar(); racer2.finish = line; racer1.start(); racer2.start(); //racer1.join(); //racer2.join(); System.out.println("i: " + line.i + ", div: " + 20/(line.i - 2)); }

Folie 5 H. Schlingloff, Software-Qualitätssicherung Ergebnis ====================================================== error #1 gov.nasa.jpf.jvm.NoUncaughtExceptionsProperty java.lang.ArithmeticException: division by zero at MyRaceCondition.main(MyRaceCondition.java:22) ====================================================== snapshot #1 thread java.lang.Thread:{id:0,name:main,status:RUNNING,priority:5,lockCount:0,suspendCount:0} call stack: at MyRaceCondition.main(MyRaceCondition.java:22) thread MyRaceCondition$RaceCar:{id:1,name:Thread-1,status:RUNNING,priority:5,lockCount:0,suspendCount:0} call stack: at MyRaceCondition$Target.incr(MyRaceCondition.java:6) at MyRaceCondition$RaceCar.run(MyRaceCondition.java:13) thread MyRaceCondition$RaceCar:{id:2,name:Thread-2,status:RUNNING,priority:5,lockCount:0,suspendCount:0} call stack: ====================================================== results error #1: gov.nasa.jpf.jvm.NoUncaughtExceptionsProperty "java.lang.ArithmeticException: division by zero a... ====================================================== statistics elapsed time: 00:00:02 states: new=2419, visited=2029, backtracked=4439, end=383 search: maxDepth=37, constraints hit=0 choice generators: thread=2418 (signal=0, lock=1, shared ref=2028), data=0 heap: new=10554, released=13688, max live=380, gc-cycles=4446 instructions: max memory: 15MB loaded code: classes=87, methods=1318

Folie 6 H. Schlingloff, Software-Qualitätssicherung Wie funktioniert das? Anweisung i++ ist nicht elementar! d.h., i kann jeden Wert zwischen 2 und 10 haben JPF sucht alle Interleavings ab Explizite Repräsentation des Zustandsraumes Depth-first-search Eigenschaften: LTL, Assertions Auswertung der Formeln während des Aufbaus des Zustandsgraphen

Folie 7 H. Schlingloff, Software-Qualitätssicherung JPF Architektur Aus: W. Visser, P. Mehlitz, Model Checking Programs with Java PathFinder

Folie 8 H. Schlingloff, Software-Qualitätssicherung Programmzustände Der Zustand des Programms besteht aus Information über jeden Thread im Java Programm - für jede aufgerufene Methode ein Keller den statischen Variablen in allen Klassen - Fields und Locks für jede Klasse den dynamischen Variablen aller Objekte - Fields und Locks für jedes Objekt Gemeinsame Anteile des Zustandsraumes Aufteilen auf eine Menge separat gespeicherter Komponenten fields, locks, frames Statt einer Menge von Zustandskomponentenwerten wird nur der Index eines Eintrags gespeichert jeder Zustand ist ein Integer-Array effiziente Repräsentation von Mengen von Integer-Arrays

Folie 9 H. Schlingloff, Software-Qualitätssicherung Zustandsraumexplosion n boolesche Variablen 2 n Zustände Maßnahmen: Symmetrie-Reduktionen - Äquivalente Zustände werden nur einmal durchsucht Partial-order-Reduktionen - verschiedene Interleavings, die zum selben Ergebnis führen, werden nur einmal durchsucht Abstraktion - gewisse Anteile des Zustands werden weggelassen

Folie 10 H. Schlingloff, Software-Qualitätssicherung Symmetrie-Reduktionen Idee: Äquivalente Zustände nur einmal durchsuchen Äquivalent: Im Sinne des erwarteten Fehlverhaltens Speicherverwaltung, Reihenfolge der erzeugten Objekte, usw. Die Reihenfolge, in der Klassen geladen werden, spielt für JPF keine Rolle Kanonische Ordnung der Klassen im Speicher Verwaltung dynamisch erzeugter Objekte? Speichern der Art und Anzahl von new Aufrufen

Folie 11 H. Schlingloff, Software-Qualitätssicherung Partial-Order Reduktion Parallele Ausführung von Threads führt zu vielen verschiedenen Interleavings oft beeinflusst die Reihenfolge das Gesamtergebnis nicht dann ist es ausreichend, nur eine statt aller Möglichkeiten zu untersuchen Bsp.: {x=0, y=0} x++ || y++ {x=1, y=1} x=0, y=0 x=1, y=0x=0, y=1 x=1, y=1 x++ y++

Folie 12 H. Schlingloff, Software-Qualitätssicherung class S1 { int x;} class FirstTask extends Thread { public void run() { S1 s1; int x = 1; s1 = new S1(); x = 3; }} class Main { public static void main(String[] args) { FirstTask task1 = new FirstTask(); SecondTask task2 = new SecondTask(); task1.start(); task2.start(); }} class S2 { int y;} class SecondTask extends Thread { public void run() { S2 s2; int x = 1; s2 = new S2(); x = 3; }} state space search generates 258 states with symmetry reduction: 105 states with partial order reduction: 68 states with symmetry reduction + partial order reduction : 38 states Bsp. aus: W. Visser, K. Havelund, G. Brat, S. Park and F. Lerda. "Model Checking Programs." Automated Software Engineering Journal Volume 10, Number 2, April

Folie 13 H. Schlingloff, Software-Qualitätssicherung Abstraktion Techniken aus der abstrakten Interpretation von Programmen (nächstes Kapitel): Slicing Partielle Evaluation Slicing versucht, irrelevante Programmteile wegzulassen irrelevant in Bezug auf ein bestimmtes Kriterium Z.B. Erreichbarkeit einer bestimmten Anweisung bestimmte Variablen könnten dazu nicht beitragen Abhängigkeitsanalyse

Folie 14 H. Schlingloff, Software-Qualitätssicherung Weitere Abstraktionstechniken manuelle Einschränkungen des Zustandsraumes 32-Bit-Integer zu 8-Bit Größe von Arrays einschränken dynamische Objekterzeugung vermeiden Zusätzliche Annahmen im Programmtext Verify.beginAtomic()... Verify.endAtomic() Verify.assertTrue(... ); Ersetzung durch abstrakte Bereiche z.B. Int durch { 0}