330 likes | 459 Views
Lezione 13. Verifica (I). [S2001, Cap. 19] [GMJ91, Cap. 6] [R85, Cap. 6] Articoli citati in queste diapositive, e appunti Generalità; verification & validation Algoritmi di analisi per modelli a stati finiti Reachability analysis limiti e possibili soluzioni
E N D
Lezione 13. Verifica (I) • [S2001, Cap. 19] • [GMJ91, Cap. 6] • [R85, Cap. 6] • Articoli citati in queste diapositive, e appunti • Generalità; verification & validation • Algoritmi di analisi per modelli a stati finiti • Reachability analysis • limiti e possibili soluzioni • Algoritmi e complessità di problemi per reti di Petri • boudedness, reachability in P/T nets e Time PN’s • analisi degli invarianti [R85] W. Reisig, Petri Nets - An Introduction, EATCS Monographs on Theoretical Computer Science, Vol. 4, Springer-Verlag, 1985.
Verification and Validation (V&V) • [S2001] Verification and Validation (V&V) • ‘checking processes which ensure that software conforms to its specification (at each phase in the development) and meets the needs of the software customer’. • [Boehm’79] • Verification: "Are we building the product right”? • Validation: "Are we building the right product”?
Dynamic V&V and static verification • Dynamic V & V • Concerned with exercising and observing product behaviour (testing) • …and also executable formal specifications • Static verification • Concerned with analysis of the static system representation to discover problems
Verifica/validazione statica/dinamica Verifica Validazione * - Statica * * Dinamica
and verification [Sommerville]
Molteplicità di tecniche di verifica • Nelle diversefasi del ciclo di sviluppo, il sistema è rappresentato con diversi modelli e linguaggi: • Requirements def. and spec., software spec. • (specifiche informali in linguaggio naturale) • specifiche semi-formali: Entity-Relation, Data Flow... • specifiche formali: FSM’s, Petri nets, Basic LOTOS... • Design • specifiche formali: Ext. FSM’s, PrT nets, Full LOTOS, UML... • Implementation • Codice Fortran, C, C++, Java… • Ad ogni modello e linguaggio corrispondono spesso piu’ tecniche (statiche e dinamiche) di verifica
Modelli a stati finiti Reachability analysis (*) Model checking (*) Petri Nets algoritmi di verifica di proprietà decidibili: boundedness... Analisi di invarianti Algebre di processo (LOTOS) Verifica di equivalenze (e preordini), tramite algoritmi di partition refinement assiomatizzazioni e sistemi di riscrittura Specifiche in Petri Nets o Algebre di Processo possono essere riconducibili a FSM, ed ereditarne le tecniche di analisi Codice o pseudo-codice Esecuzione simbolica (*) Analisi statica Theorem proving (*), manuale o automatico Testing (*) in the small, in the large Altre rappresentazioni, come ER, DFD, UML, architetture a oggetti…, si prestano a tecniche di analisi ‘superficiale’ (sintattica). Molte tecniche (*) sono ‘trasversali’, cioè applicabili a piu’ modelli Panoramica di tecniche di verifica
Reachability analysis • Si applica a reti di (X)FSM’s, ma anche a qualunque modello il cui comportamento è riconducibile a un sistema finito di transizioni fra stati globali (ad esempio, per classi di Petri nets, sotto-insiemi di LOTOS…) • In una rete di n XFSM’s (X1, …, Xn) lo stato globale è una matrice n x n: ... X1 X2 Xn s1 q12 q1n X1 ... sj è lo stato di Xj, comprendente i valori delle sue variabili locali qhk e’ il contenuto della coda Xh-->Xk s2 q21 q2n X2 ... ... sn qn1 qn2 Xn
Si ha una transizione globale, fra due stati globali, quando qualche macchina Xi compie (atomicamente) una transizione locale. • Nello stato globale di arrivo sono in generale modificati: • si • qhi per un qualche h (input); qik per un qualche k (output) • Per rendere finito il grafo globale si considerano: • variabili locali e messaggi a valori finiti • code FIFO di capacita limitata • Il grafo globale finito(GG) viene costruito con l’algoritmo ovvio, chiamato globalstate exploration, reachability analisys, perturbation technique, … • Ai fini della analisi del GG è conveniente calcolarne le componenti fortemente connesse (strongly connected components - SCC).
Tipiche proprietà verificabili con reachability analysis • Unspecified reception • incapacità, da parte di una XFSM, di ricevere il messaggio disponibile in testa a una sua coda in input • Deadlock statico • un nodo di GG senza transizioni in uscita. In assenza di unspecified receptions, cio’ implica code vuote. • Cicli improduttivi (deadlock dinamico) • un ciclo di transizioni la cui esecuzione (se iterata indefinitamente) rappresenta mancanza di ‘progresso’ del sistema • SCC senza transizioni verso altre SCC • generalizzazione di ciclo improduttivo • Stati (globali o locali) desiderabili ma non raggiungibili a partire dallo stato iniziale
Alcune applicazioni significative di reachability analysis • Analisi di protocolli CCITT X.21, X.25, IBM/SNA (System Network Architecture) - Data Flow Control layer, IBM Token-ring protocols. • [IBM Zurigo, C. West, P. Zafiropulo, H. Rudin1978…] • Analisi di protocolli: • alternating-bit, • sliding window, • ISO-OSI architecture/layer ‘transport’, ‘session’, • su specifiche in Estelle, SDL -- • innumerevoli articoli in serie conferenze IFIP WG6.1 • PSTV - Protocol Specification, Testing, and Verification, dal 1981; e • FORTE - Formal description Techniques for distributed systems and communication protocols, dal 1988.
Limite di reachability analysis: esplosione combinatoria... • ...dovuta al prodotto degli spazi degli stati delle singole macchine, e degli spazi dei valori delle singole code • ...aggravata dall’ordinamento totale di eventi anche non correlati causalmente: • a; stop ||| b; stop ||| c; stop =========> • a; b; c; stop [] a; c; b; stop [] b; a; c; stop [] … [] c; b; a; stop • cioè 8 stati: 1 a b c 2 a c b c a b c b a 8
Rimedi alla esplosione combinatoria • Ulteriori restrizioni su stati e canali (debole) • Rappresentazione e manipolazione dello stato globale con strutture dati ed algoritmi efficienti (hash tables, bit-based state encoding…) • Trattazione diretta di ordinamenti parziali degli eventi • Rappresentazione simbolica di grandi insiemi di stati • tutti quelli che soddisfano una formula, p. es. una disuguaglianza • Uso di BDD’s (Binary DecisionDiagrams - Bryant 1986) • rappresentazione canonica di formule booleane basata su grafi, che consente una efficiente implementazione di op. booleane (/\, \/, ¬), verifica di soddisfacibilità, e di equivalenza fra formule. • Usati per verificare (model checking) modelli a 10120 stati!
Verifica di proprietà specifiche di Reti di Petri • Place/Transition Petri nets (P/T net) N=(S, T, A, W, M0), • S = Places, • T = Transitions, • A = Arcs (A PT TP) • W = Weight (W: A -> Nat\{0}) (quanti token alla volta) • M0 = marking iniziale (Marking: S -> Nat) • M [t > M’ • nel marking M la transizione t è abilitata, e la sua esecuzione porta al marking M’ • [M > • insieme dei marking raggiungibili dal marking M • GG(N) • Grafo globale, con nodi [M0 > e transizioni tipo M [t > M’
Verifica di boundedness • Boundedness: • K Nat: • M in [M0>, p in S: M(p) <K • ovviamente una P/T net N è bounded sseGG(N) è finito • Boundedness per P/T nets è una proprietà decidibile -- • cioè esiste un algoritmo che decide sempre, e in un numero finito di passi, se una generica rete P/T e’ bounded • … ma provare a costruire direttamente GG(N) non è una buona idea: quando fermarsi? • È necessario introdurre un nuovo tipo di grafo globale:……...
Coverability graph CG(N) • simile a GG(N), ma con marking ‘estesi’: • Marking (esteso): S -> Nat {} • etichetta un posto ‘divergente’, nel quale i token possono crescere illimitatamente • M <M’ (M’ copre M) se per ogni p in S, M’(p) > M(p), con > n per ogni n in Nat. • In CG(N) ogni nodo è un marking reale di N oppure un marking esteso che copre dei marking reali di N.
In GG(N): Marking M1=(4, 2, 3, 8) e M2=(6, 2, 3, 8), con M2 [M1>,implicano M3=(8, 2, 3, 8); M4=(10, 2, 3, 8), ….. ==> in CG(N): Marking M=(, 2, 3, 8) Il marking esteso M rappresenta in CG(N) una serie infinita e crescente di marking in GG(N)
Def. - Dati due marking estesi M1 e M2: • M1 # M2 se (M1 > M2) e ( M2 > M1) • (M1 ed M2 sono ‘inconfrontabili’) • Per la precedente costruzione, i marking del CG(N) sono inconfrontabili a due a due • Th.1 - Il coverability graph CG(N) di una P/T net N è sempre finito • Dimostrazione (cenno) • La dimostrazione, per induzione, si basa sul fatto che non possono esistere infiniti marking estesi che siano inconfrontabili a due a due.
Nel caso di due soli posti, si assuma per assurdo un insieme infinitoMM di marking a due a due inconfrontabili. • Sia M=(h, k) in MM un marking di riferimento, con h, k (deve esistere…) • L’insieme di tutti gli altri marking in MM, di tipo M’(x, y), è bipartito in: • MMh: i marking che hanno x<h • MMk: i marking che hanno y<k • e uno dei due sottoinsiemi deve essere infinito, poniamo MMh. • Ripartire MMh in classi MMh(0), MMh(1), … MMh(h-1), ciascuna con la prima componente x fissa: • ancora, uno degli h sottoinsiemi deve essere infinito, poniamo MMh(1) • ma ciò è impossibile, perche i suoi elementi sarebbero tutti confrontabili fra loro, essendo (1, y1), (1, y2), … []
Th.2 - Una P/T net N è bounded (e il suo GG(N) è finito) sse CG(N) non contiene alcun nodo con una componente • Dimostrazione • Immediata conseguenza della definizione di CG(N). []
Coverability - Simultaneously unbounded • Coverability • un generico marking M è copribile se esiste in GG(N) un marking M’ tale che M < M’ • Decidibile • Cercare in CG(N) un nodo M’’ tale che M < M’’… • Insieme di posti simultaneouslyunbounded • un generico insieme P’ S di posti è simultaneously unbounded se i Nat, un marking Miin GG(N) tale che p P’: Mi(p) > i • Decidibile • Cercare in CG(N) un nodo M’ tale che p P’: M’(p) =
Reachable transition • Sia t una generica transizione ed M un generico marking • t è M-dead se M’ [M>, t non è abilitata da M’ • Reachable transition • una generica transizione t è una reachable transition se non è M0-dead • Decidibile • Cercare in CG(N) un arco di tipo M--t-->M’ • Le proprietà viste fin qui sono desumibili dalla ispezione di CG(N); tuttavia la costruzione di questo grafo è poco pratica • si dimostra che la sua dimensione puo’ crescere, rispetto alla dimensione della rete, piu’ rapidamente di qualunque funzione primitiva ricorsiva. • Si dimostra anche che la complessità di alcuni di questi problemi è di fatto inferiore a quella della costruzione di CG(N), e cio’ apre la strada ad algoritmi di analisi piu’ efficienti.
Reachable marking (‘Reachability’) • Reachable marking • un generico marking M è reachable se M [M0> • Questo problema, aperto nel 1969 [KM69], non è banalmente risolvibile per ispezione di CG(N). • Decidibile • La soluzione, ottenuta dopo 13 anni (!), è dovuta a Kosaraju [K82], con correzione di H. J. Muller (82), precedenti tentativi e contributi di J. Van Leeuwen (‘74), G. S. Sacerdote e R. L. Tenney (‘77), J. Hopcroft e J. J. Pansiot (‘79), E. W. Mayr (‘81)... • [KM69] R. M. Karp, R. E. Miller, ‘Parallel Program Schemata’, Journal of Computer and System Sciences, 3 (1969), pp. 147, 195 (introduce Vector Addition Systems, un modello equivalente alle reti di Petri) • [K82] S. R. Kosaraju, ‘Decidability of Reachability in Vector Addition Systems’, Proceedings of Fourteenth Annual ACM Symposium on Theory of Computing, 1982, pp. 267-281.
Liveness • Live transition • una transizione t èM-live se • M’ [M>: t non è M’-dead (dunque un M’’ [M’>, tale che M’’ abilita t) • (M-live non è la negazione di M-dead !) • Live net • una P/T net N è live se ogni transizione è M0-live • Decidibile [Lipton ‘76]
Verifica di proprietà di Time Petri Nets • Time Petri Nets (Merlin’76) hanno maggior potenza espressiva delle P/T nets • infatti possono simulare le Turing Machines • Conseguentemente sono meno analizzabili. • Ad esempio, le proprietà: • reachability • boundedness • diventano indecidibili [JLL77] • [JLL77] N. D. Jones, L. H. Landweber, Y. E. Lien, Complexity of some problems in Petri Nets, Theoretical Computer Science 4, (1977), 277-299.
Analisi degli S-invarianti per Reti di Petri [R85, Cap. 6] • Place/Transition Petri nets (P/T net) N=(SN, TN, AN, WN, MN), • SN = Places, • TN = Transitions, • AN = Arcs (A PT TP) • WN = Weight (W: A -> Nat\{0}) (quanti token alla volta) • MN = marking iniziale (Marking: SN -> Nat) • Rappresentazione algebrica lineare di P/T nets • per ogni t TN definiamo il vettore t : SN --> Int: • t(s) = • W(t, s) sse s t* \ *t (*t = posti in output da t) • - W(s, t) sse s *t \ t* (t* = posti in input di t) • W(t, s) - W(s, t) sse s *t t* • 0 altrimenti • La matriceN: SN TN --> Int è definita come: N(s, t) = t(s) • dunque i vettori t sono le colonne di N. • N(s, t) descrive il cambio del marking di s quando t viene eseguita
Ogni marking è rappresentato da un vettore a |SN| elementi • Se la rete soddisfa alcune semplici proprietà (‘pura’, cioè senza coppie di archi a loop, e ‘contact-free’...) • … allora il comportamento della rete è completamente determinato dalla matrice N e il vettore MN • La firing rule diventa: • se t è M-abilitata, allora: • M [t> M’ sse M + t = M’
Sia S SN un insieme di posti la cui somma di token non varia con l’esecuzione della transizione t. Allora: • s *t S W(s, t) = s t* S W(t, s) • … che, in base alla definizione del vettore t diventa • s *t St(s) = - s t* St(s)cioè • s *t St(s) + s t* St(s) = 0 cioè • s (*t t*) St(s) = 0 cioè • s St(s) = 0 • rimpiazzando S con il suo vettore caratteristico cs (a |SN| componenti): • s SNt(s) * cs (s) = 0, cioèt * cs = 0 • … e se il numero di token in S non cambia per alcuna transizione, cio’ vale per tutte le transizioni, cioè • N’ * cs = 0 (N’è la matrice trasposta di N: N’(x, y) = N(y, x))
S-invariant • Un vettore inv:SN-->Int è un S-invariante di NsseN’*inv = 0 • Lemma. Sia inv un invariante, M ed M’ due marking, t una transizione M-abilitata, con M [t> M’. Allora: M*inv = M’*inv. • Dim. M’*inv= (M+ t )* inv[M [t> M’ sse M + t = M’ (slide 28)] • = M* inv+ t * inv[distributività] • = M* inv[N’*inv = 0 => t * inv = 0, essendo N = (t1, t2, …)] • Lemma • Siano i1 e i2 due S-invarianti di N, e z un intero. Allora: • i1 + i2 è un S-invariante • z*i1 è un S-invariante
Verifica di sistema ad accesso controllato • La conoscenza degli invarianti di una rete puo’ rivelare alcune interessanti proprietà del sistema modellato. Esempio: • N processi accedono un buffer in lettura o scrittura • Se nessun processo sta scrivendo, fino ak < nprocessi possono leggere; ma la scrittura è consentita solo se nessuno sta già leggendo o scrivendo s5 k k k s4 t5 t2 s2 s0 = processi inattivi s1 = processi pronti a leggere s2 = processi che leggono s3 = processi pronti a scrivere s4 = processi che scrivono s5 = sincronizzazione s0 t4 n t1 s1 s3 t3 t0
s5 k t0 t1 t2 t3 t4 t5 i1 i2MN k s0 s1 s2 s3 s4 s5 -1 1 -1 1 1 n k s4 t5 t2 s2 1 -1 1 1 -1 1 1 s0 1 -1 1 t4 n 1 -1 1 k t1 -1 1 -k k 1 k s1 s3 t3 t0 N invarianti 0 0 0 0 0 0 0 0 0 0 0 0 Si verifica che: N’ * i1 = N’ * i2 =
s0 = processi inattivi s1 = processi pronti a leggere s2 = processi che leggono s3 = processi pronti a scrivere s4 = processi che scrivono s5 = sincronizzazione s5 k k k s4 t5 t2 s2 s0 t4 n Invariante i2 (0,0,1,0,k,1) M [MN> M(s2) +k*M(s4) + M(s5) = MN(s2) +k* MN(s4) +MN(s5) = k Interpretazione - s4 contiene sempre al piu’ un token: c’è un solo scrivente alla volta. - Quando s4 ha un token, s2 e s5 sono vuoti: mentre uno scrive, nessuno legge. - s2 ha al piu’ k token: al piu’ k processi leggono concorrentemente t1 s1 s3 t3 t0 Invariante i1 (1,1,1,1,1,0) M [MN> M * i1 = i = 0,4M(si) = MN * i1 = i = 0,4MN(si) = n Interpretazione s0-s4 sono i posti dei processi; dunque i processi rimangono costanti, e ciascuno è sempre in uno degli ‘stati’ s0-s4
La conoscenza degli invarianti puo’ aiutare nella dimostrazione di varie altre proprietà, per esempio liveness [R85, pag. 83]