Anda di halaman 1dari 51

E STRAZIONE DI INFORMAZIONE LESSICALE DAGLI

IDENTIFICATORI DEL CODICE SORGENTE


Laureando: Alberto Savarese matr. 50/505 Relatori: Prof.ssa Anna Corazza, Prof. Sergio Di Martino Correlatore: Prof. Alberto Aloisio
` Facolta di Scienze MM.FF.NN. Corso di Laurea in Informatica

Anno accademico 2010/2011

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

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

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

2 / 36

Introduzione: Gli identicatori e levoluzione del software

Identicatori e comprensione del codice

` 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.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

3 / 36

Introduzione: Gli identicatori e levoluzione del software

Identicatori e comprensione del codice


Gli sviluppatori comunicano il loro intento e la loro conoscenza del dominio attraverso il nome di un identicatore. In genere gli identicatori sono creati concatenando parole ed abbreviazioni del dominio di applicazione. ` Nella loro creazione ci si puo riferire ad un insieme di regole dette di naming convention: Camel Case (drawRect); Alternating Case (convertASCIItoUTF); Division Markers (two words).

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

4 / 36

Introduzione: Gli identicatori e levoluzione del software

Identicatori e comprensione del codice


Molti strumenti sfruttano i concetti sottintesi da un identicatore per supportare task di manutenzione. Ad esempio: software clustering:
` Raggruppare tutte le classi che svolgono una certa funzionalita;

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.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

5 / 36

Contesto: Il problema della decodica di un identicatore

Il problema della decodica di un identicatore


` Il processo di decodica di un identicatore e caratterizzato da due fasi: Identier splitting; Abbreviation expansion. id = getptr get ptr get pointer ` Basare il processo di decodica solo su naming convention e insufciente in quanto: ` Non si puo assumere a priori il suo utilizzo; Non si analizzano le abbreviazioni.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

6 / 36

Contesto: Il problema della decodica di un identicatore

Il problema della decodica di un identicatore


` Il processo di decodica di un identicatore e caratterizzato da due fasi: Identier splitting; Abbreviation expansion. id = getptr get ptr get pointer ` Basare il processo di decodica solo su naming convention e insufciente in quanto: ` Non si puo assumere a priori il suo utilizzo; Non si analizzano le abbreviazioni.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

6 / 36

Contesto: Il problema della decodica di un identicatore

Il problema della decodica di un identicatore


` Il processo di decodica di un identicatore e caratterizzato da due fasi: Identier splitting; Abbreviation expansion. id = getptr get ptr get pointer ` Basare il processo di decodica solo su naming convention e insufciente in quanto: ` Non si puo assumere a priori il suo utilizzo; Non si analizzano le abbreviazioni.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

6 / 36

Contesto: Il problema della decodica di un identicatore

Il problema della decodica di un identicatore


` Il processo di decodica di un identicatore e caratterizzato da due fasi: Identier splitting; Abbreviation expansion. id = getptr get ptr get pointer ` Basare il processo di decodica solo su naming convention e insufciente in quanto: ` Non si puo assumere a priori il suo utilizzo; Non si analizzano le abbreviazioni.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

6 / 36

Contesto: Il problema della decodica di un identicatore

Obiettivi della tesi

Obiettivi della tesi

Sviluppo di una tecnica di decodica di un identicatore che possa essere integrata in strumenti di software analysis e maintenance;

Valutazione e confronto dei risultati con altri approcci esistenti.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

7 / 36

Un nuovo approccio probabilistico alla decodica

Primo approccio proposto: Probabilistico

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.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

8 / 36

Un nuovo approccio probabilistico alla decodica

Descrizione del funzionamento

Descrizione del funzionamento


Questo approccio risulta composto da tre moduli eseguiti in cascata: Basic Split: Partiziona in presenza di marcatori di divisione; Mixed Case: Partiziona determinando la naming convention con ` maggior probabilita di generazione; Same Case: Individua linsieme di parole che con maggiore ` probabilita generano le varie stringhe.

get GPSst get GPSst get GPS st get GPS state

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

9 / 36

Un nuovo approccio probabilistico alla decodica

Descrizione del funzionamento

Descrizione del funzionamento


Questo approccio risulta composto da tre moduli eseguiti in cascata: Basic Split: Partiziona in presenza di marcatori di divisione; Mixed Case: Partiziona determinando la naming convention con ` maggior probabilita di generazione; Same Case: Individua linsieme di parole che con maggiore ` probabilita generano le varie stringhe.

get GPSst get GPSst get GPS st get GPS state

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

9 / 36

