model checking. tino cortesitecniche di analisi di programmi 2 model checking e una tecnica per la...

37
Model Checking

Upload: ernesta-guglielmi

Post on 01-May-2015

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Model Checking

Page 2: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 2

Model CheckingE’ una tecnica per la verifica automatica di software e di sistemi reattiviConsiste nel verificare alcune proprietà, espresse in logiche temporali, di un modello del sistema.La base dei modelli operazionali sui quali si applica questa tecnica sono gli automi

Page 3: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 3

AutomiUn automa è una rappresentazione di un sistema: l’evoluzione da uno stato all’altro del sistema è legata all’applicazione di transizioni.Esempio:Un orologio digitale può essere rappresentato da un automa in cui ogni stato rappresenta l’ora e minuto corrente. Ci possono essere quindi 24x60=1440 possibili stati

11.12 11.13 11.14. . . . . .

Page 4: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 4

Rappresentazione di un automa

Un automa viene rappresentato denotando con cerchi gli stati del sistema e con frecce le transizioni da uno stato all’altro

EsempioUn “contatore modulo 3” può essere rappresentato in forma completa dal seguente automa

0 1

2

inc

incinc

dec

decdec

Page 5: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 5

Automi finiti ed infinitiL’orologio digitale può essere visto come un contatore modulo 1440.Abbiamo visto che il “contatore modulo 3” ha tre statiUna variabile intera può essere modellata con un automa che ha un numero infinito di stati (uno per ogni possibile valore) e avente una transizione per ognuna delle operazioni elementari (incremento, decremento, cambio di segno, ecc.)Anche se esistono tecniche di model checking che si applicano a classi ristrette di automi con numero infinito di stati, il model checking si applica usualmente a sistemi rappresentabili come automi a stati finiti.

Page 6: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 6

DigicodeSupponiamo di voler modellare un luchetto a combinazione, con sole tre chiavi A,B,C. Il luchetto si apre solo quando la combinazione ABA viene inserita.Questo sistema può essere rappresentato con un automa con 4 stati e 9 transizioni.

Page 7: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 7

1 2A

3 4

Digicode

C

B,C A

B A

B,C

Page 8: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 8

EsecuzioniUna esecuzione è una sequenza di stati che descrive una possibile evoluzione del sistemaAd es. 1121, 12234, 112312234 sono esecuzioni del digicodeLe possibili esecuzioni del digicode sono111,12111,112,121,122,1231111,1112,1121,1122,1123,1211,1212,1221,1222,1223,1231,1234…

Queste possono essere organizzate sotto forma di albero

Page 9: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 9

Albero delle esecuzioni1

1 2

1 2 1 2 3

1 2 1 2 3 1 2 1 2 3 1 4

Page 10: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 10

ProprietàIl nostro obiettivo è verificare proprietà del sistema, o meglio verificare proprietà del modello del sistemaAssociamo quindi ad ogni stato dell’automa delle proprietà elementari che sappiamo essere soddisfatte in quello statoAd esempio la proprietà “il luchetto è aperto” vale nello stato 4, ma non vale negli stati 1,2 e 3.Ma vorremmo dimostrare di più. Ad esempio:

Se il luchetto si apre, allora le ultime lettere digitate sono ABA, in questo ordineDigitando una qualsiasi sequenza che termini con ABA si apre il luchetto

Page 11: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 11

Proposizione atomichePer distinguere proprietà elementari da proprietà più complesse, parliamo di proposizione atomiche per denotare proprietà che sono vere o false in un dato stato.Nell’esempio del digicode, possiamo definire come proprietà elementari:

PA : è stato appena digitato un A

PB : è stato appena digitato un B

PC : è stato appena digitato un C

pred2 : lo stato precedente è il 2

pred3 : lo stato precedente è il 3

Page 12: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 12

1 2PA

A 3pred2

PB

Automa con proposizioni atomiche

C

B,C A

B A

B,C

4pred3

PA

Page 13: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 13

1 2PA

A 3pred2

PB

C

B,C A

B A

B,C

4pred3

PA

Dimostriamo che se il luchetto si apre, allora le ultime lettere digitate sono ABA, in questo ordineConsideriamo un’esecuzione che apre il luchetto, cioè che finisce sullo stato 4Poiché in 4 vale pred3, l’esecuzione deve finire con 34

Ma in 3 vale pred2. quindi l’esecuzione deve finire con 234.

In 2 e 4 vale PA, ed in 3 vale PB . quindi le ultime tre lettere digitate devono essere ABA.

