Dissertação
Analyzing the effects of refactorings on bad smells
Fecha
2021-03-31Autor
Cleiton Silva Tavares
Institución
Resumen
Refatoração visa aumentar a manutenibilidade de sistemas de software melhorando a sua estrutura sem alterar seu comportamento, podendo ser aplicada para remover bad smells. Mesmo com a existência de ferramentas para auxiliar a refatoração, muitos desenvolvedores não confiam em suas soluções, alegando que alguns estudos mostram que a refatoração pode introduzir novos bad smells no código-fonte. Contudo, não encontramos um catálogo completo que indique quando isso ocorre. Para investigar esse assunto em detalhe, o objetivo desta dissertação é avaliar os efeitos da refatoração em bad smells. Especificamente, investigamos se e qual refatoração remove bad smells ou os introduz. Para atingir esse objetivo, realizamos uma Revisão Sistemática da Literatura (RSL) para identificar a relação entre as refatorações e os bad smells propostos por Fowler. Conduzimos um estudo empírico com oito sistemas de software, aplicando cinco refatorações para analisar seus efeitos em dez bad smells com o auxílio de cinco ferramentas. Como resultado do estudo empírico, apresentamos via os dados estudados, quais bad smells são removidos ou introduzidos pelo processo de refatoração automatizada. A RSL resultou em 20 artigos mostrando a relação direta entre 31 refatorações e 16 bad smells. Produzimos um catálogo exibindo essas relações e também apresentamos um contraste com as relações discutidas por Fowler. Identificamos que a relação mais discutida na literatura se dá entre Move Method e Feature Envy. A RSL também revelou que existem estratégias de refatoração diferentes daquelas discutidas por Fowler para lidar com bad smells. No estudo empírico, observamos que os tipos de refatoração geraram diminuição, aumento e variações neutras no número de bad smells. Diferente da definição de Fowler, surpreendentemente descobrimos que a diminuição no número de bad smells foi a mais baixa em comparação com casos de aumento e variações neutras. Em uma análise adicional, contrastamos os resultados encontrados nos dois estudos realizados, classificando-os, validando-os e complementando-os.