29
Model Checking mit SPIN Sabine Bauer 15.08.2005

Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

Model Checking mit SPIN

Sabine Bauer

15.08.2005

Page 2: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

Gliederung

2

�1. Teil: Grundlagen des Model Checking

- Abgrenzung zur deduktiven Verifikation- Das Model Checking-Problem- Kripke-Struktur- LTL- Arbeitsweise eines Model Checkers

�2. Teil: Der Model Checker „SPIN“

- Einführung in SPIN- Promela- Anforderungen in LTL, Promela und als Automat- Suchalgorithmus

Page 3: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

1. Teil:

Grundlagen des Model Checking

Page 4: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

Abgrenzung zur deduktiven Verifikation

4

� Deduktive Verifikation

- Formalisierung eines terminierenden Programms durch Vor- und Nachbedingungen, sowie Zusicherungen

� Model Checking

- Beschreibung eines für den Endlosbetrieb konzipierten Computersystems durch temporallogische Formeln wie z.B. „Jede Anfrage wird irgendwann beantwortet“ oder „Niemals sind zwei Prozesse gleichzeitig in ihrem kritischen Abschnitt“

Page 5: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

Das Model Checking-Problem

5

Programm Anforderungen

Programm alsKripke-Struktur

Anforderungenin LTL

Model Checker

vollautom.Verifikationstool

Model Checker

vollautom.Verifikationstool

Nein + Fehlerhinweis Ja

Page 6: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

Kripke-Struktur

6

M = (S, S0, R, L)

S2

S0

S3

S1

Start

Klappeschließen

Klappeöffnen

Klappeschließen

Fertig

Start

Waschen

startclosewashing

¬¬¬

startclosewashing

startclosewashing

startclosewashing

¬

¬

¬¬

Page 7: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

Anforderungen an das System

7

Forderungen an alle Pfade:

� Sicherheitsbedingung: Ein unerwünschterZustand darf nie erreicht werden!

� Lebendigkeitsbedingung: Ein erwünschter Zustandmuss irgendwannerreicht werden!

Die Anforderungen werden in LTL formuliert!

Page 8: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

Linear Temporal Logic (LTL)

8

Es gibt die folgenden vier grundlegenden Operatoren:

� Xp p gilt im nächsten Zustand

� Fp p gilt irgendwann einmal

� Gp p gilt immer

� pUq Falls es einen Zustand gibt, in dem q gilt,dann muss in jedem vorherigen Zustand perfüllt sein

LTL baut auf der Aussagenlogik auf!

Page 9: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

LTL - Beispiele

9

Kripke-Struktur:

Anforderungen in LTL:Start

Klappeschließen

S2

S0

S3

S1Klappeöffnen

Klappeschließen

Fertig

Start

Waschen

startclosewashing

startclosewashing

startclosewashing

startclosewashing

¬¬

¬

¬

¬

¬¬

� F washing

� G (washing X close)

� G ( (start close washing))X (start close)

¬∨

∨ ∨

Page 10: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

LTL - Beispiele

10

Kripke Struktur:

Anforderungen in LTL:Start

Klappeschließen

S2

S0

S3

S1Klappeöffnen

Klappeschließen

Fertig

Start

Waschen

startclosewashing

startclosewashing

startclosewashing

startclosewashing

¬¬

¬

¬

¬

¬¬

� F washing

� G (washing X close)

� G ( (start close washing))X (start close)

¬∨

∨ ∨

Wie bekommtman die nichtzutreffendenAnforderungen??

Page 11: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

Arbeitsweise eines Model Checkers

11

Nötig: Automaten auf unendlichen Wörtern (Büchi - Automaten)

(1) Fasse die Kripke-Struktur M als Automaten AM auf

(2) Wandle die LTL-Formel in einen Automaten A um

(3) Bilde den den Durchschnitt der Automaten von AM und A

(4) Akzeptierte Sprache leer M erfüllt

Akzeptierte Sprache nicht leer Durchschnitt enthält die Pfade von M, die verletzen

ϕ¬ ϕ¬

ϕ¬

ϕ

ϕ

Page 12: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

2. Teil:

Der Model Checker „SPIN“

Page 13: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

Simple Promela Interpreter (SPIN)

13

� Validation von Softwaremodellen

� Beschreibung der Softwaremodelle durch Promela(Process/Protocol Meta Language)

- C ähnliche Syntax

� Angabe der zu erfüllenden Eigenschaften inLTL

� Haupteinsatzgebiet: Analyse von Kommunikations-protokollen

� Entwickelt von Gerard Holzmann, Bell Laboratories

Page 14: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

SPIN

14

Programm Anforderungen

Programm alsKripke Struktur

Anforderungenin LTL

Model Checker

vollautom.Verifikationstool

Model Checker

vollautom.Verifikationstool

Nein + Fehlerhinweis Ja

Programm in Promela

SPIN

Page 15: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

SPIN

15

Programm Anforderungen

Programm alsKripke Struktur

