Rejuvenescimento de Código em Projetos Python: Um Estudo Empírico sobre Pattern Matching e Recursos Modernos da Linguagem
Rejuvenescimento de código
Linguagem de Programação Python
Structural Pattern Matching
Mineração de Repositórios de Software
O rejuvenescimento de código consiste no processo de modernização de sistemas legados por meio da adoção de recursos contemporâneos de uma linguagem de programação. No contexto da linguagem Python, funcionalidades introduzidas recentemente---como \emph{f-strings} (PEP~498), \emph{async/await} (PEP~492) e \emph{Structural Pattern Matching} (PEPs~634---636)---oferecem oportunidades para tornar o código mais legível, expressivo e alinhado às práticas modernas de desenvolvimento. Apesar desse potencial, ainda há um entendimento limitado sobre como tais recursos vêm sendo adotados em projetos reais de grande escala e se, de fato, contribuem para atributos de manutenibilidade, como compreensibilidade e evolutividade.
Esta pesquisa tem como objetivo investigar empiricamente a adoção de recursos modernos da linguagem Python, com ênfase no \emph{pattern matching}, analisando em quais contextos essas transformações podem ser caracterizadas como processos de rejuvenescimento de código. Para isso, realizamos uma mineração de repositórios de software em 424 projetos públicos hospedados no GitHub, utilizando uma ferramenta desenvolvida especificamente para esse fim, denominada \emph{PyMiner}. A partir do histórico de \emph{commits}, conduzimos análises quantitativas e qualitativas com o objetivo de identificar padrões de modernização, bem como barreiras técnicas e culturais que influenciam a evolução dos projetos.
Os resultados indicam que a adoção de recursos modernos da linguagem Python ocorre de forma desigual: enquanto as \emph{f-strings} já se encontram amplamente incorporadas, o \emph{Structural Pattern Matching} ainda apresenta um estágio inicial de difusão. Este estudo contribui com evidências empíricas que podem apoiar desenvolvedores na definição de estratégias para a modernização sustentável de sistemas Python, além de abrir caminhos para futuras pesquisas sobre ferramentas automatizadas de rejuvenescimento de código.