La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "Model Checking. Tino CortesiTecniche di Analisi di Programmi 2 Model Checking E una tecnica per la verifica automatica di software e di sistemi reattivi."— Transcript della presentazione:

1 Model Checking

2 Tino CortesiTecniche di Analisi di Programmi 2 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

3 Tino CortesiTecniche di Analisi di Programmi 3 Automi Un automa è una rappresentazione di un sistema: levoluzione da uno stato allaltro del sistema è legata allapplicazione di transizioni. Esempio: Un orologio digitale può essere rappresentato da un automa in cui ogni stato rappresenta lora e minuto corrente. Ci possono essere quindi 24x60=1440 possibili stati

4 Tino CortesiTecniche 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 allaltro Esempio Un contatore modulo 3 può essere rappresentato in forma completa dal seguente automa 01 2 inc dec

5 Tino CortesiTecniche di Analisi di Programmi 5 Automi finiti ed infiniti Lorologio digitale può essere visto come un contatore modulo 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.

6 Tino CortesiTecniche di Analisi di Programmi 6 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.

7 Tino CortesiTecniche di Analisi di Programmi 7 12 A 34 Digicode C B,CA BA

8 Tino CortesiTecniche di Analisi di Programmi 8 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

9 Tino CortesiTecniche di Analisi di Programmi 9 Albero delle esecuzioni

10 Tino CortesiTecniche di Analisi di Programmi 10 Proprietà Il nostro obiettivo è verificare proprietà del sistema, o meglio verificare proprietà del modello del sistema Associamo quindi ad ogni stato dellautoma 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

11 Tino CortesiTecniche 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. Nellesempio del digicode, possiamo definire come proprietà elementari: P A : è stato appena digitato un A P B : è stato appena digitato un B P C : è stato appena digitato un C pred 2 : lo stato precedente è il 2 pred 3 : lo stato precedente è il 3

12 Tino CortesiTecniche di Analisi di Programmi PA2PA A 3 pred 2 P B Automa con proposizioni atomiche C B,CA BA 4 pred 3 P A

13 Tino CortesiTecniche di Analisi di Programmi PA2PA A 3 pred 2 P B C B,CA BA 4 pred 3 P A Dimostriamo che se il luchetto si apre, allora le ultime lettere digitate sono ABA, in questo ordine Consideriamo unesecuzione che apre il luchetto, cioè che finisce sullo stato 4 Poiché in 4 vale pred 3, lesecuzione deve finire con 34 Ma in 3 vale pred 2. quindi lesecuzione deve finire con 234. In 2 e 4 vale P A, ed in 3 vale P B. quindi le ultime tre lettere digitate devono essere ABA.

14 Tino CortesiTecniche di Analisi di Programmi 14 Automi Dato un insieme di proposizioni elementari P i, un automa è una tupla A = 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 q 0 è lo stato iniziale l è la funzione che associa ad ogni stato di Q linsieme delle proprietà elementari che sono vere in quello stato

15 Tino CortesiTecniche di Analisi di Programmi 15 Lautoma digicode Q= {1,2,3,4} E={A,B,C} q 0 = 1 l = { 1, 2 {P A },3 {P B, pred 2 }, 4 {P A,pred 3 } } 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 2PA2PA A 3 pred 2 P B C B,CA BA 4 pred 3 P A

16 Tino CortesiTecniche di Analisi di Programmi 16 Paths, Esecuzioni, Stati raggiungibili Un path in un automa A è una sequenza, finita o infinita, di transizioni ( q i, e i, q i ) di A tale che per ogni i q i = q i+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 è unesecuzione che non può essere estesa Uno stato è raggiungibile se esiste almeno unesecuzione parziale (quindi che parte dallo stato iniziale) in cui esso appare.

17 Tino CortesiTecniche di Analisi di Programmi 17 0 R A R B 1 W A R B 2 R A W B 7 R A P B 6 P A R B 4 W A P B 3 W A W B 5 P A W B PRINTER MANAGER W= wait P = print R = rest req A req B req A req B beg A beg B beg A beg B end A end B end A end B

