model checking. tino cortesitecniche di analisi di programmi 2 model checking e una tecnica per la...
TRANSCRIPT
Model Checking
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
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. . . . . .
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
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.
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.
Tino Cortesi Tecniche di Analisi di Programmi 7
1 2A
3 4
Digicode
C
B,C A
B A
B,C
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
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
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
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
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
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.
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
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
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.
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
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…
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
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
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.
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;
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
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
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.
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
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
Tino Cortesi Tecniche di Analisi di Programmi 28
0 1
?down
2
?down
?up ?up?up
?down
Ascensore: la cabina
Tino Cortesi Tecniche di Analisi di Programmi 29
Closed Open
?close_i
?open_i
?close
Ascensore: la i-esima porta
?open_i
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
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) }
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
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
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
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
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
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!!!