Marco LionelloMining Control Flow Graph for Crosscutting Concerns 1 UNIVERSITÀ CA FOSCARI DI VENEZIA Facoltà di Scienze Matematiche, Fisiche e Naturali.

Slides:



Advertisements
Presentazioni simili
I numeri interi relativi
Advertisements

Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 2 1 Progettazione e Sviluppo di Software ad Oggetti 4 OBJECT-ORIENTED ANALYSIS Processo.
Laboratorio di Linguaggi lezione I: "Hello, world!" Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Laboratorio di Linguaggi Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in Informatica.
1 t Mobilità internazionale e conversione dei voti Maria Sticchi Damiani Università della Calabria 8 febbraio 2013.
ECTS: la conversione dei voti Maria Sticchi Damiani Parte IV Conservatorio di Musica “N. Paganini” Genova, 2 maggio
Recupero debito quarto anno Primo incontro
Due esempi di valutazione per competenze nella matematica.
Metodologie di Programmazione = decomposizione basata su astrazioni
Lez. 121 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Progettazione.
Lez. 31 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Programmazione.
Lez. 91 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Alberi di ricerca.
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.
8. Progettazione del Software
Reaching Definitions. Tino CortesiTecniche di Analisi di Programmi 2 Reaching definitions Dato un punto del programma, quali sono i comandi di assegnamento.
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
Iterazione enumerativa (for)
R. Torlone, A. Calì, G. Lorenzo, G. Solazzo Profilo utente Milano – 17 Novembre 04.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
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)
eliana minicozzi linguaggi1a.a lezione2
Progettazione dei sistemi interattivi (A.A. 2004/05) - Lezione 3 1 La relazione di ereditarietà Punto di vista insiemistico: la relazione di ereditarietà
I Thread.
Algoritmi e Strutture Dati
La Riflessione computazione Elisa Ferrando. Cos è la Riflessione La Riflessione Sistema riflessivo Sistema computazionale.
Scheduling in GrADS Il progetto GrADS (Grid Application Development Software) ha lo scopo di semplificare lo sviluppo di unapplicazione Grid. Tra le funzionalità
Oggetti e dati primitivi Programmazione Corso di laurea in Informatica.
Unità Didattica 2 I Linguaggi di Programmazione
FONDAMENTI DI INFORMATICA III A2A2-1 CARATTERISTICHE E MODELLIZZAZIONE DEL LAVORO DUFFICIO Argomento 2 Approfondimento 2 CARATTERISTICHE E MODELLIZZAZIONE.
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Strutture di controllo in C -- Flow Chart --
Progettazione di una base di dati
Normalizzazione Le forme normali certificano che la base di dati soddisfa criteri di qualità che mirano ad evitare le ridondanze e i conseguenti effetti.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Daniel Stoilov Tesi di Laurea
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
1 Programmazione = decomposizione basata su astrazioni (con riferimento a Java)
Elementi di Informatica di base
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ò.
Lezione 1 Linguaggi di programmazione – Algoritmi –Istruzioni
Metodi di soluzione guasti nel volo in formazione di velivoli autonomi Candidato: Simone Di Nisio Relatori: Prof. M.Innocenti Prof. A. Balestrino.
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Un esempio: Calcolo della potenza n-esima di un numero reale
IMPLEMENTAZIONE TECNOLOGIE:HIBERNATE & JAVA RMI.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Astrazione procedurale ed eccezioni
Le regole per la stesura di un articolo di tipo scientifico
Il linguaggio Fortran 90: 3. Procedure e Funzioni
1 PerfectFit06 Sistema di personalizzazione dei contenuti per gli scavi archeologici di Ercolano Candidato: Vincenzo Scognamiglio Relatore: Prof. Ernesto.
Gruppo di lavoro Big data for security evaluation Analisi di tracce di esecuzione ed estrazione di modelli graph-based UNINA, UNICAL Feb
Programmazione ad oggetti
Lezione 1 Panoramica sui paradigmi di programmazione
Diagramma delle Classi
Analisi dei requisiti Il primo passo di “qualsiasi” processo di sviluppo è la definizione dei requisiti  Definizione del Business Model  Solitamente.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
1 Interpretazione astratta: un approccio sistematico all’analisi statica.
Ripasso su Java. Introduzione Per risolvere problemi complessi, i linguaggi di programmazione forniscono costrutti per realizzare nuove funzioni che trasformino.
Progettazione di una base di dati Ciclo di vita di un sistema informativo Studio di fattibilità definisce le varie alternative possibili, i relativi costi.
Sistemi basati su conoscenza (agenti intelligenti) Prof. M.T. PAZIENZA a.a
1 Metodologie di Programmazione = decomposizione basata su astrazioni.
Per un nuovo orientamento nella progettazione dei linguaggi di programmazione Tesi di Laurea di: RICCARDO SOLMI Università degli Studi di Bologna Facoltà.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
0 Laboratorio Informatica - SAS – Anno Accademico LIUC Alcune indicazioni Dettaglio lezioni: Prima : Michele Gnecchi – Introduzione a SAS Guide.
ALGORITMI, LINGUAGGI E PROGRAMMI Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
Introduzione alle Classi e agli Oggetti in Java 1.
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Docente: A.A Salvatore Cuomo La ricorsione 15 Approccio ricorsivo, esercizi sulla.
Transcript della presentazione:

