Computergestützte Verifikation

Slides:



Advertisements
Ähnliche Präsentationen
Kurzwiederholung Informatik I, Teil I: Grundkonzepte
Advertisements

Kap. 13 Sweep-Line Algorithmen Kap Schnittprobleme
Eine dynamische Menge, die diese Operationen unterstützt,
Asymptotische Notation
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Rekursion vs. Iteration
Graphen Ein Graph ist eine Kollektion von Knoten und Kanten. Knoten sind einfache Objekte. Sie haben Namen und können Träger von Werten, Eigenschaften.
Qualitätssicherung von Software (SWQS)
Prof. Dr. Holger Schlingloff
Zeitliche Verwaltung XML-basierter Metadaten in digitalen Bibliotheken M. Kalb, G. SpechtUniversität Ulm, Abteilung DBIS.
Kapitel 3: Listen Lineare Liste: endliche Folge von Elementen eines Grundtyps (n>=0), leere Liste falls n=0 Listenelemente besitzen.
Kapitel 4 Datenstrukturen
Einige entscheidbare bzw. rekursiv aufzählbare Sprachen
Verifizieren versus Berechnen
Rekursive Listenverarbeitung
1 Computergestützte Verifikation Abstraktion.
Computergestützte Verifikation
1 Computergestützte Verifikation SAT-basiertes Model Checking Ansatz: Übersetze das Model Checking Problem in ein aussagenlogisches Erfüllbarkeitsproblem.
1 Computergestützte Verifikation Symbolisches Model Checking 4.1 CTL Model Checking mit Binary Decision Diagrams (1. Systeme 2. Spezifikationen.
1 Computergestützte Verifikation Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.
1 Computergestützte Verifikation Real Time Systeme 5.1 Timed Automata 5.2 TCTL 5.3 Abstraktion durch Regionen 5.4 Abstraktion durch Zonen.
1 Computergestützte Verifikation Beispiel für Shape-Analysis Insert in Liste: x : nichtleere Liste x malloc(y) x y y -> n = x x y x = y x.
Software-Engineering II Eingebettete Systeme, Softwarequalität, Projektmanagement Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt.
Java: Dynamische Datentypen
Indirekte Adressierung
Repräsentation von Datenstrukturen im -Kalkül Simon Pinkel, Betreuer: Guido Tack Seminar: Theorie kommunizierender Systeme: Der -Kalkül.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (13 – Offenes Hashing) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (17 –Turingmaschinen) Prof. Dr. Th. Ottmann.
Seminar parallele Programmierung SS 2003
6 Folgen (Teil II - Datenstrukturen und Algorithmen)
1 Kap. 2 Graphen Kap. 2.1 Netze Beispiele: MVV, Autobahnen, WIN, E/R, LH-Flüge, Stützgraphen, Petri-Netze, SIPs, ISA-Hierarchien, Operator-Graphen, Wartegraphen.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Grundlegende Analysen & Zwischendarstellungen
2. Univariate Regressionsanalyse 2.1 Das statische Regressionsmodell
Modelchecker – RED Tool: Region-Encoding Diagram Stefan Neumann.
Statische Analyse Gero Leinemann.
Telecooperation/RBG Technische Universität Darmstadt Copyrighted material; for TUD student use only Grundlagen der Informatik I Thema 14: Schrittweise.
Zentralübung Automotive Software Engineering – Übungsblatt 8
Konstruktion der Voronoi-Diagramme II
Effiziente Algorithmen
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke.
Fuzzymengen – Was ist das?
2.4 Rekursion Klassifikation und Beispiele
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
Algorithmen und Datenstrukturen Übungsmodul 8
Einfache OQL-Ausdrücke (1) Literale und Objekte können direkt konstruiert werden; gültige Ausdrücke und ihre Typen sind z.B.: "Quader77": string struct(x:1.0,
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Thomas Hilpold: Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger.
Verteilte Systeme Marcel Waldvogel. Marcel Waldvogel, IBM Zurich Research Laboratory, Universität Konstanz, , 2 Verteilte Systeme Entwicklung.
Computergestützte Verifikation
BINOMISCHE FORMELN (Beispiel)
1 Computergestützte Verifikation Binary Decision Diagrams (BDD) Inhalt: Die Datenstruktur BDD Operationen auf BDD CTL Model.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms.
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.
Grundlagen der Algorithmen und Datenstrukturen Kapitel
2 Datenabstraktion Geheimnisprinzip:
Kapitel 5Strukturen Information aus der realen Welt werden in einem informationsverarbeitenden System als Daten abgelegt. Diese stellen also eine (vereinfachte)
Routenplanung querfeldein - Geometric Route Planning
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Voronoi-Diagramme.
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
Programmiersprachen II Fortsetzung Datenstrukturen Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Pointer. * und &  Bei der Definition int var1; ○ // „normale“ Variable int *var2; ○ // Zeiger auf einen Integer int *var2 = NULL; ○ // … incl. Initialisierung.
 Präsentation transkript:

Computergestützte Verifikation 25.6.2002

Probleme bei der Softwareverifikation komplexe Datentypen und Expressions Pointer und dynamische Datenstrukturen Prozeduren und Rekursion 4. Bibliotheken

Idee von Abstract Interpretation Rechnen im konkretem Verband  Rechnen in einem “passenden” abstrakten Verband Beispiele für abstrakte Verbände: Zahlenintervalle [a,c][b,d] = [max(a,b),min(c,d)] [a,c][b,d] = [min(a,b),max(c,d)] Boolesche Funktionen mit , Zonen mit Schnitt und konvexer Hülle der Vereinigung Kreuzprodukte beliebiger Verbände (, komponentenweise)

“passend” = Galois-Verbindung Konkret: [C,,] Abstrakt: [A,,] Abstraktionsfunktion a: C  A Konkretisierungsfunktion g: A  C (a,g) ist Galoisverbindung, wenn a(x)  Y gdw. x  g(Y) Insbesondere: z  g(a(z)) (x := z, Y := a(z) ) a(g(Z))  Z (x := g(Z)), Y := Z ) a – “präziseste Abstraktion” g – “liberalste Interpretation”

Widening = Zwischenergebnis bei Fixpunktberechnung bewußt vergrößern Vorteil: Terminierung in endlich vielen Schritten Nachteil: berechneter Fixpunkt ist nicht notwendigerweise der kleinste Beispiel: Widening: instabile Grenzen auf min(- 0,1)/max(0,1,) [64,70]  [32,71]  [1, ]  [0, ] [64,70]  [63,71]  [1, ]  [0, ]  [-, ]

Narrowing = den durch Widening entstandenen Schaden begrenzen: Def.:  ist Narrowing falls x  y  x  y  x  y und für keine monoton fallende Kette x0, x1, ..., ist die Folge y0 := x0, yi+1 := yi  x i+1 stark monoton fallend.

8.3 Shape Analysis Ziel: Abstrakte Repräsentation von Invarianten dynamischer Datenstrukturen Mittel: Abstrakte Interpretation auf geeigneter Domain meist: “summary nodes” Liste mit mind. 1 Element x sm

Beispiel für Shape-Analysis Insert in Liste: x : nichtleere Liste x malloc(y) y x x y -> n = x y x y x = y Coarsening xy

Etwas schwieriger Delete aus Liste x: nichtleere Liste Materialisierung aus begleitenden Invarianten dann einfach: y = x; x = x -> n; free(y);

Begleitende Invarianten sm(v) Location v repr. evt. mehr als ein Objekt x(v) Variable x zeigt auf Objekt v n(v1,v2) v1.n zeigt auf v2 sh(v) mehr als ein Pointer zeigt auf v r(v) v ist von einer Variable erreichbar (kein Garbage) rx(v) v ist von x erreichbar c(v) v liegt auf einem Zyklus cf.b(v) v.f -> b = &v (Doppellink) ... alles interpretiert z.B. in 3-wertiger Logik (ja – vielleicht – nein)

8.4 Slicing Ziel: Alle Programmteile streichen, die keinen Einfluß auf verifizierte Eigenschaft haben  weniger Variablen (= kleinere Zustände) + weniger Übergänge statisch: geg: Kriterium = (Variable, PC) dynamisch: geg: Kriterium + Eingabe

Beispiel statisch 1 read(n); 2 i := 1; 3 sum := 0; 4 product := 1; 5 while i <= n do sum := sum + 1; product := product * i; i := i + 1; end 9 write(sum); 10 write(product); 1 read(n); 2 i := 1; 4 product := 1; 5 while i <= n do product := product * i; i := i + 1; end 10 write(product);  (product,10)

Beispiel dynamisch 1 read(n); 1 read(n); 2 i := 1; 2 i := 1; 3 while i <= n do if i mod 2 = 0 then x := 17; else x := 18; i := i + 1; end 8 write(x); 1 read(n); 2 i := 1; 3 while i <= n do if i mod 2 = 0 then x := 17; else 7 i := i + 1; end 8 write(x);  (8,x,n=2)

Kontrollflußgraph start read(n) sum:=0 product:=1 i<=n stop write(product) write sum sum:=sum+1 product := product*i i:=i+1

Fluss-Abhängigkeit i j x := ... :=...x... x  DEF(i) x  DEF(k) x  REF(i) j ist flussabhängig von i

Post-Dominanz i ist post-dominiert von j falls jeder Kontrollpfad von i zu STOP durch j geht i if j

Kontrollabhängigkeit j von i kontrollabhängig falls es gibt einen Pfad von i nach j, so daß jeder Knoten außer i von j post-dominiert ist - ist ist von j nicht post-dominiert i i while j j stop stop

Iterative Lösung von Datenflußgleichungen R(i) – relevante Variablen in Knoten i S - relevante Statements B - relevante Verzweigungen R(i) += V falls Kriterium = (V,i) R(i) += {v} falls und entweder v R(j), v  DEF(i), oder v  REF(i), DEF(i)  R(j)  i j x := v  R(j) j i x  R(j) x := ...v...

Iterative ... Startwert für S: Alle Statements, die Variablen definieren, die bei einem direkten Nachfolger relevant sind v := v  R(j)

Iterative.... Kriterium(v,5) Beispiel 1 R {} {v} Beispiel 2 R 1 x:=0 {} 2 y:= x+1 {x} 3 v := x {x} 4 z := v+1; {v} 5 output(v) {v} 1 v := 0; 2 v := 1; 3 x := v + 1; 4 y := v + 2; 5 output(v) S: {1,3} S: {2}

Iterative.... B := Alle Branch-Statements, von denen ein relevantes Statement kontrollabhängig ist dann: für alle b in B: R(b) += REF(b) S += B ... und alles von vorn

Beispiel Kriterium: (v,5) R(0) {} {v} R(1) {} {v} {v,x} 1 v := 0 3 if x < 7 then v := 1 5 output(v) S(0):{1,4} S(1):{1,2,3,4} B: {3}

Zusammenfassung Softwareverifikation essentiell: geeignete Abstraktion, Abstraktionsverfeinerung Kombination Model Checking – Static Analysis - Alias-Analyse - Abstract Interpretation - Shape Analysis - Slicing Viele Probleme, viele offen, aber auch Hoffnung Unentscheidbarkeit setzt Grenzen

Tools BANDERA BEBOP, C2BP JPF .......

9. Sonstiges Ziel: In einigen weiteren Domains Tragfähigkeit der gelernten Konzepte testen

9.1 Hybride Systeme hybrid = kontinuierliche + diskrete Variablen Hybrider Automat: h>= max h’ [ -0.8,0.9] h’ [ -0.5,0.7] h <= min Auslaufen Einlaufen (Der hier ist ein linearer Automat: x’ [c1,c2])

Hybrid vs. Timed vs Stopwatch Timed Automata sind hybride Automaten: c’ = 1 in allen Zuständen Stopwatch-Automata sind Hybride Automaten: c’ = 1 oder c’ = 0 in allen Zuständen  Erreichbarkeit für hybride Automaten unentscheidbar

Verifikation linearer hybrider Automaten geometrische Abstraktionen, z.B. Polyeder – analog Zonen Tool: HyTech (Berkeley) mehrere andere geometrische Formen, u.a. Ellipsen

Verifikation allg. hybrider Automaten 1 8 5 “Flowpipe” 3 9 6 4  3,6,7 2 4 7 10 numerische Verfahren  Fehlerbetrachtung notwendig Tool: CheckMate (CMU)