Page 14: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 14

AutomiDato un insieme di proposizioni elementari Pi, un automa è una tupla A =<Q,E,T,q0,l> in cui:

Q è un insieme finito di statiE è un insieme finito di etichette di transizioniT Q x E x Q è un insieme di transizioniq0 è lo stato iniziale

l è la funzione che associa ad ogni stato di Q l’insieme delle proprietà elementari che sono vere in quello stato

Page 15: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 15

L’automa digicode

Q= {1,2,3,4}E={A,B,C}q0 = 1

l = { 1, 2 {PA},3 {PB, pred2}, 4 {PA,pred3} }

T={ (1,A,2),(1,B,1),(1,C,1),(2,A,2),(2,B,3),(2,C,1), (3,A,4),(3,B,1),(3,C,1) }

1 2PA

A 3pred2

PB

C

B,C A

B A

B,C

4pred3

PA

Page 16: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 16

Paths, Esecuzioni, Stati raggiungibili

Un path in un automa A è una sequenza , finita o infinita, di transizioni (qi, ei, q’i) di A tale che per ogni i q’i= qi+1.La lunghezza di un path è il numero (potenzialmente infinito) di transizioni del pathUna esecuzione parziale è un path che parte dallo stato inizialeUna esecuzione completa è un’esecuzione che non può essere estesaUno stato è raggiungibile se esiste almeno un’esecuzione parziale (quindi che parte dallo stato iniziale) in cui esso appare.

Page 17: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 17

0RA RB

1WA RB

2RA WB

7RA PB

6PA RB

4WA PB

3WA WB

5PA WB

PRINTER MANAGER W= waitP = printR = rest

reqA

reqA

reqB

reqB

reqAreqB

begA begB

begAbegB

endA

endB

endAendB

Page 18: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 18

Proprietà che vorremmo verificare sul Printer Manager

In ogni esecuzione, ogni stato in cui vale PA è preceduto da uno stato in cui vale WA

Questa si può verificare! (… anche a mano)

In ogni esecuzione ogni stato in cui vale WA è seguito (non necessariamente subito) da uno stato in cui vale PA.

Questa non vale! E le tecniche di model checking in

questo caso ci forniscono un controesempio…

Page 19: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 19

0RA RB

1WA RB

2RA WB

7RA PB

6PA RB

4WA PB

3WA WB

5PA WB

IL PRINTER MANAGERNON E’ FAIR

Controesempio: 0 1 3 4 1 3 4 1 3 4 1 3 4 1 3 4 1 3 4 …

reqA

reqA

reqB

reqB

reqAreqB

begA begB

begAbegB

endA

endB

endAendB

Page 20: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 20

Automi con variabiliQuando si vuole modellare un sistema, dobbiamo considerare anche variabili legate agli statiSe programma = controllo + dati

la coppia <stati, transizioni> rappresenta il controlloLe variabili rappresentano dati

Esempio: Nel sistema di “apertura luchetto”, se volessimo contare il numero di errori fatti dall’utente e volessimo tollerare al massimo 3 errori, dovremo introdurre una variabile intera ctr con valore iniziale 0, per accumulare il numero degli errori

Page 21: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 21

Interazione variabili-automa

L’automa interagisce con le variabili in due modi:Assegnamento: una transizione può modificare il valore di una o più variabiliGuardia: una transizione può essere determinata da una condizione sulle variabili: una transizione non può avvenire finché non vale una certa condizione sulle variabili.

Page 22: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 22

1 2A 3

if ctr<3 Cctr++

B A 4

err

if ctr<3 B,Cctr++

if ctr<3 Actr++

if ctr<3 B,Cctr++

ctr=0

if ctr=3 B,Cctr++

if ctr=3 B,Cctr++

if ctr=3 A,Cctr++

int ctr;

Page 23: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 23

UnfoldingPer applicare le tecniche di model checking è spesso necessario fare l’unfolding di automi con variabili in uno state graph in cui appaiono solo le possibili transizioniIn questi casi si parla più propriamente di sistema di transizioni (transition system)Gli stati di un unfolded automa sono chiamati stati globali

Page 24: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 24

1ctr=0

A B A 2ctr=0

3ctr=0

4ctr=0

errctr=4

1ctr=1

A B A 2ctr=1

3ctr=1

4ctr=1

1ctr=2

A B A 2ctr=2

3ctr=2

4ctr=2

1ctr=3

A B A 2ctr=3

3ctr=3

4ctr=3

B,C

B,C

B,C

