1 Class Analyses as Abstract Interpretations of Trace Semantics Tratto da un testo di: Fausto Spoto & Thomas Jensen Brigo Matteo 795685 Vitturi Mattia.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

Strutture dati per insiemi disgiunti
Punti Fissi.
TAV.1 Foto n.1 Foto n.2 SCALINATA DI ACCESSO ALL’EREMO DI SANTA CATERINA DEL SASSO DALLA CORTE DELLE CASCINE DEL QUIQUIO Foto n.3 Foto n.4.
Il linguaggio della Matematica: Insiemi e operazioni
Estendere i linguaggi: i tipi di dato astratti
Semantica di linguaggi di programmazione Ne esistono differenti stili a seconda di paradigma di programmazione uso (validazione, prototyping, verifica.
Type Checking (1° parte)
Generazione di Codice Intermedio
Algoritmi e Programmazione
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
1 Semantica Operazionale di un frammento di Java: lo stato.
Le gerarchie di tipi.
Informatica Generale Marzia Buscemi
Semantica Operazionale di un frammento di Java: lo stato
Frontespizio Economia Monetaria Anno Accademico
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Reaching Definitions. Tino CortesiTecniche di Analisi di Programmi 2 Reaching definitions Dato un punto del programma, quali sono i comandi di assegnamento.
Interpretazione Astratta
Analisi e Verifica di Programmi Laboratorio di AVP Corso di Laurea in Informatica AA Tino Cortesi.
Semantica Denotazionale
Semantiche dei linguaggi di programmazione
Ordini Parziali - Reticoli
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Informatica di base A.A. 2003/2004 Algoritmi e programmi
U V U V (a) |cfc|=2 prima e dopo (b) |cfc|=2 prima e |cfc|=1 dopo
Algoritmo di Ford-Fulkerson
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Capitolo 9 Il problema della gestione di insiemi disgiunti (Union-find) Algoritmi e Strutture Dati.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Ufficio Studi UNIONCAMERE TOSCANA 1 Presentazione di Riccardo Perugi Ufficio Studi UNIONCAMERE TOSCANA Firenze, 19 dicembre 2000.
eliana minicozzi linguaggi1a.a lezione2
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
Introduzione alla programmazione lll
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Heap binomiali Gli heap binomiali sono strutture dati su cui si possono eseguire efficientemente le operazioni: Make(H) : crea uno heap vuoto Insert(H,
Strutture di controllo in C -- Flow Chart --
Lezione 4 Probabilità.
Espressioni condizionali
2 3 4 RISERVATEZZA INTEGRITA DISPONIBILITA 5 6.
1 Programmazione = decomposizione basata su astrazioni (con riferimento a Java)
1 Negozi Nuove idee realizzate per. 2 Negozi 3 4.
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
TECNOLOGIE DELLINFORMAZIONE E DELLA COMUNICAZIONE PER LE AZIENDE Materiale di supporto alla didattica.
1 Guida per linsegnamento nei corsi per il conseguimento del CERTIFICATO DI IDONEITÀ ALLA GUIDA DEL CICLOMOTORE.
CODIFICA Da flow-chart a C++.
Bando Arti Sceniche. Per poter procedere è indispensabile aprire il testo del Bando 2ROL - Richieste On Line.
2000 Prentice Hall, Inc. All rights reserved. Capitolo 10 (Deitel) Strutture, unioni ed enumerazioni Sommario Introduzione Definire le strutture.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
1 Ly-LAB Sistema di gestione dei dati analitici di laboratorio.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
1Piero Scotto - C14. Finalità del corso Programma Materiale Requisiti Spendibilità 2Piero Scotto - C14.
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
1 Osservazioni Generali Struttura di programma Gerarchia di classi: overloading, overriding, e dispatching Analisi ed esecuzione Modificabilità e condivisione.
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
1 Interpretazione astratta: un approccio sistematico all’analisi statica.
Elementi di semantica denotazionale ed operazionale
1 Metodologie di Programmazione = decomposizione basata su astrazioni.
Esercizi.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Transcript della presentazione:

1 Class Analyses as Abstract Interpretations of Trace Semantics Tratto da un testo di: Fausto Spoto & Thomas Jensen Brigo Matteo Vitturi Mattia

2 Sommario Introduzione Un semplice linguaggio Stati concreti Trace semantics Watchpoint semantics Analisi e Valutazioni

3 Introduzione Studieremo una trace semantic per un semplice linguaggio imperativo orientato agli oggetti attraverso luso di watchpoints Per far ciò definiremo una gerarchia di semantiche Lo scopo è quello di verificare che la semantica che otterremo alla fine sarà focalizzata sui watchpoint Ogni astrazione del dominio computazionale arriva sempre ad una semantica ancora orientata ai watchpoint

4 Gerarchie di semantiche

5 Un semplice linguaggio Definiamo ora il linguaggio su cui effettueremo le operazioni di astrazione Si tratta di un linguaggio object-oriented basato su java In tale linguaggio ogni espressione ha un tipo

6 I Tipi Tale tipo può essere int (lunico tipo base) o una classe definita dallutente Un Type Environment assegna a un insieme finito di variabili il loro tipo Id: Insieme di identificatori contente out e this K: Insieme di classi ordinate da una relazione di sottoclasse tale che sia una relazione di ordine parziale completo Type: linsieme dei tipi dato da {int} unito a K Vars: Sottoinsieme di Id contenente ancora out e this

7 Espressioni [1] Le variabili locali sono introdotte da un costrutto let I punti del programma dove lanalisi statica deve essere incentrata devono essere definiti come watchpoint I booleani sono interi (true se >=0, false altrimenti)

8 Espressioni [2] La grammatica è definita come segue: Con: t Type, k K, i Z, f,m Id, v,v,v1,…,vn Vars vthis. Gli operatori + e = operano come operatori su interi Il costrutto let non introduce variabili già presenti in scope

9 Ulteriori definizioni [1] Una classe contiene: Variabili locali (fields) Funzioni (methods) Un metodo ha un insieme di variabili di input/output (parameters) in cui è incluso out, che contiene il risultato, e this, ovvero loggetto dove è stato chiamato il metodo Fields è un insieme di mappe che uniscono ogni classe con il Type Environment delle sue variabili locali (this non può essere un field)

10 Ulteriori definizioni [2] Methods è un insieme di mappe complete che associa i metodi di ciascuna classe con un insieme finito di identificatori di metodi Par è un insieme di mappe che unisce ogni metodo con il Type Environment dei sui parametri Code è un insieme di mappe che unisce ogni metodo con il suo codice sintatticamente corretto e type-checked

11 Assunzioni [1] Segue una lista di assunzioni fatte sul programma Prog da analizzare, specificato da una relazione dordine K*, un insieme M, una mappa F appartenente a Fields, una mappa M appartenente a Methods, una mappa P appartenente a Pars e una mappa C appartenente a Code.

12 Assunzioni [2] Siano k1,k2 appartenenti a K con k1 k2, si ha che: 1.dom(F(k1)) dom(F(k2)) e F(k1) | dom(F(k2))= (k2) (i field sono ereditati); 2.dom(M(k1)) dom(M(k2)) (methods sono ereditati o overridden); 3.Sia m appartenente a dom(M(k2)); allora pars=dom(P(M(k1)(m)))=dom(P(M(k2)(m))) (il nome e numero dei parametri in caso di overriding non varia);

13 Assunzioni [3] 4.Sia v appartenente a pars\{out, this}; allora P(M(k1)(m))(v) P(M(k2)(m))(v) (i parametri di input diversi da this sono una specializzazione upward) 5.Sia v appartenente a {out, this}; allora P(M(k2)(m))(v) P(M(k1)(m))(v) (out e this sono una specializzazione downward) 6.Sia k appartenente a K e m appartenente a dom(M(k)); allora P(M(k)(m))(this) k (la variabile this di un metodo ha un tipo che è superclasse del tipo della classe del metodo); 7.Sia v appartenente a M; allora il codice C(v) è type-checked e tutte le variabili che occorrono sono generate da un construtto let o sono tra i parametri P(v).

14 Esempio [1]

15 Esempio [2]

16 Stati concreti Per rappresentare valori concreti abbiamo bisogno di valori interi, nil e location ovvero la posizione in memoria dove si trova il dato Nei dati concreti vi sarà un environment dove sono definite le variabili e una memory dove sarà rappresentata la mappa che unisce variables a locations

17 Environment E costituito da coppie Type Value dove: Value rappresenta un valore intero, una location o nil Se Type è intero Value sarà intero, mentre varrà nil o una location nel caso in cui Type sia appartenente a K La correttezza di tipo ci assicura che: non ci siano puntatori pendenti le variabili siano collegate a locations che contengono oggetti permessi dal loro environment

18 Possibili stati I possibili stati in un certo punto del programma sono dati dalle coppie (variabile,valore associato) Memoria La variabile this non potrà avere valore nil Questo porterà ad una semplificazione sostanziale durante lo studio delle analisi Tale definizione è consistente con la specifica di Java

19 Operazioni sugli stati [1]

20 Operazioni sugli stati [2]

21 Semantica delle operazioni La put_field(σ1)(σ2) memorizza il valore res dello stato σ2 in v, che altro non è che la variabile fornito da σ1 nelloggetto o.

22 Trace semantic [1] Sia T un insieme di sequenze non vuote di computazioni, dove σ rappresenta ciascuna traccia. Una sequenza di tracce sarà: Convergente, qualora la sua denotazione possa essere completamente computata e la sua esecuzione termina Divergente, qualora un pezzo di codice esegua un loop infinito Parziale, qualora una parte di codice non possa completamente eseguita se contiene metodi non stabili σ 1 … σ n rappresenta una computazione convergente I watchpoint sono rappresentati dalle frecce identificate con una etichetta ( l )

23 Trace semantic [2] Sia t appartenente a T: fst(t) indica il primo stato di t con(t): indica che t è convergente Se con(t) allora lultimo stato di t è lst(t) I comandi e le espressioni sono identificati ad una mappa da uno stato iniziale a una traccia t. Per le espressioni se con(t) allora lst(t)(res) è il valore dellespressione.

24 Trace semantic [3] Lordinamento sulle tracce viene fatto dando una semantica a punti fissi alle istruzioni iterative (istruzione while) ed ai metodi ricorsivi. Listruzione while viene trattata seguendo il pattern standard definito per le semantiche denotazionali while-loops Lordinamento sulle tracce è un CPO

25 Operazioni sulle tracce [1] Firma delle operazioni sulle tracce

26 Operazioni sulle tracce [2]

27 Watchpoint semantics [1] Siamo dunque interessati unicamente alle transizioni etichettate Queste ultime possono essere individuate tramite la collezione di stati che sono preceduti da una transizione etichettata Possiamo definire unastrazione: w: T (Label P(Σ))

28 Perché una nuova semantica? Per definizione w(t) è più astratto di t e richiede meno spazio in memoria, ciò è dovuto a Una computazione a punti fissi più astratta richiede meno iterazioni Possiamo unire più watchpoint durante il calcolo dei punti fissi (come nel caso di while e do c, dove c ha un watchpoint) Le strutture dati sono più piccole Si elimina loperazione di widening necessaria nelle trace semantic per evitare tracce infinite

29 Watchpoint semantics [2] Vogliamo osservare gli stati solo nei watchpoint. Quindi: Vedremo una traccia come un insieme di stati, Un insieme di stati per ogni watchpoint. Le watchpoint bags sono linsieme di possibili Type Environment ottenibili da una etichetta l. Nota: vengono usate per raccogliere informazioni sui watchpoint.

30 Da traces a watchpoint traces Lastrazione da traces a watchpoint traces avviene grazie alla funzione Dove la funzione w(t) appartiene ad una watchpoint bag e α w è la funzione che trasforma la traccia in una watchpoint traces.

31 Watchpoint semantic statica Serve per ottenere informazioni sulle proprietà degli stati Si tratta di una AI di una semantica statica e possiamo ancora chiamarla statica Parte dellinformazione viene persa durante lastrazione, che unisce tutti i percorsi di esecuzione in una watchpoint trace statica

32 Esempio Linsieme delle tracce S è tale che, se lo stato finale è σ 1 non viene osservato nessun watchpoint e α st non contiene più questa informazione

33 Watchpoint semantic astratta La WS statica usa elementi del P(Σ), elementi del watchpoint bag e denotazioni statiche. La WS astratta riduce questi elementi alle operazioni sulle denotazioni statiche. La WS astratta è dunque una semplificazione della WS statica Sarà la WS usata dalle nostre Class Analyses

34 Analisi e Valutazioni Definiamo 3 class analyses: Rapid type analysis (rt) Dataflow analysis (df) Constraint analysis (ps) Per ognuna di queste viene definito un dominio astratto e le operazioni astratte ottimali che induce Quali sono gli obiettivi? Mostrare la relazione tra tempo e lo spazio necessari per numero di watchpoints analizzati Dimostrare lefficacia del framework proposto per il test di analisi

35 Rapid Type Analysis In termini di AI, questa tecnica equivale a definire unastrazione che raccoglie le classi degli oggetti nella memoria degli stati Raccoglie linsieme N di classi create dal comando new Le classi di una espressione e in un type environment sono N type (e) Deve contenere una classe compatibile con il tipo di this Nota: ha una bassa precisione, ma la sua importanza è data dalla sua applicabilità

36 Dataflow Analysis Ogni variabile è approssimata per eccesso dallinsieme delle classi degli oggetti limitati a tale variabile negli stati concreti I campi sono astratti nella loro approssimazione peggiore Un environment astratto mappa variabili a valori astratti consistenti con il loro tipo

37 Constraint analysis Ad ogni variabile di programma e campo è dato un insieme di classi Tali insiemi sono correlati tra di loro da delle restrizioni che modellano il dataflow del programma Il suo dominio è composto da un abstract environment, identico a quello dellanalisi df, e da una memoria astratta (ossia un abstract environment per i fields delle classi) Si suppone che i fields possano essere identificati unicamente dal loro nome Poiché la WS definita è flow sensitive, la stessa variabile può avere approssimazioni diverse in punti diversi del programma

38 Valutazioni Sperimentali E stato usato per eseguire i test un analizzatore chiamato LOOP (Localized for Object-Oriented Programs), che fornisce unimplementazione in PROLOG della WS presentata Per effettuare i benchmark sono stati usate come applicazioni di test 4 programmi: clone visit inv figures La macchina su cui sono stati effettuati i test è un Pentium III 660Mhz con 512MB di RAM

39 LOOP analyser: implementa la semantica a tracce semantic: implementa le sue operazioni combinators: le operazioni sono compilate come chiamate a metodo typenv: implementa il type environment aux: implementa funzioni ausiliarie

40 Esempi di Analisi: rt

41 Esempi di Analisi: df

42 Esempi di Analisi: ps

43 Risultati