Marco LionelloMining Control Flow Graph for Crosscutting Concerns 1 UNIVERSITÀ CA FOSCARI DI VENEZIA Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea Specialistica in Informatica Corso di Analisi e Verifica Programmi Approfondimento Mining Control Flow Graphs for Crosscutting Concerns Studente: Marco Lionello Anno Accademico

Marco LionelloMining Control Flow Graph for Crosscutting Concerns 2 Introduzione (1/3) La programmazione orientata agli aspetti è un paradigma di programmazione basato sulla creazione di entità software(aspetti) che soprintendono alle iterazioni fra oggetti finalizzate ad eseguire un compito comune. Il vantaggio rispetto alla tradizionale Programmazione orientata agli oggetti consiste nel non dover implementare separatamente in ciascun oggetto il codice necessario ad eseguire questo compito comune. Un programma aspect-oriented è costituito essenzialmente da due insiemi di costrutti: – gli aspetti – gli oggetti. –Gli aspetti sono delle entità esterne agli oggetti che osservano il flusso del programma generato dalle interazioni tra oggetti, modificandolo quando opportuno. Metafora dello spettacolo teatrale Logging

Marco LionelloMining Control Flow Graph for Crosscutting Concerns 3 Introduzione (2/3) Scattered Code: codice che esiste varie volte ma che non può essere incapsulato da moduli separati in quanto attraversa trasversalmente lintero sistema –Codice difficile da mantenere,capire, estendere Aspect Mining: trovare e isolare i tagli trasversali di interesse –I tagli possono essere reimplementati come aspetti aumentando mantenibilità estensibilità e diminuendo la complessità –Quali tagli trasversali rifare? Discorso molto lungo e articolato Solo i comportamenti di tagli trasversali super imposti devo essere rifatti (es. comportamenti che non sono core del sistema) Altri credono che tutto dovrebbe essere sotto forma di aspetti (non cè ancora abbastanza esperienza in questo campo) Aspect mining: ci permette anche di trovare e classificare differenti funzioni che occorrono in diversi software Aspect Mining: è veramente utile al fine della buona comprensione di un sistema

Marco LionelloMining Control Flow Graph for Crosscutting Concerns 4 Introduzione (3/3) Si è sviluppata in un primo momento una tecnica dinamica [2]: –Durante lesecuzione del programma vengono generate delle tracce di programma che rispecchiano il comportamento a tempo di esecuzione –Le tracce vengono investigate per trovare i pattern di esecuzione ricorrenti –Diversi vincoli dicono quando un pattern è ricorrente, questo include il requisito che il pattern deve esistere in diversi contesti di chiamata Problema principale: la tecnica dinamica tiene conto del comportamento specifico e non del comportamento potenziale. –Sviluppo di una tecnica di analisi statica [12] analizza il grafo di flusso per i pattern di esecuzione ricorrenti Due punti essenziali –I risultati dellanalisi statica e dinamica sono differenti ovvio! –I tagli trasversali di interesse sono molto spesso buoni, perché derivano da delegation o da stili di buona programmazione.

Marco LionelloMining Control Flow Graph for Crosscutting Concerns 5 Aspect mining basato sulle relazioni di esecuzione [2] è basate su tracce di programma che rispecchiano landamento del programma in una sua esecuzione. I pattern ricorrenti sono potenziali tagli di interesse che descrivono funzionalità ricorrenti e possono essere rifatti in aspetti Execution relation: descrive in che relazione sono due metodi nelle tracce di programma In alcune circostanze il programmi possono essere analizzati ma non eseguiti quindi si usa lanalisi statica dal control flow graph(CFG).

Marco LionelloMining Control Flow Graph for Crosscutting Concerns 6 Notazioni: CFG –Start node –Exit node Ogni procedura o metodo di un programma ha il suo CFG: CFG dellintero programma In linguaggi (es. java) con più uscite (exception) si assume che ci sia ununica uscita come join di tutte.

