1 / 36
Outline
Outline
Introduzione: Gli identicatori e levoluzione del software Contesto: Il problema della decodica di un identicatore Un nuovo approccio probabilistico alla decodica Un nuovo approccio lineare alla decodica Valutazione sperimentale Conclusione e sviluppi futuri
2 / 36
` Durante lattivita di software maintenance la documentazione risulta spesso insufciente, obsoleta o semplicemente non disponibile. Il codice sorgente risulta essere quindi una delle fonti di informazione piu attendibili ed aggiornate. ` In particolare, risultano fondamentali per la comprensione del codice: identicatori (nomi di variabili, attributi, metodi, classi); commenti.
3 / 36
4 / 36
concept location:
Determinare tutte le classi che risultano legate ad un concetto.
Lefcacia di questi tool dipende fortemente dal riconoscimento delle parole che compongono un identicatore. Tale processo va sotto il nome di problema della decodica.
5 / 36
6 / 36
6 / 36
6 / 36
6 / 36
Sviluppo di una tecnica di decodica di un identicatore che possa essere integrata in strumenti di software analysis e maintenance;
7 / 36
La prima tecnica introdotta affronta il problema della decodica utilizzando un approccio di tipo probabilistico. Fuori-Linea: Questa tecnica Costruisce un modello Hidden MarkovModel(HMM) a partire da un dizionario di parole; Addestra il modello attraverso unaltra tecnica di decodica. In-Linea: Per ogni identicatore fornisce in output linsieme di parole ` del dizionario che con maggior probabilita lo hanno generato.
8 / 36
9 / 36
9 / 36
9 / 36
9 / 36
Limitazioni dellapproccio
Limitazioni dellapproccio
Lefcacia e lefcienza dellapproccio probabilistico proposto sono pregiudicate da: ` Una complessita asintotica di tempo e di spazio quadratica nel dizionario; Una costosa fase di Training. ` La valutazione sperimentale di questa tecnica si e limitata ad uno ` studio preliminare di fattibilita che ha confermato le problematiche indicate.
10 / 36
La seconda tecnica introdotta risolve la fase di splitting e quella di expansion attraverso la denizione di una procedura di Pattern Matching. Tale procedura permette di individuare la sequenza di parole che meglio approssima un identicatore secondo una data funzione di costo in un tempo lineare nella dimensione del dizionario utilizzato.
11 / 36
Dizionario utilizzato
Dizionario utilizzato
Questa tecnica utilizza un dizionario composto da quattro diversi dizionari ordinati in base al loro legame con lidenticatore: (DSrcFile ): Un elenco di termini estratti dai commenti dei le di origine in cui lidenticatore compare; (DSrcProj ): Un elenco di termini estratti dai commenti del progetto software in cui lidenticatore compare; (DIT ): Un dizionario contenente termini appartenenti allInformation Technology; (DENG ): Un dizionario inglese.
Alberto Savarese (matr. 50/505) Identicatori e comprensione del codice 12 / 36
Dizionario utilizzato
Dizionario utilizzato
13 / 36
Denizione di Matching
Denizione di Matching
` Un identicatore e caratterizzato da una stringa di caratteri: id = c1 . . . cN . Data una: parola w di un determinato dizionario; sottostringa dellidenticatore id(i,j) = ci . . . cj1 (i < j) Deniamo Matching M tra w ed id(i,j) , come: M (w, id(i,j) ) = op1 . . . opk ` Dove op1 . . . opk e una delle sequenze di operazioni considerate dalla (ED)Edit-Distance((w, id(i,j) )).
Alberto Savarese (matr. 50/505) Identicatori e comprensione del codice 14 / 36
Denizione di Matching
Denizione di Matching
Dato un Matching: M (w, id(i,j) ) = op1 . . . opk |M (w, id(i,j) | indica lerrore nellapprossimare id(i,j) con w. ` Questo costo e uguale ad ED(w, id(i,j) ). Ad es. M (state, st) = Deletea , Deletet , Deletee state approssima st con un errore pari a 3.
15 / 36
Denizione di Matching
Denizione di Matching
Diremo che un Matching M (w, id(i,j) ) si dice approssimato se: ` ED(w, id(i,j) ) e minore di una certa funzione di tolleranza (w). (w) ritorna per ogni parola w il numero massimo di errori consentiti nellapprossimazione. Lalgoritmo di inexact single pattern matching (BYP) Baeza-Yates & Perlberg (1992) permette di individuare tutti i matching approssimati. ` Se (w) = O(|w|/ log |w|) (BYP) presenta una complessita: O(|w| + |id|)
16 / 36
La procedura PatternMatching(id,D,(w),c) w1 . . . wk Un identicatore id; Un dizionario di parole D; Una funzione di tolleranza (w); Una funzione di costo c. Ritorna la sequenza di parole w1 . . . wk che minimizza c.
17 / 36
La procedura PatternMatching(id,D,(w),c) w1 . . . wk Un identicatore id; Un dizionario di parole D; Una funzione di tolleranza (w); Una funzione di costo c. Ritorna la sequenza di parole w1 . . . wk che minimizza c.
17 / 36
La procedura PatternMatching(id,D,(w),c) w1 . . . wk Un identicatore id; Un dizionario di parole D; Una funzione di tolleranza (w); Una funzione di costo c. Ritorna la sequenza di parole w1 . . . wk che minimizza c.
17 / 36
La procedura PatternMatching(id,D,(w),c) w1 . . . wk Un identicatore id; Un dizionario di parole D; Una funzione di tolleranza (w); Una funzione di costo c. Ritorna la sequenza di parole w1 . . . wk che minimizza c.
17 / 36
La procedura PatternMatching(id,D,(w),c) w1 . . . wk Un identicatore id; Un dizionario di parole D; Una funzione di tolleranza (w); Una funzione di costo c. Ritorna la sequenza di parole w1 . . . wk che minimizza c.
17 / 36
La procedura PatternMatching(id,D,(w),c) w1 . . . wk Un identicatore id; Un dizionario di parole D; Una funzione di tolleranza (w); Una funzione di costo c. Ritorna la sequenza di parole w1 . . . wk che minimizza c.
17 / 36
18 / 36
19 / 36
Inserisce un arco con peso massimo per ogni coppia di nodi consecutivi, etichettandolo con li-esimo carattere.
20 / 36
` Lintera procedura presenta una complessita lineare nel numero dei caratteri del dizionario, a patto che (w) = O(|w|/ log |w|) Le fasi di splitting ed expansion sono ottenute tramite questa procedura attraverso la selezione di unopportuna: che indica le approssimazioni accettabili; c che permette di favorire una sequenza di parole rispetto ad unaltra.
21 / 36
Piu frequenti allinterno del progetto; ` Appartenenti a contesti piu specici; ` Con il maggior numero di caratteri.
22 / 36
23 / 36
24 / 36
25 / 36
26 / 36
I Matching composti da operazioni che piu verosimilmente ` modellano la trasformazione: parola abbreviazione; Le parole piu frequenti allinterno di un contesto. `
27 / 36
Valutazione sperimentale
Valutazione sperimentale
Per lapproccio proposto sono stati deniti tre diversi casi di studio: Caso di studio 1 - Valutazione della fase di splitting:
Confronto con la fase di splitting dellapproccio DTW-based (Madani, 2010);
28 / 36
Protocollo sperimentale
Protocollo sperimentale
` La valutazione e stata effettuata comparando i risultati ottenuti dal nostro approccio con quelli del lavoro considerato nello specico caso di studio, attraverso un oracolo. Tuttavia, nellapproccio introdotto lutilizzo dei contesti permette di decodicare uno stesso identicatore in modo diverso a seconda del contesto in cui compare. ` Ad esempio lidenticatore prot puo essere decodicato:
1 2
29 / 36
Protocollo sperimentale
Protocollo sperimentale
` Per tale motivazione lefcacia dellapproccio e stata valutata attraverso una misura di accuratezza che: considera un identicatore correttamente decodicato, solo se tutte le sue occorrenze allinterno del progetto software sono correttamente decodicate rispetto alloracolo. Tale misura di accuratezza penalizza fortemente lapproccio introdotto.
30 / 36
Protocollo sperimentale
Dataset utilizzati
Dataset utilizzati
` La valutazione sperimentale dellapproccio proposto e stata condotta avvalendosi di due serie di sistemi software: System JHotDraw Lynx Azuerus iText.NET Liferay Portal OO Portable Tiger Envelopes Version 5.1 2.8.5 3.0 1.4.1 4.3.2 2.2.1 0.8.9 Files 155 247 2682 3380 3949 3442 2647 KLOCs 16 174 551 751 651 699 577 Language Java C Java Java Java Java Java
31 / 36
Protocollo sperimentale
DTW-based (Madani, 2010): lapproccio piu recente proposto in letteratura, che esegue in ` ` O(|M |3 ), dove M e la dimensione del dizionario; Camel Case (CC): lapproccio piu frequentemente utilizzato in strumenti di software ` ` maintenance, che esegue in O(|N |), dove N e la lunghezza dellidenticatore.
Language Java C
32 / 36
Protocollo sperimentale
DTW-based (Madani, 2010): lapproccio piu recente proposto in letteratura, che esegue in ` ` O(|M |3 ), dove M e la dimensione del dizionario; Camel Case (CC): lapproccio piu frequentemente utilizzato in strumenti di software ` ` maintenance, che esegue in O(|N |), dove N e la lunghezza dellidenticatore.
Language Java C
32 / 36
Protocollo sperimentale
` Su un oracolo di 250 abbreviazioni estratte da cinque sistemi Java si e valutata lefcacia della fase di expansion con lapproccio:
1
AMAP (Hill, 2008): lunico studio replicabile dedicato esclusivamente alla fase di expansion.
Abbreviations 250
33 / 36
Protocollo sperimentale
` Su un oracolo di 250 abbreviazioni estratte da cinque sistemi Java si e valutata lefcacia della fase di expansion con lapproccio:
1
AMAP (Hill, 2008): lunico studio replicabile dedicato esclusivamente alla fase di expansion.
Abbreviations 250
33 / 36
Protocollo sperimentale
` Su un oracolo di 4042 identicatori estratti dai sistemi JHotDraw e Lynx, si e valutata lefcacia dellintero processo di decodica con lapproccio:
1
DTW-based (Madani, 2010): lapproccio piu recente proposto in letteratura, che esegue in ` ` O(|M |3 ), dove M e la dimensione del dizionario.
34 / 36
Protocollo sperimentale
` Su un oracolo di 4042 identicatori estratti dai sistemi JHotDraw e Lynx, si e valutata lefcacia dellintero processo di decodica con lapproccio:
1
DTW-based (Madani, 2010): lapproccio piu recente proposto in letteratura, che esegue in ` ` O(|M |3 ), dove M e la dimensione del dizionario.
34 / 36
Unanalisi dettagliata mostra che lapproccio proposto: Migliora lefcacia dello stato dellarte, soprattutto in presenza di sistemi software datati; Migliora lefcienza dello stato dellarte. Lefcienza e lefcacia dellapproccio rendono particolarmente interessante la valutazione del suo impatto su strumenti di software maintenance.
35 / 36
Unanalisi dettagliata mostra che lapproccio proposto: Migliora lefcacia dello stato dellarte, soprattutto in presenza di sistemi software datati; Migliora lefcienza dello stato dellarte. Lefcienza e lefcacia dellapproccio rendono particolarmente interessante la valutazione del suo impatto su strumenti di software maintenance.
35 / 36
Fine
36 / 36