23/11/06Dino Puller1 Analisi statica in tempo reale con domini numerici Facoltà di scienze MM.FF.NN. Università degli studi di Verona
23/11/06Dino Puller2 Obiettivi della tesi Creare un analizzatore statico che operi in tempo reale Migliorare la precisione del dominio astratto degli intervalli
23/11/06Dino Puller3 Ciclo di vita del software Con lanalisi statica abbiamo una nuova fase nel ciclo di vita del software Si iterano le seguenti fasi: –Sviluppo –Analisi statica Fino a non avere più allarmi
23/11/06Dino Puller4 Analisi statica Indispensabile per progetti mission- critical Riduce il numero di bug Riduce il tempo di verifica Svantaggi: –Nuova fase nel ciclo di vita del software –Lanalisi può essere lunga
23/11/06Dino Puller5 Idea: Analisi in tempo reale Ambiente di sviluppo con analisi statica integrata –Interpretazione astratta Ad ogni modifica del codice mostri le invarianti calcolate
23/11/06Dino Puller6 Problemi Impossibile per un intero progetto Linguaggi troppo complessi –Side effect –Strutture dati Chiamata a funzione –Ricorsione –Virtualmente un singolo algoritmo può essere troppo lungo
23/11/06Dino Puller7 Soluzioni Analisi di un singolo algoritmo –Raramente supera le cento righe Nuovo linguaggio Toy più semplice: –Intervalli interi –If, while, chimata a funzione –Nessuna struttura dati –Ricorsione vietata Cache di chiamate a funzione: –Chiave: Nome funzione + parametri –Risultato: invariante calcolata
23/11/06Dino Puller8 Metodi di analisi Dominio astratto degli intervalli Linearizzazione Linearizzazione + Dominio di costanti simboliche Nuove tecniche: Intervalli + Semplificazione algebrica + Dominio di costanti simboliche Semplificazione algebrica + Dominio di costanti simboliche + Linearizzazione
23/11/06Dino Puller9 Linearizzazione Riscrive espressioni lavorando sulla sintassi Può semplificare gli addendi Esempio: X [0, 1] Y [0, 10] Z [0, 20] T X × Y X × Z + Z T [0, 30]
23/11/06Dino Puller10 Dominio di costanti simboliche Ad ogni assegnamento propaga espressioni Esempio: X [0, 5] T X Y T 2 × X Diventa: Y X 2 × X Con la linearizzazione: Y X
23/11/06Dino Puller11 Svantaggi della linearizzazione La linearizzazione semplifica solo somme e sottrazioni Usa tecniche euristiche Sfrutta la forma affine che non è capace di gestire i prodotti
23/11/06Dino Puller12 Algebra simbolica Esempio: a [1, 5] b [5, 5] c [1, 5] d a + b a z a × b/a d Linearizzazione + dominio di costanti z [20, 20] Algebra simbolica z [0, 0] Rappresentazione di espressioni algebriche in forma letterale –Simile a quella usata in analisi matematica –Gestita da alberi simbolici –Fa uso del Dominio delle costanti simboliche
23/11/06Dino Puller13 Metodo misto In alcuni casi la linearizzazione è superiore perché valuta espressioni per cercare nuove semplificazioni Metto tutto assieme: 1.Semplifico con lalgebra simbolica 2.Uso la linearizzazione per ulteriori semplificazioni
23/11/06Dino Puller14 Lanalizzatore in azione Filmato del programma
23/11/06
Dino Puller16 Il resto della divisione a [0,10] b 3 c mod(a,b) Con ogni metodo di analisi: c [9, 10]
23/11/06Dino Puller17 Euclide a [0,10] b 3 c mcd(a,b) c [1,+] perché abbiamo un ciclo e mod cresce anziché diminuire Restrizione mod clamp (mod, 0, y 1) c [1,3] while y>0 do z x x y y mod (z,y) end
23/11/06Dino Puller18 Divisione per Zero Introduciamo un errore while y>=0 do z x x y y mod( z, y ) end MCD: mcd [ ] x [ ] y [ ] z [0, 10]
23/11/06Dino Puller19 Ciclo infinito X 0 while x < 100 do x x 1 end x [ ] –Operazione svolta ¬ Guardia = [100, + ] lfp(x) = [-,0] [100, + ] [-,0] =
23/11/06Dino Puller20 Un problema di fisica Calcolo dellaccelerazione del centro di massa g [9,10] m [1,10] r [1,5] s i n _ a l f a 1/2 Ia 3 × m × r × r / 2 Acm m × g × r × r × s i n _ a l f a / I a Intervalli/linearizzazione Ia [1, 375] Acm [0, 1667] Algebra simbolica Ia [1, 375] Acm [3, 7]
23/11/06Dino Puller21 Software di bordo Altimetro –Calcolato in base alla pressione interpolando valori da una tabella altitude [ ] Dopo modifica a interpolate semanticamente equivalente interpolate interp( x, x 0, x 1, y 0, y 1 ) altitude [0, 20669] Risultato corretto
23/11/06Dino Puller22 Risultati ottenuti Sviluppato un prototipo capace di –Analisi statica in tempo reale –Gestire intervalli di test –Cache per evitare analisi inutili –5 metodi di analisi –Allarmi Overflow Underflow Divisione per zero Non terminazione dei cicli
23/11/06Dino Puller23 Commenti sugli esempi Verificati 6 programmi –2 programmi senza allarmi –2 allarmi positivi –2 falsi allarmi eliminato grazie alla funzione di restrizione eliminato modificando interpolate mantenendola semanticamente equivalente Risultati indipendenti dal metodo di analisi –Eccetto nel problema di fisica
23/11/06Dino Puller24 Conclusioni Dimostrata la fattibilità di una analisi statica in tempo reale Dimostrata la correttezza di algoritmi –seppur con qualche modifica –usando il dominio astratto degli intervalli Individuato allarmi positivi Dimostrata l'utilità di riscrittura delle espressioni per migliorare domini astratti
23/11/06Dino Puller25 Lavori futuri Aggiungere nuovi domini astratti –Ottagoni –Poliedri Potenziare la semplificazione algebrica con nuove regole –Raccogliere a fattor comune Trasformazioni semantiche equivalenti non solo su espressioni