Marco LionelloMining Control Flow Graph for Crosscutting Concerns 7 Classificazione di Relazioni di esecuzione (1/2) I tagli di interesse sono riflessi in due tipi di Relazioni di esecuzione: –Outside execution relation (Esterna cioè la chiamata di un metodo precede o segue la chiamata di un altro metodo) –Inside execution relation (Interna se nel corpo di una cè la chiamata allaltra) Outside-before: con se cè un percorso da,dove è una chiamata a u, è una chiamata a v e non ci sono altre chiamate nel percorso (u eseguita prima di v). è linsieme delle relazioni di outside-before execution in G. La relazione può essere vista specchiata: quindi abbiamo una outside after execution (v eseguita dopo u). Linsieme delle relazioni outside after execution in G è:

Marco LionelloMining Control Flow Graph for Crosscutting Concerns 8 Classificazione di Relazioni di esecuzione (2/2) con è chiamata inside first execution relation se cè un percorso tale che è il nodo Start, è una chiamata a u e non ci sono altre chiamate nel percorso.(u è la prima esecuzione in v) è chiamata inside last execution relation se cè un percorso tale che è il nodo EXIT, è una chiamata a u e non ci sono altre chiamate nel percorso(u è lultima esecuzione in v). è linsieme delle relazioni inside first è linsieme delle relazioni inside last Caso speciale quando cè un percorso che non contiene chiamate le seguenti relazioni vengono automaticamente generate (catturano la possibilità che nessuna chiamata a metodo occorra durante lesecuzione di un metodo p) Epsilon relation –Uninside first execution genera in quanto non ci sono altre chiamate prima che u sia chiamata –Uninside last execution genera in quanto non ci sono altre chiamate dopo che u è chiamata

Marco LionelloMining Control Flow Graph for Crosscutting Concerns 9 Esempio Outside relation: Inside relation: Epsilon relation:

Marco LionelloMining Control Flow Graph for Crosscutting Concerns 10 Vincoli nelle relazioni di esecuzione Le relazioni di esecuzione possono essere definite grazie a questo vincolo: –Vincolo di uniformità: se con – è linsieme delle relazioni di esecuzione che soddisfano il vincolo Ulteriore vincolo: : –Una relazione di esecuzione è chiamata crosscutting se con (se s ha più contesti di chiamata nel grafo di flusso) –Per le inside-execution relation, il contesto di chiamata è il metodo che lo circonda v. –Per le outside-execution relation, il contesto di chiamata è il metodo che è invocato rispettivamente prima o dopo il metodo u. – è linsieme delle relazioni di esecuzione che vengono chiamate aspect-candidate e rappresentano i potenziali crosscutting concerns (tagli di interesse).

Marco LionelloMining Control Flow Graph for Crosscutting Concerns 11 Esempio Execution relation : Aspect Candidate (o relazioni uniformi):

Marco LionelloMining Control Flow Graph for Crosscutting Concerns 12 Static Aspect Mining (1/3) Lalgoritmo è una reaching definition data flow analysis linsieme di nodi che sono chiamate a metodi e c(n) il metodo chiamato del nodo n Una chiamata a un metodo p al nodo n (p=c(n)) raggiunge un nodo m se un percorso P= in G esiste e tale che: Per rispettare le epsilon-relation i nodi START e EXIT sono assunti come nodi chiamata con RC(n) è definita come insieme di chiamate che raggiungono il nodo n. La transfer function dellinsieme di chiamate x che raggiungono il nodo n è: –Questa equazione dice che le chiamate che raggiungono lentry del nodo n che non sono uccise da n, raggiungono luscita di n insieme alle chiamate generate da n

Marco LionelloMining Control Flow Graph for Crosscutting Concerns 13 Static Aspect Mining (2/3) Una chiamata raggiunge un nodo n, se esiste un percorso dal nodo START a n Al nodo START solo epsilon è disponibile Se ci sono più percorsi viene fatta ununione di tutti i percorsi istanza del problema MOP (Meet Over all Paths) In presenza di loop (MOP non ha soluzioni) quindi viene calcolato solo il minimo punto fisso(MFP): Proprietà della transfer function garantiscono che MFP = MOP

Marco LionelloMining Control Flow Graph for Crosscutting Concerns 14 Static Aspect Mining (3/3) Dallinsieme delle reaching calls quattro relazioni di esecuzione possono essere definite Qualsiasi chiamata che raggiunge unaltra chiamata genera un outside-before execution e outside-after-execution tra le due chiamate(epsilon relation automaticamente generate). Se una chiamata epsilon raggiunge unaltra chiamata allora esiste un percorso dal nodo START alla chiamata senza altre chiamate intermedie: si genera una inside-first-execution(la relazione epsilon viene generata se la chiamata ad epsilon raggiunge il nodo EXIT ). Qualsiasi chiamata che raggiunge il nodo EXIT genera una inside-last-execution (epsilon relation viene generata se la chiamata ad epsilon raggiunge il nodo EXIT )

