23/11/06Dino Puller1 Analisi statica in tempo reale con domini numerici Facoltà di scienze MM.FF.NN. Università degli studi di Verona.

Slides:



Advertisements
Presentazioni simili
Cosa sono? Come si risolvono?
Advertisements

1 I numeri relativi DEFINIZIONE. Si dicono numeri relativi tutti i numeri interi, razionali e irrazionali dotati di segno (positivo o negativo). ESEMPI.
Strutture dati per insiemi disgiunti
Ricorrenze Il metodo di sostituzione Il metodo iterativo
IL NUMERO …qualche idea…..
Ricorsione Procedure e funzioni ricorsive. Definizioni Un oggetto si dice ricorsivo se è definito totalmente o parzialmente in termini di sé stesso La.
Procedure e funzioni ricorsive
Linguaggi di programmazione
Semantica di linguaggi di programmazione Ne esistono differenti stili a seconda di paradigma di programmazione uso (validazione, prototyping, verifica.
Algoritmi e Programmazione
Metodologie di Programmazione = decomposizione basata su astrazioni
Generalità Linguaggio e Macchina Astratta
I Dati . i tipi di dati possono essere classificati in:
Lez. 41 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Programmazione.
= 2x – 3 x Definizione e caratteristiche
esponente del radicando
Introduzione agli algoritmi. Definizione Sistema di regole e procedure di calcolo ben definite che portano alla soluzione di un problema con un numero.
Interpretazione Astratta
Iterazione enumerativa (for)
Intelligenza Artificiale 1 Gestione della conoscenza lezione 8
Sistemi basati su conoscenza Conoscenza e ragionamento Prof. M.T. PAZIENZA a.a
Elementi di Matematica
1 Le competenze di base dell'asse matematico Utilizzare le tecniche e le procedure del calcolo aritmetico ed algebrico, rappresentandole anche sotto forma.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
LE EQUAZIONI.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Esercizi vari Esercizi.
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Introduzione alla programmazione lll
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente) ITERAZIONE: ripetere piu volte una sequenza di operazioni istruzioni: for, while, do.
DAL PROBLEMA ALL'ALGORITMO Problemi e Programmi Paolo Amico
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente)
-calcolo Vogliamo studiare le problematiche relative al meccanismo di chiamata di funzione (eg differenze fra binding statico e dinamico) in isolamento.
Semantica Operazionale Strutturata
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
Istruzioni Iterative Nicola Fanizzi
Dichiarazioni e tipi predefiniti nel linguaggio C
Fondamenti di Informatica Algoritmi
Laboratorio di Metodi Numerici a.a. 2008/2009 Prof. Maria Lucia Sampoli.
Esercizio 10.* Un cassiere vuole dare un resto di n centesimi di euro usando il minimo numero di monete. a) Descrivere un algoritmo goloso per fare ciò.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
1 Nuovo Obbligo Scolastico: Gli Assi Culturali. 2 Asse dei Linguaggi Asse Matematico Asse Scientifico-Tecnologico Asse Storico Sociale.
Equazioni di primo grado
x 3 / = : Numero razionale Classe di equivalenza
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 1 Cicli ed asserzioni Corso di Informatica 2 a.a. 2003/04 Lezione 1.
Ripetizione La vera potenza dei programmi per computer risiede nella capacità di ripetere lo stesso calcolo o sequenza di istruzioni più volte, ogni volta.
Process synchronization
Rappresentazione degli algoritmi
La ricorsione.
Calcolo letterale.
EQUAZIONI di primo grado numeriche intere con una incognita.
Allievi Elettrici - AA Le funzioni ricorsive in C
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
1 Interpretazione astratta: un approccio sistematico all’analisi statica.
Nucleo di Java: Struttura e Semantica Espressioni Assegnamento Controllo di sequenza Dichiarazioni.
Query languages per Basi di Dati Relazionali  Algebra Relazionale:  basato sulla teoria degli insiemi  procedurale  usato per l’implementazione di.
AOT Lab Dipartimento di Ingegneria dell’Informazione Università degli Studi di Parma Intelligenza Artificiale Rappresentazione della Conoscenza e Ragionamento.
Ingegneria del software Modulo 1 -Introduzione al processo software Unità didattica 3 -Modelli di fase d’analisi Ernesto Damiani Università degli Studi.
1 Metodologie di Programmazione = decomposizione basata su astrazioni.
Rappresentazione dell'informazione
Elementi di statistica Le cifre significative
La codifica dei numeri.
Conversione binario-ottale/esadecimale
Informatica Lezione 3 Psicologia dello sviluppo e dell'educazione (laurea magistrale) Anno accademico:
I RADICALI.
Analisi matematica Introduzione ai limiti
Definizioni Rappresentazione Operazioni Espressioni Esercizi
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Operazioni con le frazioni
IL NUMERO …qualche idea…..
Transcript della presentazione:

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