[pt] A refatoração de código é uma transformação de código que visa aprimorar
a estrutura interna do código. Uma refatoração isolada raramente é
suficiente para remover completamente uma estrutura de código ruim, como
uma anomalia de código. Os desenvolvedores então aplicam refatorações
compostas para remover totalmente uma anomalia de código. Uma refatoração
composta consiste em duas ou mais refatorações inter-relacionadas. Um
refatoração composta é considerada completa quando elimina totalmente
a anomalia de código alvo. Estudos relatam que os desenvolvedores geralmente
falham em remover completamente as anomalias de código alvo por
meio de refatorações compostas. Refatorações compostas concluídas podem
não ser totalmente benéficas para a estrutura do código. Pois, estas podem
induzir efeitos colaterais, como a introdução de anomalias de código ou a
propagação de anomalias existentes. Há uma compreensão limitada sobre
a completude das refatorações compostas e seus possíveis efeitos colaterais.
Esta tese investiga como as refatorações compostas removem totalmente
as anomalias de código sem induzir efeitos colaterais. Descobrimos que 64 por cento
das refatorações compostas completas são formadas por tipos de refatoração
não recomendados anteriormente. Dessa forma, derivamos um catálogo de
recomendações para apoiar os desenvolvedores na aplicação de refatorações
compostas. Na avaliação do catálogo, 85 por cento de 21 desenvolvedores relataram
que usariam as recomendações do catálogo e que suas próprias soluções
de refatoração teriam induzido efeitos colaterais. Também avaliamos qualitativamente
três abordagens existentes para recomendar automaticamente
refatorações compostas. Nesse estudo, a maioria (80 por cento) dos 10 desenvolvedores
relatou que as abordagens existentes frequentemente induzem efeitos
colaterais. No geral, as descobertas e o catálogo proposto podem ajudar os
desenvolvedores a realizar refatorações compostas completas. / [en] Code refactoring is a code transformation that aims to enhance the
internal code structure. A single refactoring is rarely sufficient to achieve the
full removal of a poor code structure, such as a code smell. Developers then
apply composite refactorings to fully remove a code smell. A composite
refactoring (or, simply, composite) consists of two or more interrelated
single refactorings. A composite is considered complete when it fully
eliminates the target smell. However, studies report that developers often
fail in completely removing target code smells through composites. Even
when composite refactorings are complete they may still not be entirely
beneficial to the code structure. They may induce side effects, such as the
introduction of new smells or the propagation of existing ones. There is a
limited understanding of the completeness of composite refactorings and
their possible effects on structural quality. This thesis investigates whether
and how composite refactorings fully remove smells without inducing side
effects. We found that 64 per cent of complete composites in several software
projects are formed of refactoring types not previously recommended in the
literature. Based on this study, we derived a catalog of recommendations
for supporting developers in applying composite refactorings. Out of twenty
one developers evaluating our catalog, 85 per cent reported that they would use
the catalog recommendations and that their own refactoring solutions
would have induced side effects. We also qualitatively evaluated three
existing approaches to automatically recommend composite refactorings.
In our study with ten developers, most (80 per cent) developers reported that
existing approaches frequently induce side effects. Overall, the findings and
the proposed catalog can help developers to perform complete composite
refactorings with better awareness of possible side effects.
Identifer | oai:union.ndltd.org:puc-rio.br/oai:MAXWELL.puc-rio.br:62987 |
Date | 22 June 2023 |
Creators | ANA CARLA GOMES BIBIANO |
Contributors | ALESSANDRO FABRICIO GARCIA, ALESSANDRO FABRICIO GARCIA |
Publisher | MAXWELL |
Source Sets | PUC Rio |
Language | English |
Detected Language | English |
Type | TEXTO |
Page generated in 0.0026 seconds