Título: | REVEALING INTERACTING FACTORS IN DECAY OF SOFTWARE DESIGN | ||||||||||||
Autor: |
DANIEL JOSE BARBOSA COUTINHO |
||||||||||||
Colaborador(es): |
ALESSANDRO FABRICIO GARCIA - Orientador |
||||||||||||
Catalogação: | 28/DEZ/2021 | Língua(s): | ENGLISH - UNITED STATES |
||||||||||
Tipo: | TEXT | Subtipo: | THESIS | ||||||||||
Notas: |
[pt] Todos os dados constantes dos documentos são de inteira responsabilidade de seus autores. Os dados utilizados nas descrições dos documentos estão em conformidade com os sistemas da administração da PUC-Rio. [en] All data contained in the documents are the sole responsibility of the authors. The data used in the descriptions of the documents are in conformity with the systems of the administration of PUC-Rio. |
||||||||||||
Referência(s): |
[pt] https://www.maxwell.vrac.puc-rio.br/projetosEspeciais/ETDs/consultas/conteudo.php?strSecao=resultado&nrSeq=56818&idi=1 [en] https://www.maxwell.vrac.puc-rio.br/projetosEspeciais/ETDs/consultas/conteudo.php?strSecao=resultado&nrSeq=56818&idi=2 |
||||||||||||
DOI: | https://doi.org/10.17771/PUCRio.acad.56818 | ||||||||||||
Resumo: | |||||||||||||
Developers constantly perform code changes throughout the lifetime of
a project. These changes may induce the introduction of design decay over
time. Design decay may be reduced or accelerated by interacting factors that
underlie each change. These factors may come from specific actions of change
or repair – e.g., refactorings – to how developers contribute and discuss the
changes. However, existing studies do not explain how these factors interact
and influence design decay. They solely tend to focus on a few types of
factors, and often consider them in isolation. Interactions between factors
may cause different outcomes than those previously studied. Studying factors
in isolation may not properly explain what are the most relevant set of
interacting factors that influence design decay. This may indicate that existing
approaches to avoid or mitigate design decay are misleading since they do not
consider potentially relevant interactions between various factors. Thus, this
dissertation reports an investigation that aims to increase the understanding
of how a wide range of interacting factors can influence design decay in
order to facilitate the investigation of which practices can be used to avoid
or mitigate design decay. To this end, we performed an in-depth analysis to
fill knowledge gaps on two types of factors: process-related (i.e., related to
changes and their produced outcomes) and developer-related (i.e., related to
the developer working on the changes) factors. We focused on analyzing the
effects of potential interactions between the aforementioned factors and 12
sub-factors with regards to how they affected modules with different levels
of decay. We observed diverging decay patterns in these modules. Our results
indicate that both types of factors can be used to distinguish between different
decay levels in classes. We have also observed that: (1) individually, the
developer-related subfactor that represented first-time contributors, as well as the process-related one that represented size of the changes, did not exert negative effects on the changed classes. However, when analyzing specific factor interactions, we saw that changes where both of these factors interacted tended to have a negative effect and led to decay. Interestingly, this behaviour did not alter even when the change was introduced via pull request (which usually triggers a code review process); (2) surprisingly, extraction-type refactorings often do not have a positive effect on code quality, while, by contrast, move refactorings were mostly positive. We also discuss how these findings in this dissertation can aid developers and researchers in improving their guidelines for the avoidance and monitoring of design decay.
|
|||||||||||||
|