Marco LionelloMining Control Flow Graph for Crosscutting Concerns 15 Esperienze Implementazione del metodo statico al top di Soop [22] Come caso di studi si è preso JHotDraw – linee di codice –2.900 metodi Analisi delle relazioni inside-first e delle outside-before Prima colonna: dimensione dei crosscutting candidates misurata dal numero dei crosscutting method (numero di differenti metodi v per un unico metodo u) Seconda colonna: numero di candidati Ci sono molti candidati con un basso numero di crosscutting(127 candidati che hanno al massimo 2 metodi) Già si intuisce che: –molti metodi sono frutto di delegation e che non sono rifacibili in aspect –si necessita di un filtro

Marco LionelloMining Control Flow Graph for Crosscutting Concerns 16 JHotDraw

Marco LionelloMining Control Flow Graph for Crosscutting Concerns 17 In dettaglio Inside first: –Il primo candidato ha 49 crosscutting il metodo invocato è …CollectionsFactory.Current Metodo per accedere alloggetto corrente È un crosscutting, ma non reimplementabile in aspetti. Utility method (classificazione di Marin) –Secondo metodo …DrawingView.view analogo al primo Classificato da MArin come Acessor Method –Terzo e quarto Candidato Metodi Decorator.Figure.getDecoratedFigure e AbstractHandle.owner Classificazione di Marin Observer Crosscutting Classificazione ideale Acessor Method –Quinto Candidato Metodo UndoadableAdapter.undo con 22 crosscutting Controlla quando loggetto rappresenta una azione anullabile Marin classificato come crosscutting concerns Refactoring molto complicato: classificazione idelae non reimplementabile in aspetti (con poca enfasi) –Sesto Candidato AbstractFigure.WillChange con 20 crosscutting Informa una figura che una operazione ha cambiato il suo contenuto visivo Questo è il primo candidato che è reimplementabile in aspetti. Outside before: –La situazione è totalmente analoga –Solo il sesto candidato è reimplementabile in aspetti.

Marco LionelloMining Control Flow Graph for Crosscutting Concerns 18 Filtraggio Solo i metodi che ritornano valore sono direttamente legati al chiamante e quindi sono delegazioni –Quindi i non-void-method (metodi con valore di ritorno) sono delegazione e quindi non reimplementabili Alcuni dei metodi filtrati si possono rifare ad esempio: –Abstract.figure.willChange (già discusso) –Rettangle.add Nei 10 siti di chiamata un nuovo rettangolo viene creato dai due punti passati come argomento al metodo corrente Possibile Crosscut da rifare in aspetti Altri metodi non possono comunque essere rifatti: –ObjectInputStream.defaultReadObject Nonostante si possa rifare è parte di una libreria e quindi non conveniente –AttributeFigure.write,AttributeFigure.read Le immagini possono essere composte e quindi la lettura e la scrittura sono delegazioni della composizione

Marco LionelloMining Control Flow Graph for Crosscutting Concerns 19 Relzioni Inside-First-Execution estratte

Marco LionelloMining Control Flow Graph for Crosscutting Concerns 20 Related Work [14] Marin è lapproccio più simile a questo. In sostanza conta per ogni metodo il numero di luoghi di chiamata nel codice sorgente che chiamano il metodo. [9,10] Usano unique method simile al non void method. Un unique method è un metodo senza valori di ritorno che implementa qualcosa che non è implementato da altri metodi. [21] Usano la concept analysis. Estrazione di elementi e attributi da classi o da metodi al fine di raggruppare questi elementi in concept che possono essere visti come candidati. [6] Ceccato ha fatto una comparazione dei vari approcci. [16] è una combinazione di varie tecniche di aspect mining con il risultato di ottenere maggior precisione. [1] presenta un sistema semi-automatico per la reimplementazione dei tagli trasversali nei programmi object-oriented in aspect/oriented.

Marco LionelloMining Control Flow Graph for Crosscutting Concerns 21 Conclusioni Si è visto che molti dei candidati sia filtrati che non filtrati non sono reimplementabili in aspect Ad ogni modo gli approcci(statico, dinamico) danno molte informazioni riguardo il comportamento dei crosscut –Potrebbero essere utilizzati per trovare le anomalie Un numero basso di candidati in un singolo test non può essere generalizzato –Lipotesi è che il risultato non cambi –In linea con i risultati di Marin –Aspect mining fa fatica a identificare i candidati che possono realmente essere rifatti La reimplementazione di JHotDraw in un sistema che fa buon uso di aspect mostra che il rifacimento è un lavoro molto complesso In contrasto con molti autori: –La maggior parte dei tagli scoperti con qualsiasi tecnica di aspect mining rileva Delegation che non è reimplementabile –Delegation è considerata come semplice forma di taglio ma solo quella superimposed che è debolmente legata al resto del codice può essere rifatta.

Marco LionelloMining Control Flow Graph for Crosscutting Concerns 22 Bibliografia