A

A

A

B,C

B,C

B,C

Page 25: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 25

SincronizzazioneQuando si ha a che fare con sistemi reali, questi sono composti da sottosistemi o moduli.Un automa globale si ottiene dalla cooperazione e sincronizzazione degli automi che corrispondono alle sottocomponenti del sistemaLa situazione più semplice è quando le sottocomponenti non interagiscono tra di loro. In questo caso l’automa globale è ottenuto facendo il prodotto cartesiano degli automi che rappresentano le componenti. Ad esempio, per modellare un sistema costituito da un contatore modulo 2, un contatore modulo 3 ed un contatore modulo 4, costruiremo un automa con 2x3x4 stati.

Page 26: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 26

0,0,3

0,0,2

0,0,1

0,0,0

1,0,3

1,0,2

1,0,1

1,0,0

0,1,3

0,1,2

0,1,1

0,1,0

1,1,3

1,1,2

1,1,1

1,1,0

0,2,3

0,2,2

0,2,1

0,2,0

1,2,3

1,2,2

1,2,1

1,2,0

Page 27: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 27

Sincronizzazione mediante scambio di messaggi

Distinguiamo tra le etichette delle transizioni quelle associate all’emissione di un messaggio !m e quelle associate alla ricezione di un messaggio ?mNel prodotto sincronizzato saranno permesse solo le transizioni in cui una data emissione è eseguita contemporaneamente alla corrispondente ricezione

Page 28: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 28

0 1

?down

2

?down

?up ?up?up

?down

Ascensore: la cabina

Page 29: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 29

Closed Open

?close_i

?open_i

?close

Ascensore: la i-esima porta

?open_i

Page 30: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 30

Ascensore: il controller

free2 on2

!open_2

!close_2

free1 on1

!open_1

!close_1

free0 on0

!open_0

!close_0

2->0

0->2

!down

!down

!down

!up

!up

Page 31: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 31

Ascensore: l’automa prodotto

L’automa che modella l’ascensore si può quindi ottener come prodotto sincronizzato di questi 5 automi (3 porte, cabina, controller)Uno stato dell’automa risultante avrà quindi 5 componenti, corrispondenti allo stato della porta 0, porta 1, porta 2, cabina e controllerI vincoli di sincronizzazione riducono le possibili transizioni alle emissioni sincronizzate con ricezioni si messaggi espresse da:

Sync={ (?open0,-,-,-,!open0), (?close0,-,-,-,!close0),

(-,?open1,-,-,!open1), (-,?close1,-,-,!close1),

(-,-,?open2,-,!open2), (-,-,?close2,-,!close2),

(-,-,-,?down,!down), (-,-,-,?up,!up) }

Page 32: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 32

Proprietà verificabili (1)La porta di un certo piano non si apre se la cabina è ad un piano diverso

Per la porta 0 questa si traduce nel fatto che ogni stato che ha Open come prima componente ha 0 come quarta componenteQuesta proprietà si può esprimere usando proposizioni atomicheIdem per le altre porte

Page 33: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 33

Proprietà verificabili (2)La cabina non si muove se una delle porte è aperte

Provare questa proprietà è più delicato: dobbiamo provare che in ogni esecuzione, uno stato in cui una delle prime 3 componenti è Open non può essere seguito immediatamente da uno stato in cui la quarta componente è diversaUna proprietà di questo tipo può essere verificata automaticamente da un model checker

Page 34: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 34

Sincronizzazione con variabili condivise

Un altro modo per permettere la comunicazione tra sottosistemi è quello di lasciarli condividere alcune variabili Ad esempio, se vogliamo migliorare l’automa della stampante unfair descritta precedentemente, possiamo introdurre una variabile turn che indichi quale dei due utenti ha diritto di stampare

Page 35: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 35

Utente A ed utente B

x y

turn=B

If turn=A printA

z t

turn=A

If turn=B printB

Page 36: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 36

Stampante: automa globale

L’automa globale che descrive il sistema includendo sia l’utente A che l’utente B può essere costruito da questi due automi e dal valore della variabile condivisa turn

x,z,AprintA

y,z,A

x,t,B x,z,BprintB

turn=Bturn=A

Page 37: Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi

Tino Cortesi Tecniche di Analisi di Programmi 37

Osservate che…Questo protocollo garantisce che non si raggiunga mai lo stato (y,t,-)Garantisce che non possa mai essere usata la stampante contemporaneamenteMa impedisce anche che ci possano essere due stampe consecutive da parte dello stesso utente!!!