My Origin

The Arch of Trajan is an ancient Roman triumphal arch erected in honor of Emperor Trajan across the Via Appia at the entrance of Benevento

I was born in Benevento, a relatively small town in the south of Italy. It is a city and comune of Campania and the capital of the province of Benevento. It is situated about 50 kilometers in the northeast of Naples. Benevento has a fascinating and long history. It occupies the site of the ancient Beneventum, originally Maleventum. It hosts several historical monuments and findings belonging to the Roman epoch, such as the Arch of Trajan, the Roman theatre, and the Church of Santa Sofia that became a UNESCO World Heritage Site in 2011. Benevento also hosts the excellent University of Sannio, founded in 1998. Today, it is a modern and dynamic institution in constant evolution with four faculties, including courses for both Bachelor’s and Master’s degrees in Software Engineering.

My Training

An exciting recreational day at the SERG’s retreat in Antwerp, Belgium

During my early years, I had the opportunity to visit the DRF Elettronica in Benevento as an apprentice. There, I learned how to build, use, and manage electronics equipment of different nature; this fascinating world contributed to strengthening my electronics and technology passions.

In 2006, I started my bachelor’s in software engineering at the University of Sannio. Meanwhile, in 2010, while working as a hardware designer at ACME Systems, a Microchip Technology partner, I incorporated my first company specialized in embedded software development and electronic design.

In 2011, I concluded the first cycle of my study, receiving the Italian title of engineer. Later, leveraging my hardware design experience, I participated in a French research project aimed at measuring the harmful effects of continuous noise exposure on the human body (here some outcomes).

Later on, I continued with a Master’s in software engineering at the University of Sannio. In 2015, I concluded this second cycle of my study by achieving a master’s degree cum laude in software engineering. The thesis, supervised by Massimiliano Di Penta, focused on the differences in developing video games vs. traditional software in open-source projects.

While studying, I actively collaborated with Elettronica IN, the top-one Italian magazine for applied electronics. I built several educational projects motivated by the passion for sharing my knowledge with new generations (here the list of my projects). Meanwhile, I taught assembly and C/C++ programming languages at the I.P.I.A. Palmieri, a professional Italian high-school in Benevento. These awesome experiences allowed me to build strong relationships with a vibrant network of experts in the embedded development world. By leveraging these collaborations, I strengthen my background in developing Internet-of-Things and System-on-Module.

In 2016, I moved to The Netherlands, where I started my Ph.D. in computer science at the Delft University of Technology known as TU Delft. While being part of the SERG group led by Arie van Deursen, I was remotely supervised by Alberto Bacchelli, head of the ZEST group at UZH. Besides, during my Ph.D. I have been interned twice. In summer 2016, I was a visitor at the IMDEA Software Institute, Spain, where I collaborated with Alessandra Gorla. And in 2018, I was interned at the Software Improvement Group, The Netherlands, where I collaborated with Magiel Bruntink, head of the SIG’s research group.

In 2019, I co-founded LPSystems; a Dutch company specialized in designing high-performance Internet-of-Things equipment that runs low-level embedded software for streaming web radio.

Finally, in 2020, I joined the DEVINTA project at the Università della Svizzera Italiana (USI) in Switzerland. Here, as a postdoctoral researcher, I work in the SEART group of Gabriele Bavota. Here together with my colleague Emad Aghajani I am co-advising three great Ph.D. students (Rosalia Tufano, Matteo Ciniselli, and Antonio Mastropaolo) working on three different research topics that include artificial intelligence, natural language processing, and reinforcement learning.

My Research

My new Nvidia Jetson AGX for small-scale deep learning experiments

