My broad research goal is to help developers build more efficient software systems in an efficient manner. I tend to have a hard time focusing on a single research topic. In the past, I've worked on a wide variety of subjects, such as program transformation systems, formal modeling of exception propagation (in sequential and concurrent systems), failure detection in distributed systems, modularization of exception handling code, aspect-oriented programming, and design diversity in service-oriented architectures.
Nowadays, I'm more interested in the energy efficiency of software systems, in particular, how exploiting off-the-shelf design diversity combined with software refactoring can be a cheap way of saving energy. This video provides a brief overview of some research initiatives related to this topic, specifically work that was published in 2019. One of the papers I discuss in the video was later extended and improved. This extension is titled "Improving the Energy Efficiency of Android Mobile Applications" and I believe it is very representative of the main ideas I discuss there.
In 2017, my colleague (and former PhD student) Gustavo Pinto and me published a paper at Communications of the ACM titled "Energy Efficiency: A New Concern for Application Software Developers". This paper basically provides an overview of work on energy efficiency within the context of Software Engineering research. CACM made a video about the paper.
Lately, I've also developed a healthy interest in code reviews. In particular, we've been trying to understand how we can make the review process more efficient and less confusing for reviewers and patch set submitters. My colleague (and former PhD student) Felipe Ebert made a nice, short presentation (in Portuguese) about this theme, which is at the center of his PhD thesis (in Portuguese). The main paper discussing his work is titled "Confusion in Code Reviews: Reasons, Impacts, and Coping Strategies".
As a consequence of our studies on confusion in code reviews, I've started, together with a colleague and two students, investigating what is currently known about code readability. This lead me through interesting avenues that include discovering new terminology in the area (readability vs. legibility), identifying a vast array of different approaches to evaluate code readability and legibility, and attempting to model program understanding as a learning activity. In this video, my PhD student Delano Oliveira talks about this paper, titled "Evaluating Code Readability and Legibility: An Examination of Human-centric Studies". I've also made a presentation on this topic, based on Delano's talk.