O aluno de doutorado em Ciência da Computação Danilo Ferreira Silva, que tem pesquisa orientada pelo professor Marco Túlio Valente, ganhou o prêmio ACM SIGSOFT Distinguished Paper Award, com o trabalho Why we refactor? Confessions of GitHub contributors. O prêmio foi concedido pelo 24º International Symposium on the Foundations of Software Engineering (FSE), uma das mais importantes conferências internacionais de engenharia de software. O trabalho de Danilo Silva se debruça sobre manutenções preventivas de softwares, ou refatoramentos, que procuram melhorar o código de um sistema, para torná-lo mais simples e flexível. Refatoramentos incluem dividir um trecho muito grande de código em trechos menores ou mudar o nome de alguma parte interna do código. Para realizar essas manutenções preventivas, engenheiros de software se baseiam em catálogos que documentam e detalham as possíveis operações de refatoramento que podem ser aplicadas em um sistema. Mas não se sabe com precisão quais são os motivos que levam programadores a aplicar as operações descritas em tais catálogos. Danilo Silva e Marco Tulio Valente monitoraram durante dois meses milhares de operações de refatoramento, e para isso foi implementada uma ferramenta computacional que detecta automaticamente operações realizadas em sistemas hospedados na plataforma GitHub (repositório que contém os códigos-fonte de mais de 25 milhões de sistemas de Respostas classificadas A pesquisa contou também com a participação do professor Nikolaos Tsantalis, da Concordia University, em Montreal, Canadá.
código aberto). O GitHub é usado para desenvolvimento colaborativo por mais de 10 milhões de programadores em todo o mundo, desde pequenos grupos voluntários até profissionais da Microsoft e da Google.
Quando detectavam um refatoramento, os autores da pesquisa entravam em contato com os programadores para saber por que eles fizeram aquela manutenção. Classificaram centenas de respostas e propuseram um catálogo com 44 razões distintas para operações de refatoramento. A maioria está ligada à implementação de um novo recurso ou funcionalidade. A proposta desse catálogo é o primeiro passo para o desenvolvimento de ferramentas que possam automaticamente detectar oportunidades de refatoramento, sem intervenção humana. O objetivo é contribuir para aumentar a frequência das manutenções preventivas em sistemas de software.