Code Readability Assessment and Improvement: Human and Automated Perspectives

Tese de Doutorado
por Caroline Félix de Oliveira
Publicado: 20/08/2025 - 10:19
Última modificação: 20/08/2025 - 10:19

Linha de pesquisa: Engenharia de Software

Resumo: A legibilidade é uma característica crucial no desenvolvimento de software, pois os desenvolvedores frequentemente dedicam uma parte significativa do tempo lendo e compreendendo o código. No entanto, ainda existem desafios tanto na definição de métricas precisas para sua avaliação quanto na automação de refatorações que visam aprimorá- la. Com a ascensão dos modelos de linguagem de grande escala (LLMs), surge uma nova oportunidade: avaliar não apenas a legibilidade do código gerado por esses modelos, mas também sua capacidade de refatorar código existente, buscando torná-lo mais legível. Este estudo avalia o desempenho de legibilidade de três LLMs (ChatGPT, DeepSeek e Gemini), comparando os trechos de código por eles gerados com aqueles escritos por humanos no Stack Overflow. Com isso, é apresentada uma abordagem híbrida que combina ferramentas automáticas de análise estática (ASATs) com refatorações baseadas em LLMs para melhorar a legibilidade do código. Além disso, é extraída uma taxonomia das melhorias de legibilidade realizadas por desenvolvedores em repositórios reais do GitHub, escritos nas linguagens Java e Python. Os resultados indicam que os LLMs, em geral, geram código com significativamente menos alertas de legibilidade em comparação com as recomendações do Stack Overflow. A combinação de LLMs e ASATs oferece um potencial valioso para refatorações orientadas à legibilidade, especialmente ao melhorar o código por meio de uma única interação com os LLMs. Modelos focados em geração de código, como o DeepSeek Coder, alcançaram o melhor desempenho no refinamento do código-fonte. Em código de projetos reais, os desenvolvedores tendem a melhorar a legibilidade ao esclarecer a intenção do código e reduzir redundâncias e trechos verbosos. Embora desenvolvedores de Python e Java compartilhem preocupações como a melhoria da nomenclatura, algumas diferenças são observadas: desenvolvedores Java focam mais na remoção de código redundante e desnecessário, enquanto desenvolvedores Python priorizam a clareza do código.

Link para a defesa: https://teams.microsoft.com/l/meetup-join/19%3ameeting_OTgxZWRlYzYtNWZkM...

Banca Examinadora: 
Stéphane Julia - Universidade Federal de Uberlândia, Faculdade de Computação.
Rafael Dias Araújo - Universidade Federal de Uberlândia, Faculdade de Computação.
Fernando José Castor de Lima Filho - Universidade Federal de Pernambuco, Centro de Informática.
André Cavalcante Hora - Universidade Federal de Minas Gerais, Instituto de Ciências Exatas, Departamento de Ciência da Computação.
Data e Horário: 
29/08/2025 - 13:00
Virtual, 2121 1B
Uberlândia, Minas Gerais, Brasil
38400-902
Campus Santa Mônica - Bloco 1B - Sala 230
Complemento: 
1B