Título
[pt] IDENTIFICAÇÃO E ANÁLISE DE MODIFICAÇÕES RELACIONADAS À REFATORAÇÃO
Título
[en] ON THE IDENTIFICATION AND ANALYSIS OF REFACTORING-RELATED MODIFICATIONS
Autor
[pt] DANIEL TENORIO MARTINS DE OLIVEIRA
Vocabulário
[pt] REFATORACAO
Vocabulário
[pt] CUSTOMIZACAO DE REFATORACAO
Vocabulário
[pt] MANUTENIBILIDADE
Vocabulário
[en] REFACTORING
Vocabulário
[en] REFACTORING CUSTOMIZATION
Vocabulário
[en] MAINTAINABILITY
Resumo
[pt] A refatoração é uma técnica bem estabelecida na engenharia de software,destinada a melhorar a estrutura do código sem alterar seu comportamento.Cada refatoração consiste em um conjunto de modificações estruturais em umprograma. Uma análise minuciosa das modificações de código que compõemuma refatoração é um pré-requisito para colher os benefícios dessa técnica.No entanto, existem pelo menos duas características da refatoração de códigoem projetos de software da vida real que complicam uma análise detalhadado código. Primeiro, as refatorações são frequentemente aplicadas de maneirapersonalizada, ou seja, os desenvolvedores ajustam manualmente um conjuntopré-definido de modificações de código (associadas a um tipo de refatoração)adicionando ou removendo modificações para se adequar a contextos específicos. Em segundo lugar, as refatorações estão frequentemente entrelaçadascom outras tarefas, como adicionar funcionalidades ou corrigir bugs, conhecidas como refatoração floss. Como as modificações de refatoração são frequentemente realizadas com outras modificações não relacionadas no mesmo commit, distingui-las é demorado e propenso a erros. Embora pesquisas anteriores tenham examinado essas duas características desafiadoras da refatoração de código, o suporte especializado de ferramentas para sua análise minuciosa ainda é limitado. Esta tese teve como objetivo desenvolver uma abordagem abrangente para auxiliar a análise de refatoração de código na presença dessas duas características desafiadoras. Para isso, primeiro realizamos um estudo com desenvolvedores para entender se eles precisariam de suporte especializado de ferramentas para refatorações personalizadas. Em seguida, desenvolvemos duas ferramentas para ajudar os desenvolvedores a identificar modificações relacionadas à refatoração e distingui-las de outras modificações não relacionadas. A eficácia dessas ferramentas foi avaliada por meio de um estudo com usuários experientes.
Resumo
[en] Refactoring is a well-established software engineering technique aimed
at improving code structure without altering its behavior. Each refactoring
consists of a set of default modifications in a program. A thorough analysis
of what code modifications compose a refactoring is a prerequisite to reap
the benefits of this technique. However, there are at least two characteristics
of code refactoring in real-life software projects that complicates a thorough
code analysis. First, refactorings are often applied in a customized fashion, i.e.,
developers manually tailor a pre-defined set of code modifications (associated
with a refactoring type) by adding or removing modifications to suit specific
contexts. Second, refactorings are often intertwined with other tasks like
adding features or fixing bugs, known as floss refactoring. Since refactoring
modifications are often performed with other unrelated modifications in the
same commit, distinguishing them is time-consuming and error-prone. While
previous research has scrutinized these two challenging characteristics of code
refactoring, specialized tool support for its thorough analysis is still limited.
This thesis aimed at developing a comprehensive approach to assist code
refactoring analysis in the presence of these two challenging characteristics. To
this end, we first performed a study with developers to understand whether
they would require specialized tool support for customized refactorings. Then,
we developed two tools to assist developers in identifying refactoring-related
modifications and distinguishing them from other unrelated modifications. The
effectiveness of these tools was assessed through a user study with experienced
developers.
Orientador(es)
ALESSANDRO FABRICIO GARCIA
Coorientador(es)
WESLEY KLEWERTON GUEZ ASSUNCAO
Banca
ALESSANDRO FABRICIO GARCIA
Banca
JOSE ALBERTO RODRIGUES PEREIRA SARDINHA
Banca
BALDOINO FONSECA DOS SANTOS NETO
Banca
RAFAEL MAIANI DE MELLO
Banca
JULIANA ALVES PEREIRA
Banca
WESLEY KLEWERTON GUEZ ASSUNCAO
Catalogação
2025-03-11
Apresentação
2024-09-24
Tipo
[pt] TEXTO
Formato
application/pdf
Idioma(s)
INGLÊS
Referência [pt]
https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=69593@1
Referência [en]
https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=69593@2
Referência DOI
https://doi.org/10.17771/PUCRio.acad.69593
Arquivos do conteúdo
NA ÍNTEGRA PDF