Chanchal Roy, professore associato presso il Dipartimento di Informatica. Credito:Kris Foster
Il codice è onnipresente e la maggior parte delle industrie in tutto il mondo si affida a software basato su codice per mantenere attive le operazioni quotidiane, disse Chanchal Roy, professore associato presso il Dipartimento di Informatica.
"Le funzioni più semplici usano il codice, e il codice errato può avere un impatto enorme, " ha detto Roy, che si è unito al College of Arts and Science nel 2009. "Purtroppo, il modo in cui gli sviluppatori copiano il codice può causare molti bug o errori, qualcosa a cui si rivolge la mia ricerca."
È pratica comune per gli sviluppatori di software copiare, incollare e modificare un frammento di codice esistente per adattarlo all'attività o allo strumento su cui stanno lavorando. Questa si chiama clonazione, e il codice risultante dal processo di copia e incolla è, Certo, chiamato clone.
"Ci sono validi motivi per cui la clonazione è così comune, " ha detto Roy, la cui ricerca è supportata da un Natural Sciences and Engineering Research Council of Canada Accelerator Grant. "Si risparmia tempo, c'è un basso rischio nell'uso di codice stabile, e si traduce in uno sviluppo più rapido. Non c'è bisogno di reinventare la ruota".
Il problema, Roy è pronto a sottolineare, è che spesso la clonazione del codice comporta anche la clonazione di "bug" sconosciuti, e questi errori possono diffondersi rapidamente.
"Se hai un bug nel codice originale, stai copiando gli errori più e più volte, " ha detto. "Anche se trovi un'istanza del bug, è quasi impossibile trovarli tutti... il che si traduce in molti settori che utilizzano codice obsoleto rispetto a un nuovo codice che potenzialmente contiene bug".
In parte a causa dei problemi relativi alla clonazione e ai risultanti cloni difettosi, fino all'85% del costo dello sviluppo del software può essere destinato alla manutenzione del software, compreso il rilevamento dei cloni.
"È un'arma a doppio taglio, " ha detto Roy. "La clonazione è comune a causa dei vantaggi per i programmatori, ma i cloni possono portare bug che sono anche molto fastidiosi."
Rilevamento cloni, un'area in cui Roy ha dedicato molto tempo alla ricerca, significa trovare frammenti di codice simili per risolvere problemi di bug. Nella sua forma più semplice, è come fare una ricerca di documenti per parole specifiche. Nella sua forma più complessa, è come cercare un ago in un pagliaio, soprattutto se il codice originale è stato modificato (che è la forma più comune di clonazione) e si trova in un programma contenente milioni di righe di codice.
Per affrontare questo problema, Roy e il suo collaboratore di ricerca James Cordy della Queen's University hanno sviluppato una serie di sistemi di rilevamento dei cloni che cercano frammenti di codice simili. Ci sono due criteri principali necessari per un buon sistema di rilevamento dei cloni:precisione, che è la capacità di rilevare correttamente i cloni; e ricorda, termine riferito alla percentuale di cloni rilevati sul totale dei cloni presenti. Roy e Cordy hanno sviluppato il primo sistema di rilevamento dei cloni, chiamato NICAD, che eccelle sia in precisione che in richiamo.
"Una volta definite quali somiglianze cercare, NICAD può rilevare cloni modificati, "Roy ha detto, notando che una grande quantità di test umani, compreso il controllo di oltre nove milioni di frammenti clonati, è andato a garantire che il sistema di rilevamento dei cloni sia accurato.
Attraverso la sua valutazione del rilevamento dei cloni, Roy è diventato anche un leader mondiale nell'area del benchmarking degli strumenti di rilevamento dei cloni con lo sviluppo dello strumento BigCloneBench.
Il potenziale dei sistemi di rilevamento dei cloni di Roy e del lavoro di benchmarking non passa inosservato. Roy e Cordy hanno recentemente ricevuto due premi Most Influential Paper, in riconoscimento dell'"impatto duraturo dei contributi versati nei 10 anni precedenti". Il loro lavoro su benchmarking e NICAD è stato riconosciuto dalla International Conference on Software Analysis, Evoluzione e Reingegnerizzazione, e la Conferenza internazionale sulla comprensione dei programmi, rispettivamente.
Guardando al prossimo decennio, Roy ha detto che vorrebbe sviluppare un "sistema di clonazione sicuro" che non solo rilevi i cloni corrotti, ma è anche in grado di consigliare su come correggere i bug nel sistema, o addirittura rimuoverli automaticamente.
"Questo ha il potenziale per risparmiare un sacco di tempo e denaro, ma non sono sicuro di poterlo fare anche nei prossimi 20 anni, " disse Roy con un leggero sorriso e una risata.