La mia attività di ricerca è iniziata nel campo dell'Ingegneria del Software, in particolare nelle aree della software maintenance and evolution, empirical software engineering, e mining of software repositories. I primi risultati rilevanti sono stati ottenuti nel 2005 quando ho sviluppato un approccio, basato su algoritmi di information retrieval, in grado di predire le parti di un codice sorgente che necessitano di un intervento di manutenzione (G. Canfora, L. Cerulo., In Proceedings of METRICS 2005) e a quali sviluppatori andrebbe assegnato tale task (G. Canfora, L. Cerulo., In Proceedings of SAC 2006). Entrambi gli approcci hanno suscitato l'interesse della comunità scientifica ottenendo nel tempo un crescente numero di citazioni.
Nel 2006 ho sviluppato un algoritmo per tracciare a ritroso le linee di codice che vengono modificate quando nuove versioni del codice sorgente vengono rilasciate. L'algoritmo è basato su due misure di similarità tra stringhe: la prima considera blocchi di codice sorgente modificati e/o spostati, la seconda considera le modifiche avvenute nell'ambito di una riga di codice. L'applicazione concomitante di queste due misure consente di ricavare l'origine dei cambiamenti di una linea di codice e quindi di tracciare l'evoluzione attraverso le versioni. L'algoritmo è stato usato come base di analisi per tutti i successivi studi sull'evoluzione di entità software quali: cloni software, design patterns e crosscutting concerns.
L'articolo, in cui è stato pubblicato l'algoritmo, è stato premiato come 'best paper' alla Working Conference on Mining Software Repository nel maggio 2007 (G. Canfora, L. Cerulo, M. Di Penta., In Proceedings of MSR 2007) ed ha sucitato l'interesse della comunità scientifica ricevendo molte citazioni. L'algoritmo, implementato in un tool ldiff, disponibile all'indirizzo http://sourceforge.net/projects/ldiff/, attualmente è impiegato quale metodo efficace per determinare l'origine dei cambiamenti nel codice sorgente e tracciare i cambiamenti software nel tempo (G. Canfora, L. Cerulo, M. Di Penta., IEEE Software 26(1) 2009). In collaborazione con altri ho osservato e dimostrato empiricamente il comportamento di varie entità software tra cui quella dei cloni software che nella maggiornaza dei casi non sono un pericolo, come ritenuto in passato, per la qualità del software. Essi sono infatti generalmente tracciati e manutenuti in maniera sincronizzata (S. Thummalapenta, L. Cerulo, L. Aversano, M. Di Penta., Empirical Software Engineering 15(1) 2010). Questo studio ha recentemente ricevuto il premio Most Influetial Paper durante la conferenza SANER 2017 che include le precedenti CSMR e WCRE.
La metodologia di analisi di base usata per analizzare i cloni è stata applicata per studiare l'evoluzione di altre entità software quali ad esempio design patterns (L. Aversano, G. Canfora, L. Cerulo, C. Del Grosso, M. Di Penta., In Proceedings of ESEC/FSE 2007), dei crosscutting concerns (L. Aversano, L. Cerulo, M. Di Penta., IET Software 3(5) 2009), vulnerabilità software, (M. Di Penta, L. Cerulo, L. Aversano., Information and Software Technology 51(10) 2009), cambiamenti software (G. Canfora, M. Ceccarelli, L. Cerulo, M. Di Penta., In Proceedings of ICSM 2010) ed entropia software (G. Canfora, L. Cerulo, M. Cimitile, M. Di Penta., Empirical Software Engineering 19(1) 2014). Questi studi hanno confermato diverse ipotesi su ciò che si pensava fosse il ruolo evolutivo che tali entità ricoprono all'interno di un sistema software.
Dal 2008 mi occupo di bioinformatica ed in particolare di reverse engineering di reti biologiche, system biology, analisi del genoma non codificante e identificazione di copy number (S. Morganella, L. Cerulo, G. Viglietto, M. Ceccarelli., Bioinformatics 26(24) 2010). Il reverse engineering di un sistema biologico e di un sistema software possono avere molti aspetti in comune: entrambi sono sistemi molto complessi in cui entrano in gioco numerosi fattori. Ho affrontato e studiato il problema della ricostruzione di reti di regolazione geniche mediante algoritmi supervisionati, sviluppando in collaborazione con altri un approccio in grado di apprendere solo da esempi positivi (L. Cerulo, C. Elkan, M. Ceccarelli. BMC Bioinformatics 11 2010) (L. Cerulo, V. Paduano, P. Zoppoli, M. Ceccarelli., BMC Bioinformatics 14(SUPPL1) 2013). Tale algoritmo è stato applicato nel contesto biologico delle cellule pluripotenti per identificare un insieme di geni in grado di mantenere il self reneval delle stesse (L. Cerulo et al., PLoS ONE 9(1) 2014).
In collaborazione con altri ho sviluppato un nuovo algoritmo basato sui metodi formali in grado di ricostruire reti di regolazione genica a partire da serie temporali (M. Ceccarelli, L. Cerulo, A. Santone, Methods 69(3) 2014). Recentemente inoltre ho sviluppato un metodo per identificare in un testo la presenza di frammenti codificati in un linguaggio formale e/o semiformale utilizzando modelli basati su catene di Markov (L. Cerulo, M. Di Penta, A. Bacchelli, M. Ceccarelli, G. Canfora, Science of Computer Programming 2014). Tale metodologia trova applicazione sia in ingegneria del software per estrarre informazioni dalla documentazione software e sia in bioinformatica per ricostruire relazioni tra entità biologiche riportate in articoli scientifici.
Attualmente mi occupo attivamente di cancer bioinformatics ed analisi del genoma non codificante usando approcci di machine learning in particolare deep neural network.