Anforderungenin LTL

Model Checker

vollautom.Verifikationstool

Model Checker

vollautom.Verifikationstool

Nein + Fehlerhinweis Ja

Programm in Promela

SPIN

Page 16: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

Promela - Beispiel

16

mtype = { P, C };

mtype turn = P;

active proctype producer() {do:: (turn == P) ->

printf(‘‘Produce\n‘‘);turn = C

od}

active proctype consumer() {do:: (turn == C) ->

printf(‘‘Consume\n‘‘);turn = P

od}

Page 17: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

SPIN

17

Programm Anforderungen

Programm alsKripke Struktur

Anforderungenin LTL

Model Checker

vollautom.Verifikationstool

Model Checker

vollautom.Verifikationstool

Nein + Fehlerhinweis Ja

Programm in Promela

SPIN

Page 18: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

Anforderungen nach LTL

18

Häufig benutzte LTL-Formeln:

� [] p // immer p

� <> p // irgendwann einmal p

� p <> q // wenn p, dann irgendwann q

� p q U r // wenn p, dann q bis r auftritt

� [] <> p // immer irgendwann p

� <> [] p // irgendwann immer p

Page 19: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

SPIN

19

Programm Anforderungen

Programm alsKripke Struktur

Anforderungenin LTL

Model Checker

vollautom.Verifikationstool

Model Checker

vollautom.Verifikationstool

Nein + Fehlerhinweis Ja

Programm in Promela

SPIN

Page 20: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

SPIN

20

Programm Anforderungen

Programm alsKripke Struktur

Anforderungenin LTL

Nein + Fehlerhinweis Ja

Programm in Promela

SPIN

Anforderungenin Promela

Anforderungenals Büchi-Automat

Durchschnittsbildung

Page 21: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

SPIN

21

Programm Anforderungen

Programm alsKripke Struktur

Anforderungenin LTL

Nein + Fehlerhinweis Ja

Programm in Promela

SPIN

Anforderungenin Promela

Anforderungenals Büchi-Automat

Durchschnittsbildung

Page 22: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

LTL nach Promela

22

never { /* <> [] p */T0_init:

if:: (p) -> goto accept_S4:: (1) -> goto T0_initfi;

accept_S4:if:: (p) -> goto accept_S4fi

}

Page 23: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

SPIN

23

Programm Anforderungen

Programm alsKripke Struktur

Anforderungenin LTL

Nein + Fehlerhinweis Ja

Programm in Promela

SPIN

Anforderungenin Promela

Anforderungenals Büchi-Automat

Durchschnittsbildung

Page 24: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

LTL/Promela nach Automat

24

Büchi-Automat für <> [] p:

true pp

Büchi-Automat für [] <> p:true p

p

true

S0 S1

S1S0

Page 25: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

SPIN

25

Programm Anforderungen

Programm alsKripke Struktur

Anforderungenin LTL

Nein + Fehlerhinweis Ja

Programm in Promela

SPIN

Anforderungenin Promela

Anforderungenals Büchi-Automat

Durchschnittsbildung

Page 26: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

Suchalgorithmus

26

� Büchi-Automat akzeptiert, wenn ein Endzustand unendlich oft durchlaufen wird

� Daher Suche ob

1. Endzustand vom Startzustand aus erreicht werden kann

und

2. Endzustand von sich selbst aus erreichbar ist.

� 1. + 2. erfüllt Automat enthält die Pfade, die verletzen� Andernfalls M erfüllt

ϕϕ

Page 27: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

Geschachtelte Tiefensuche

27

S2

S3

S0

S1

p q

q

p

Akzeptiert

Akzeptiert nicht

Page 28: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

Zusammenfassung

28

Vorteile:� Automatisierung des Verifikationsprozesses� Im Fehlerfall werden direkt die verletzten Eigenschaften

ermittelt

Nachteile:� System darf nur eine endliche Menge an Zuständen haben� Mögliches Auftreten einer Zustandsexplosion

Allgemein:� SPIN ist auf dem Gebiet des Model Checking Marktführer� 2001 bekam SPIN den „Software System Award“ verliehen

Page 29: Sabine Bauer 15.08 - formal.iti.kit.edubeckert/teaching/Seminar-Formal-Methods-SS... · Programm Anforderungen Programm als Kripke-Struktur Anforderungen in LTL Model Checker vollautom.Verifikationstool

Quellen

29

� Holzmann, Gerard J.: The Spin Model Checker, Boston, 2003

� Tretow, Annekatrin: Seminar Logik in der Informatik, Model Checking – Grundlagen, Uni Koblenz, 2004

� Ciesinski, Frank: SPIN / PROMELA, Modelcheckerund Spezifikationssprache, Uni Bonn, 2004

� http://www-i7.informatik.rwth-aachen.de/d/teaching/ws0304/modelchk/DivX-PDF.html

� http://www.lib.uni-bonn.de/informatik.html� http://www.software-kompetenz.de