Un nuovo approccio probabilistico alla decodica

Descrizione del funzionamento

Descrizione del funzionamento


Questo approccio risulta composto da tre moduli eseguiti in cascata: Basic Split: Partiziona in presenza di marcatori di divisione; Mixed Case: Partiziona determinando la naming convention con ` maggior probabilita di generazione; Same Case: Individua linsieme di parole che con maggiore ` probabilita generano le varie stringhe.

get GPSst get GPSst get GPS st get GPS state

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

9 / 36

Un nuovo approccio probabilistico alla decodica

Descrizione del funzionamento

Descrizione del funzionamento


Questo approccio risulta composto da tre moduli eseguiti in cascata: Basic Split: Partiziona in presenza di marcatori di divisione; Mixed Case: Partiziona determinando la naming convention con ` maggior probabilita di generazione; Same Case: Individua linsieme di parole che con maggiore ` probabilita generano le varie stringhe.

get GPSst get GPSst get GPS st get GPS state

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

9 / 36

Un nuovo approccio probabilistico alla decodica

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.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

10 / 36

Un nuovo approccio lineare alla decodica

Un nuovo approccio lineare al problema della decodica

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.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

11 / 36

Un nuovo approccio lineare alla decodica

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

Un nuovo approccio lineare alla decodica

Dizionario utilizzato

Dizionario utilizzato

In aggiunta utilizza: Un dizionario di abbreviazioni (DAbbr ):


parte statica: abbreviazioni ricavate da glossari presenti in Internet; parte dinamica: abbreviazioni estratte dal codice sorgente.

Una mappa di (abbreviazioni espansioni) predenite.


ricavata da glossari presenti in Internet.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

13 / 36

Un nuovo approccio lineare alla decodica

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

Un nuovo approccio lineare alla decodica

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.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

15 / 36

Un nuovo approccio lineare alla decodica

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|)

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

16 / 36

Un nuovo approccio lineare alla decodica

Procedura di Pattern Matching

Procedura di Pattern Matching

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.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

17 / 36

Un nuovo approccio lineare alla decodica

Procedura di Pattern Matching

Procedura di Pattern Matching

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.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

17 / 36

Un nuovo approccio lineare alla decodica

Procedura di Pattern Matching

Procedura di Pattern Matching

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.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

17 / 36

Un nuovo approccio lineare alla decodica

Procedura di Pattern Matching

Procedura di Pattern Matching

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.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

17 / 36

Un nuovo approccio lineare alla decodica

Procedura di Pattern Matching

Procedura di Pattern Matching

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.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

17 / 36

Un nuovo approccio lineare alla decodica

Procedura di Pattern Matching

Procedura di Pattern Matching

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.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

17 / 36

Un nuovo approccio lineare alla decodica

Procedura di Pattern Matching

Procedura di Pattern Matching


La procedura di Pattern Matching costruisce un Matching graph: associando un grafo orientato allidenticatore con un numero di nodi pari ad |id| + 1; Ad es. dato lidenticatore getptr:

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

18 / 36

Un nuovo approccio lineare alla decodica

Procedura di Pattern Matching

Procedura di Pattern Matching

Per ogni parola w D:


Individua tutti i Matching approssimati M (w, id(i,j) ) rispetto a con lalgoritmo BYP; Inserisce un arco (i, j) per ogni M (w, id(i,j) ) con un peso c(w, M ).

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

19 / 36

Un nuovo approccio lineare alla decodica

Procedura di Pattern Matching

Procedura di Pattern Matching

Inserisce un arco con peso massimo per ogni coppia di nodi consecutivi, etichettandolo con li-esimo carattere.

Determina la sequenza a costo minimo attraverso lalgoritmo di Dijkstra.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

20 / 36

Un nuovo approccio lineare alla decodica

Procedura di Pattern Matching

Procedura di Pattern Matching

` 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.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

21 / 36

Un nuovo approccio lineare alla decodica

Fase di identier splitting

Fase di identier splitting


` Il processo di splitting e denito in due diversi passi: Partizionamento in presenza di marcatori di divisione; Esecuzione di PatternMatching(id,D,(w),c) w1 . . . wk
D = DSrcFile DSrcProj DIT DENG DAbbr ; (w) = 0; c favorisce nellordine le parole:
1 2 3

Piu frequenti allinterno del progetto; ` Appartenenti a contesti piu specici; ` Con il maggior numero di caratteri.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

22 / 36

Un nuovo approccio lineare alla decodica

Fase di abbreviation expansion

Fase di abbreviation expansion


