Motivações para aplicação da refatoração extract method: um estudo baseado em mensagens de commit

Detalhes bibliográficos
Ano de defesa: 2023
Autor(a) principal: Henrique, Jalisson dos Santos lattes
Orientador(a): Sant'Anna, Cláudio Nogueira lattes
Banca de defesa: Sant'Anna, Cláudio Nogueira lattes, Chavez, Christina von Flach Garcia lattes, Oliveira, Raphael Pereira de lattes
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: por
Instituição de defesa: Universidade Federal da Bahia
Programa de Pós-Graduação: Programa de Pós-Graduação em Ciência da Computação (PGCOMP) 
Departamento: Instituto de Computação - IC
País: Brasil
Palavras-chave em Português:
Área do conhecimento CNPq:
Link de acesso: https://repositorio.ufba.br/handle/ri/39440
Resumo: Refatorações são operações realizadas no código fonte que visam melhorar a capacidade de manutenção de um sistema de software. Apesar da literatura conter diversos estudos sobre refatorações, são poucos os trabalhos que investigam as motivações reportadas pelos desenvolvedores para realizar refatorações. Portanto, esta pesquisa tem o objetivo de investigar as motivações por trás das refatorações de extract method em sistemas reais. Para isso, foram conduzidos dois estudos experimentais, um preliminar envolvendo um único sistema de software, e um outro estudo onde foram considerados diversos sistemas. Os estudos foram baseados em mineração de commits onde ocorreram refatorações do tipo extract method em sistemas reais. Basicamente, buscou-se analisar as mensagens desses commits visando capturar as motivações dos desenvolvedores para realizar tais refatorações. Os resultados apontaram 16 motivações diferentes para a aplicação do extract method. Além disso, observou-se que apenas 16% das refatorações tiveram intenção explícita de melhorar a qualidade do código. Também foi identificado que as refatorações com intenção de melhorar a qualidade do código ocorreram com maior frequência em métodos com tamanho acima de 61 linhas de código e com menor frequência em métodos abaixo de 20 linhas de código.