Spelling suggestions: "subject:"[een] REFACTORING CUSTOMIZATION"" "subject:"[enn] REFACTORING CUSTOMIZATION""
1 |
[pt] RUMO A CUSTOMIZAÇÃO NA DETECÇÃO DE SMELL E NA REFATORAÇÃO / [en] TOWARDS CUSTOMIZING SMELL DETECTION AND REFACTORINGSDANIEL TENORIO MARTINS DE OLIVEIRA 10 December 2021 (has links)
[pt] Code smells são estruturas pobres que prejudicam a manutenção do sistema.
Sendo assim, code smells devem ser detectados e removidos, através
de refatoração, no começo do ciclo de vida do software. Refatoração consiste
em modificações no código que visam melhorar a manutenção do software,
removendo ou mitigando estruturas pobres. Contudo, as estratégias
de detecção e refatoração de smells são subjetivas. Isto é, desenvolvedores
trabalhando no mesmo sistema podem divergir acerca da existência de um
smell. Essa divergência é influenciada pelo conhecimento do desenvolvedor,
incluindo o design do sistema e o código analisado. Como consequência,
essa divergência afeta também a aplicação das refatorações. Assim, é preciso
customizar a detecção de smell e refatoração a partir do conhecimento
dos desenvolvedores. Afinal, o desenvolvedor é quem confirma a nocividade
de um smell e define como refatorá-lo. Para isso, decompomos nossa pesquisa
em 3 passos: (i) como customizar estratégias de detecção de smells?,
(ii) se e com que frequência os desenvolvedores customizam suas refatorações?
e (iii) como dar suporte a customização de refatoração?. No primeiro
passo avaliamos as técnicas de aprendizagem de máquina quanto a capacidade
de customizar sua detecção para cada desenvolvedor. Segundo, nós investigamos
como desenvolvedores customizam refatorações, analisando suas
modificações de código enquanto aplicam certos tipos de refatoração. Além
disso, nós também discutimos como essas customizações estão relacionadas
com a inserção, remoção ou mitigação de smells e se são apoiados pelo
Eclipse. Terceiro, nós propusemos uma abordagem que permite a aplicação
de refatorações customizadas. Nossos resultados indicaram que as técnicas
de aprendizagem de máquina são capazes de capturar o conhecimento do
desenvolvedor e obter alta acurácia detectando smells. Além disso, desenvolvedores
frequentemente customizam refatorações que não são totalmente
suportadas pelo Eclipse. Para piorar, customizações complexas, geralmente
manuais, tendem a reduzir o efeito positivo da refatoração. Portanto, nossos
resultados servem como base para melhorar o suporte de ferramentas: a (i)
detecção customizada de smells, levando em consideração o conhecimento
do desenvolvedor e (ii) a aplicação de refatoração customizada. / [en] Code smells are poor structures that harm software maintenance. Therefore,
code smells should be detected and removed, through refactoring, early in
the software lifecycle. Refactoring consists of a sequence of code modifications
that aim to improve software maintenance by removing or mitigating
poor code structures. However, the strategies for detecting and refactoring
smells are subjective. Even developers working on the same software may
diverge on their opinions about the existence of a smell. In fact, this divergence
is mostly influenced by the developer s knowledge, including the
system s design and the analyzed source code. As a consequence, the same
divergence affects the application of the corresponding refactorings. Therefore,
there is a need to support the customization of smell detection and
refactoring based on the developer s knowledge. The developer is who, after
all, becomes the decision maker on confirming the harmfulness of a smelly
structure and how to refactor it out. In order to address this issue, we split
our research in 3 steps: (i) how to customize smell detection strategies? (ii)
whether and how often developers customize their refactorings? and (iii)
how to support refactoring customization? In the first step, we evaluated
the use of machine learning techniques for properly customizing smell detection
for each developer. Second, we investigated how developers customize
refactorings by analyzing their code modifications while applying certain
refactoring types. Besides, we also discussed how these customizations are
related to the introduction, removal or mitigation of smells, and whether
they are currently supported by Eclipse, a popular IDE. Third, we proposed
an approach that allows the application of custom refactoring. Our
results indicated that machine learning techniques are able to efficiently capture
the developer s knowledge and achieve high smell detection accuracy.
Also, even though developers frequently customize refactorings, their customizations
are often not supported by Eclipse. To make it worse, complex
customizations, which are manually performed, tend to reduce the positive
effect of the refactoring. Therefore, our contributions serve as a basis for
improving tool support for: (i) customized detection of smells considering
the developer s knowledge, and (ii) application of customized refactoring.
|
2 |
[pt] IDENTIFICAÇÃO E ANÁLISE DE MODIFICAÇÕES RELACIONADAS À REFATORAÇÃO / [en] ON THE IDENTIFICATION AND ANALYSIS OF REFACTORING-RELATED MODIFICATIONSDANIEL TENORIO MARTINS DE OLIVEIRA 11 March 2025 (has links)
[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. / [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.
|
Page generated in 0.034 seconds