Top Banner
1 Computergestützte Verifikation 25.6.2002
29

1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

Apr 05, 2015

Download

Documents

Gotthard Kantor
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

1

Computergestützte Verifikation

25.6.2002

Page 2: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

2

Probleme bei der Softwareverifikation

1. komplexe Datentypen und Expressions

2. Pointer und dynamische Datenstrukturen

3. Prozeduren und Rekursion

4. Bibliotheken

Page 3: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

3

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)

Page 4: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

4

“passend” = Galois-Verbindung

Konkret: [C,,] Abstrakt: [A,,]

Abstraktionsfunktion : C AKonkretisierungsfunktion : A C

() ist Galoisverbindung, wenn (x) Y gdw. x (Y)

Insbesondere: z ((z)) (x := z, Y := (z) ) ((Z)) Z (x := (Z)), Y := Z )

– “präziseste Abstraktion” – “liberalste Interpretation”

Page 5: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

5

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, ] [-, ]

Page 6: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

6

Narrowing

= den durch Widening entstandenen Schaden begrenzen:

Def.: ist Narrowing falls

x y x y x y und für keine monoton fallende Kettex0, x1, ..., ist die Folgey0 := x0, yi+1 := yi x i+1 stark monoton fallend.

Page 7: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

7

8.3 Shape Analysis

Ziel: Abstrakte Repräsentation von Invarianten dynamischer Datenstrukturen

Mittel: Abstrakte Interpretation auf geeigneter Domain

meist: “summary nodes”

x Liste mit mind. 1 Element

sm

Page 8: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

8

Beispiel für Shape-Analysis

Insert in Liste:

x : nichtleere Liste x

malloc(y) xy

y -> n = x xy

x = y xy

Coarsening xy

Page 9: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

9

Etwas schwieriger

Delete aus Liste

x: nichtleere Liste

Materialisierung

aus begleitenden Invarianten

dann einfach: y = x;

x = x -> n; free(y);

Page 10: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

10

Begleitende Invarianten

sm(v) Location v repr. evt. mehr als ein Objektx(v) Variable x zeigt auf Objekt vn(v1,v2) v1.n zeigt auf v2

sh(v) mehr als ein Pointer zeigt auf vr(v) v ist von einer Variable erreichbar (kein Garbage)rx(v) v ist von x erreichbarc(v) v liegt auf einem Zykluscf.b(v) v.f -> b = &v (Doppellink)

...

alles interpretiert z.B. in 3-wertiger Logik (ja – vielleicht – nein)

Page 11: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

11

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

Page 12: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

12

Beispiel statisch

1 read(n);2 i := 1;3 sum := 0;4 product := 1;5 while i <= n do6 sum := sum + 1;7 product := product * i;8 i := i + 1; end9 write(sum);10 write(product);

(product,10)

1 read(n);2 i := 1;

4 product := 1;5 while i <= n do

7 product := product * i;8 i := i + 1; end

10 write(product);

Page 13: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

13

Beispiel dynamisch

1 read(n);2 i := 1;3 while i <= n do4 if i mod 2 = 0 then5 x := 17; else6 x := 18;7 i := i + 1; end8 write(x);

(8,x,n=2)

1 read(n);2 i := 1;3 while i <= n do4 if i mod 2 = 0 then5 x := 17; else

7 i := i + 1; end8 write(x);

Page 14: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

14

Kontrollflußgraph

start read(n) sum:=0 product:=1 i<=n

write sumwrite(product)stop

sum:=sum+1

product :=product*i

i:=i+1

Page 15: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

15

Fluss-Abhängigkeit

x := ...

i j:=...x...

x DEF(i) x REF(i)x DEF(k)

j ist flussabhängig von i

Page 16: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

16

Post-Dominanz

i ist post-dominiert von j falls jeder Kontrollpfad von izu STOP durch j geht

i if

j

Page 17: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

17

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

stop

i

jstop

while

i

j

Page 18: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

18

Iterative Lösung von Datenflußgleichungen

R(i) – relevante Variablen in Knoten iS - relevante StatementsB - 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 :=

x := ...v...i j

v R(j)

x R(j)

Page 19: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

19

Iterative ...

Startwert für S:

Alle Statements, die Variablen definieren, die bei einemdirekten Nachfolger relevant sind

v := v R(j)

Page 20: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

20

Iterative....

Beispiel 1

1 v := 0;2 v := 1;3 x := v + 1;4 y := v + 2;5 output(v)

R

{}{}{v}{v}{v}

S: {2}

Beispiel 2 R

1 x:=0 {}2 y:= x+1 {x}3 v := x {x}4 z := v+1; {v}5 output(v) {v}

Kriterium(v,5)

S: {1,3}

Page 21: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

21

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

Page 22: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

22

Beispiel

1 v := 02 x := 53 if x < 7 then4 v := 15 output(v)

R(0)

{}{v}{v}{}{v}

Kriterium: (v,5)

S(0):{1,4}

B: {3}

R(1)

{}{v}{v,x}{}{v}

S(1):{1,2,3,4}

Page 23: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

23

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

Page 24: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

24

Tools

BANDERA

BEBOP, C2BP

JPF

.......

Page 25: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

25

9. Sonstiges

Ziel: In einigen weiteren Domains Tragfähigkeit dergelernten Konzepte testen

Page 26: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

26

9.1 Hybride Systeme

hybrid = kontinuierliche + diskrete Variablen

Hybrider Automat:

Einlaufen Auslaufen

h>= max

h <= minh’ [ -0.5,0.7]h’ [ -0.8,0.9]

(Der hier ist ein linearer Automat: x’ [c1,c2])

Page 27: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

27

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

Page 28: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

28

Verifikation linearer hybrider Automaten

geometrische Abstraktionen, z.B. Polyeder – analog Zonen

mehrere andere geometrische Formen, u.a. Ellipsen

Tool:HyTech (Berkeley)

Page 29: 1 Computergestützte Verifikation 25.6.2002. 2 Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.

29

Verifikation allg. hybrider Automaten

numerische Verfahren Fehlerbetrachtung notwendig

Tool: CheckMate (CMU)

“Flowpipe”1

2

3

4

5

6

7

8

9

10

4 3,6,7