` Il processo di expansion e denito in due diversi passi: Espansione basata su liste di abbreviazioni predenite; Espansione basata su contesti.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

23 / 36

Un nuovo approccio lineare alla decodica

Fase di abbreviation expansion

Fase di abbreviation expansion


` Il processo di expansion e denito in due diversi passi: Espansione basata su liste di abbreviazioni predenite; Espansione basata su contesti.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

24 / 36

Un nuovo approccio lineare alla decodica

Fase di abbreviation expansion

Fase di abbreviation expansion


` Il processo di expansion e denito in due diversi passi: Espansione basata su liste di abbreviazioni predenite; Espansione basata su contesti.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

25 / 36

Un nuovo approccio lineare alla decodica

Fase di abbreviation expansion

Fase di abbreviation expansion


` Il processo di expansion e denito in due diversi passi: Espansione basata su liste di abbreviazioni predenite; Espansione basata su contesti.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

26 / 36

Un nuovo approccio lineare alla decodica

Fase di abbreviation expansion

Fase di abbreviation expansion

` Il processo di espansione basata su contesti e denito attraverso: Esecuzione di PatternMatching(id,D,(w),c) w1 . . . wk


` D e il dizionario relativo al contesto in questione; (w) = O(|w|/ log |w|) per rendere lesecuzione lineare; c favorisce nellordine:
1

I Matching composti da operazioni che piu verosimilmente ` modellano la trasformazione: parola abbreviazione; Le parole piu frequenti allinterno di un contesto. `

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

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);

Caso di studio 2 - Valutazione della fase di expansion:


Confronto con lapproccio AMAP (Hill, 2008);

Caso di studio 3 - Valutazione dellintero processo di decodica:


Confronto con lintero processo di decodica dellapproccio DTW-based (Madani, 2010).

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

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

In un le come protected; In un altro le come protocol.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

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.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

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

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

31 / 36

Protocollo sperimentale

Valutazione risultati caso di studio 1

Valutazione dei risultati del Caso di studio 1


` Su un oracolo di 4042 identicatori estratti dai sistemi JHotDraw e Lynx, si e valutata lefcacia della fase di splitting con:
1

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.

System JHotDraw Lynx

Language Java C

Identiers 957 3085

CC 874 (91.3%) 561 (18.2%)

DTW 891 (93.1%) 2169 (70.3%)

MY APPROACH 939 (98.1%) 2479 (80.3%)

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

32 / 36

Protocollo sperimentale

Valutazione risultati caso di studio 1

Valutazione dei risultati del Caso di studio 1


` Su un oracolo di 4042 identicatori estratti dai sistemi JHotDraw e Lynx, si e valutata lefcacia della fase di splitting con:
1

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.

System JHotDraw Lynx

Language Java C

Identiers 957 3085

CC 874 (91.3%) 561 (18.2%)

DTW 891 (93.1%) 2169 (70.3%)

MY APPROACH 939 (98.1%) 2479 (80.3%)

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

32 / 36

Protocollo sperimentale

Valutazione risultati caso di studio 2

Valutazione dei risultati del Caso di studio 2

` 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

AMAP 147 (58.8%)

MY APPROACH 154 (61.6%)

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

33 / 36

Protocollo sperimentale

Valutazione risultati caso di studio 2

Valutazione dei risultati del Caso di studio 2

` 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

AMAP 147 (58.8%)

MY APPROACH 154 (61.6%)

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

33 / 36

Protocollo sperimentale

Valutazione risultati caso di studio 3

Valutazione dei risultati del Caso di studio 3

` 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.

System JHotDraw Lynx

Identiers 957 3085

DTW 920 (96.1%) Errors: 37 2868 (92.9%) Errors: 217

MY APPROACH 949 (99.1%) Errors: 8 2918 (94.5%) Errors: 167

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

34 / 36

Protocollo sperimentale

Valutazione risultati caso di studio 3

Valutazione dei risultati del Caso di studio 3

` 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.

System JHotDraw Lynx

Identiers 957 3085

DTW 920 (96.1%) Errors: 37 2868 (92.9%) Errors: 217

MY APPROACH 949 (99.1%) Errors: 8 2918 (94.5%) Errors: 167

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

34 / 36

Conclusione e sviluppi futuri

Conclusione e sviluppi futuri

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.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

35 / 36

Conclusione e sviluppi futuri

Conclusione e sviluppi futuri

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.

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

35 / 36

Fine

Grazie per lattenzione

Alberto Savarese (matr. 50/505)

Identicatori e comprensione del codice

36 / 36

Anda mungkin juga menyukai