18 Tino CortesiTecniche di Analisi di Programmi 18 Proprietà che vorremmo verificare sul Printer Manager In ogni esecuzione, ogni stato in cui vale P A è preceduto da uno stato in cui vale W A Questa si può verificare! (… anche a mano) In ogni esecuzione ogni stato in cui vale W A è seguito (non necessariamente subito) da uno stato in cui vale P A. Questa non vale! E le tecniche di model checking in questo caso ci forniscono un controesempio…

19 Tino CortesiTecniche di Analisi di Programmi 19 0 R A R B 1 W A R B 2 R A W B 7 R A P B 6 P A R B 4 W A P B 3 W A W B 5 P A W B IL PRINTER MANAGER NON E FAIR Controesempio: … req A req B req A req B beg A beg B beg A beg B end A end B end A end B

20 Tino CortesiTecniche di Analisi di Programmi 20 Automi con variabili Quando si vuole modellare un sistema, dobbiamo considerare anche variabili legate agli stati Se programma = controllo + dati la coppia rappresenta il controllo Le variabili rappresentano dati Esempio: Nel sistema di apertura luchetto, se volessimo contare il numero di errori fatti dallutente e volessimo tollerare al massimo 3 errori, dovremo introdurre una variabile intera ctr con valore iniziale 0, per accumulare il numero degli errori

21 Tino CortesiTecniche di Analisi di Programmi 21 Interazione variabili-automa Lautoma 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.

22 Tino CortesiTecniche di Analisi di Programmi A 3 if ctr<3 C ctr++ BA 4 err if ctr<3 B,C ctr++ if ctr<3 A ctr++ if ctr<3 B,C ctr++ ctr=0 if ctr=3 B,C ctr++ if ctr=3 A,C ctr++ int ctr;

23 Tino CortesiTecniche di Analisi di Programmi 23 Unfolding Per applicare le tecniche di model checking è spesso necessario fare lunfolding 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

24 Tino CortesiTecniche di Analisi di Programmi 24 1 ctr=0 ABA 2 ctr=0 3 ctr=0 4 ctr=0 err ctr=4 1 ctr=1 ABA 2 ctr=1 3 ctr=1 4 ctr=1 1 ctr=2 ABA 2 ctr=2 3 ctr=2 4 ctr=2 1 ctr=3 ABA 2 ctr=3 3 ctr=3 4 ctr=3 B,C A A A

25 Tino CortesiTecniche di Analisi di Programmi 25 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 lautoma 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.

26 Tino CortesiTecniche 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

27 Tino CortesiTecniche di Analisi di Programmi 27 Sincronizzazione mediante scambio di messaggi Distinguiamo tra le etichette delle transizioni quelle associate allemissione 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

28 Tino CortesiTecniche di Analisi di Programmi ?down 2 ?up ?down Ascensore: la cabina

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

30 Tino CortesiTecniche di Analisi di Programmi 30 Ascensore: il controller free2on2 !open_2 !close_2 free1on1 !open_1 !close_1 free0on0 !open_0 !close_0 2->0 0->2 !down !up

31 Tino CortesiTecniche di Analisi di Programmi 31 Ascensore: lautoma prodotto Lautoma che modella lascensore si può quindi ottener come prodotto sincronizzato di questi 5 automi (3 porte, cabina, controller) Uno stato dellautoma 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) }

32 Tino CortesiTecniche 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

33 Tino CortesiTecniche 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

34 Tino CortesiTecniche 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 lautoma della stampante unfair descritta precedentemente, possiamo introdurre una variabile turn che indichi quale dei due utenti ha diritto di stampare

35 Tino CortesiTecniche di Analisi di Programmi 35 Utente A ed utente B xy turn=B If turn=A printA zt turn=A If turn=B printB

36 Tino CortesiTecniche di Analisi di Programmi 36 Stampante: automa globale Lautoma globale che descrive il sistema includendo sia lutente A che lutente B può essere costruito da questi due automi e dal valore della variabile condivisa turn x,z,A printA y,z,A x,t,B x,z,B printB turn=B turn=A

37 Tino CortesiTecniche 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 contemporaneamente Ma impedisce anche che ci possano essere due stampe consecutive da parte dello stesso utente!!!


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

Presentazioni simili


Annunci Google