My passion for the research is not limited to software engineering—that remains my main domain—but covers embedded development and hardware design. As for my first research experience, in my bachelor’s thesis, I designed the PCB of a multipurpose data acquisition system by leveraging a consumer audio-band A/D converter. A Bayesian error correction algorithm overcomes the sigma-delta limitations of such a cheaper A/D. The embedded algorithm written in C executed by a 32bit microcontroller takes advantage of a LUT to limit the performance’s impact in real-time environments. The experimental results show up to 20 dB in the THD response reflected in a gain of 2 bits in the Effective number of bits (ENOB) of the considered analog-to-digital converter.

Later on, my research experience continued in collaboration with Bruitparif in Paris, initially designing a dedicated device for the remote control and successively developing an innovative multidirectional microphone. The motivation behind this study is the damaging effect that continuous noise exposure generates on people. To this aim, we dealt with the design of such innovative measurement equipment that must be extremely small, low-power, and guarantee remote access while having an excellent dynamic during the signal sampling. The first achievement, reached in 2019 after an extremely challenging path, is a system capable of locating sound sources in a 3D map.

As I said, my research experience does not cover only hardware design and embedded development. Still, it focuses on empirical software engineering and, in particular, mining repositories, defect predictions, code review, natural language processing, artificial intelligence, and deep learning in general.

During the Master’s thesis, I conducted an empirical study to characterize quantitatively and qualitatively the differences between the development of video games and traditional software in open-source projects. Starting from a collection of 60 open-source projects and 81 survey participants, this study investigates how developers contribute, prevent malfunctions, and perceive the development process. The results shed light on the different needs of video game developers, which deal with a polyhedric environment that requires experts of different fields.

In my Ph.D. I focused on the code review and, in particular, on the possibility of using the off-the-shelf defect prediction techniques to ease the review process. The developer-centered nature of code review can represent a bottleneck that does not scale in large systems with the consequence of compromising firms’ profits. This challenge has led to an entire line of research on code review improvement. I started reimplementing state-of-the-art defect prediction to understand its replicability; then, I evaluated this model in a more representative scenario. To improve defect prediction techniques, I develop a fine-grained just-in-time defect prediction model that anticipates the prediction at commit time and reduces the granularity at the file level. After that, I explored how to improve further prediction performance by using alternative sources of information. I conducted a comprehensive investigation of code comments written by both open and closed source developers. Finally, to further improve the code review process, I explored the information that reviewers need to lead a proper code review.
Findings show that the state-of-the-art defect prediction cannot be directly used to support code review when evaluated in a realistic scenario. Furthermore, I assessed that alternative sets of metrics, anticipated feedback, and fine-grained suggestions represent independent directions to improve prediction performance. Finally, I assessed that research must care in creating intelligent tools that, other than predict defects, must satisfy actual reviewers’ needs, such as expert selection, splittable changes, real-time communication, and self summarization of changes.

However, during my Ph.D. I had the opportunity to investigate additional topics, such as one related to mobile applications. In particular, developing mobile applications is a nontrivial task because even the smallest error may have quick and significant effects due to negative user reviews. Moreover, mobile software has to handle various sensors, perform prompt reactions to users’ inputs, struggle with limited battery life, or deal with limited interface size. Nonetheless, the mobile applications market keeps growing. For example, mobile software for healthcare assistance is becoming a pervasive reality that allows users to keep their health status under control. Nonetheless, development practices adopted in mobile software still differ from traditional development, such as the self-reported activities of Android developers or the different logging practices with Mobile Analytics.

I am currently mainly focusing on the DEVINTA project to build an advanced assistant that eases developers’ duties. To this aim, the latest research triggers two deep learning models. The first one learns code changes performed by developers during real code review activities, thus providing the contributor with a revised version of her code implementing code transformations usually recommended during code review before the code is even submitted for review. The second one automatically provides the reviewer commenting on a submitted code with the revised code implementing her natural language comments. Another approach aims to explore state-of-the-art deep learning models’ capabilities in supporting code completion at different granularity levels. In particular, this study trains and evaluates a RoBERTa model on two corpora of actual data with performance ranging from 7% to 58% in terms of perfect predictions—according to the submitted task’s granularity.