La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Model Checking.

Presentazioni simili


Presentazione sul tema: "Model Checking."— Transcript della presentazione:

1 Model Checking

2 Tecniche di Analisi di Programmi
Model Checking E’ una tecnica per la verifica automatica di software e di sistemi reattivi Consiste 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 Tecniche di Analisi di Programmi
Automi Un 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 Esempio Un “contatore modulo 3” può essere rappresentato in forma completa dal seguente automa inc dec 1 dec dec inc inc 2 Tino Cortesi Tecniche di Analisi di Programmi

5 Automi finiti ed infiniti
L’orologio digitale può essere visto come un contatore modulo 1440. Abbiamo visto che il “contatore modulo 3” ha tre stati Una 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 Tecniche di Analisi di Programmi
Digicode Supponiamo 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 Tecniche di Analisi di Programmi
Digicode B,C A A B A 1 2 3 4 C B,C Tino Cortesi Tecniche di Analisi di Programmi

8 Tecniche di Analisi di Programmi
Esecuzioni Una esecuzione è una sequenza di stati che descrive una possibile evoluzione del sistema Ad es. 1121, 12234, sono esecuzioni del digicode Le possibili esecuzioni del digicode sono 1 11,12 111,112,121,122, ,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 esecuzioni
1 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 Tecniche di Analisi di Programmi
Proprietà Il nostro obiettivo è verificare proprietà del sistema, o meglio verificare proprietà del modello del sistema Associamo quindi ad ogni stato dell’automa delle proprietà elementari che sappiamo essere soddisfatte in quello stato Ad 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 ordine Digitando una qualsiasi sequenza che termini con ABA si apre il luchetto Tino Cortesi Tecniche di Analisi di Programmi

11 Proposizione atomiche
Per 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 Automa con proposizioni atomiche
B,C A 2 PA 3 pred2 PB 4 pred3 PA 1 A B A C B,C Tino Cortesi Tecniche di Analisi di Programmi

13 Tecniche di Analisi di Programmi
B,C A 1 2 PA 3 pred2 PB 4 pred3 PA A B A C B,C Dimostriamo che se il luchetto si apre, allora le ultime lettere digitate sono ABA, in questo ordine Consideriamo un’esecuzione che apre il luchetto, cioè che finisce sullo stato 4 Poiché 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 Tecniche di Analisi di Programmi
Automi Dato un insieme di proposizioni elementari Pi, un automa è una tupla A =<Q,E,T,q0,l> in cui: Q è un insieme finito di stati E è un insieme finito di etichette di transizioni T Í Q x E x Q è un insieme di transizioni q0 è 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 Tecniche di Analisi di Programmi
L’automa digicode B,C A 2 PA 3 pred2 PB 4 pred3 PA 1 A B A C B,C Q= {1,2,3,4} E={A,B,C} q0 = 1 l = { 1aÆ, 2a {PA},3a {PB, pred2}, 4a {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) } Tino Cortesi Tecniche di Analisi di Programmi

16 Paths, Esecuzioni, Stati raggiungibili
Un path in un automa A è una sequenza s, 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 path Una esecuzione parziale è un path che parte dallo stato iniziale Una esecuzione completa è un’esecuzione che non può essere estesa Uno 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 Tecniche di Analisi di Programmi
PRINTER MANAGER W= wait P = print R = rest 0 RA RB endB endA reqA reqB 6 PA RB begA 1 WA RB 2 RA WB begB 7 RA PB reqB reqA endB endA 4 WA PB begB 3 WA WB begA 5 PA WB reqB reqA Tino Cortesi Tecniche di Analisi di Programmi

18 Tecniche di Analisi di Programmi
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 Tecniche di Analisi di Programmi
IL PRINTER MANAGER NON E’ FAIR 0 RA RB endB endA reqA reqB 6 PA RB begA 1 WA RB 2 RA WB begB 7 RA PB reqB reqA endB endA 4 WA PB begB 3 WA WB begA 5 PA WB reqB reqA Controesempio: … Tino Cortesi Tecniche di Analisi di Programmi

20 Tecniche di Analisi di Programmi
Automi con variabili Quando si vuole modellare un sistema, dobbiamo considerare anche variabili legate agli stati Se programma = controllo + dati la coppia <stati, transizioni> rappresenta il controllo Le 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ù variabili Guardia: 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 Tecniche di Analisi di Programmi
int ctr; if ctr<3 B,C ctr++ if ctr<3 B,C ctr++ if ctr<3 A ctr++ ctr=0 A B A 2 3 4 1 if ctr<3 C ctr++ if ctr=3 A,C ctr++ if ctr=3 B,C ctr++ if ctr=3 B,C ctr++ err Tino Cortesi Tecniche di Analisi di Programmi

23 Tecniche di Analisi di Programmi
Unfolding Per 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 transizioni In 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 Tecniche di Analisi di Programmi
1 ctr=0 A 2 ctr=0 B 3 ctr=0 A 4 ctr=0 A B,C B,C 1 ctr=1 A 2 ctr=1 B 3 ctr=1 A 4 ctr=1 A B,C B,C 1 ctr=2 A 2 ctr=2 B 3 ctr=2 A 4 ctr=2 B,C A B,C 1 ctr=3 A 2 ctr=3 B 3 ctr=3 A 4 ctr=3 err ctr=4 Tino Cortesi Tecniche di Analisi di Programmi

25 Tecniche di Analisi di Programmi
Sincronizzazione Quando 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 sistema La 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 Tecniche di Analisi di Programmi
1,0,3 1,1,3 1,2,3 0,0,3 0,1,3 0,2,3 1,0,2 1,1,2 1,2,2 0,0,2 0,1,2 0,2,2 1,0,1 1,1,1 1,2,1 0,0,1 0,1,1 0,2,1 1,0,0 1,1,0 1,2,0 0,0,0 0,1,0 0,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 ?m Nel 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 Tecniche di Analisi di Programmi
Ascensore: la cabina ?down ?up ?up ?up 1 2 ?down ?down Tino Cortesi Tecniche di Analisi di Programmi

29 Ascensore: la i-esima porta
?close ?open_i ?open_i Closed Open ?close_i Tino Cortesi Tecniche di Analisi di Programmi

30 Ascensore: il controller
!close_2 free2 on2 2->0 !open_2 !down !up !down !close_1 free1 on1 !open_1 !down !up 0->2 !close_0 free0 on0 !open_0 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 controller I 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 componente Questa proprietà si può esprimere usando proposizioni atomiche Idem 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 è diversa Una 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 Tecniche di Analisi di Programmi
Utente A ed utente B If turn=A printA x y turn=B If turn=B printB z t turn=A 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 printA x,z,A y,z,A turn=A turn=B printB x,t,B x,z,B Tino Cortesi Tecniche di Analisi di Programmi

37 Tecniche di Analisi di Programmi
Osservate che… Questo protocollo garantisce che non si raggiunga mai lo stato (y,t,-) Garantisce che non possa mai essere usata la stampante contemporaneamente Ma impedisce anche che ci possano essere due stampe consecutive da parte dello stesso utente!!! Tino Cortesi Tecniche di Analisi di Programmi


Scaricare ppt "Model Checking."

Presentazioni simili


Annunci Google