• Refine Query
  • Source
  • Publication year
  • to
  • Language
  • 2
  • Tagged with
  • 2
  • 2
  • 2
  • 2
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • About
  • The Global ETD Search service is a free service for researchers to find electronic theses and dissertations. This service is provided by the Networked Digital Library of Theses and Dissertations.
    Our metadata is collected from universities around the world. If you manage a university/consortium/country archive and want to be added, details can be found on the NDLTD website.
1

[pt] RELEVANDO FATORES INTERATIVOS NA DEGRADAÇÃO DO DESIGN DE SOFTWARE / [en] REVEALING INTERACTING FACTORS IN DECAY OF SOFTWARE DESIGN

DANIEL JOSE BARBOSA COUTINHO 28 December 2021 (has links)
[pt] Desenvolvedores realizam mudanças de código constantemente durante a vida de um projeto de software. Essas mudanças podem induzir a degradação progressiva do design. A degradação do design pode ser reduzida ou acelerada por fatores que interagem em cada mudança. Esses fatores podem variar desde uma mudança ou ação de reparo específica – e.g., refatorações – até a maneira como os desenvolvedores contribuem e discutem mudanças. Entretanto, estudos anteriores não exploram como esses fatores interagem e influenciam na degradação do design. Eles apenas focam em alguns fatores e tendem a os investigar em isolamento. Estudar os fatores em isolamento pode não explicar adequadamente qual é o conjunto mais relevante de interações entre fatores e qual sua influência na degradação do design. Isso pode indicar que abordagens existentes para evitar ou mitigar a degradação do design são incompletas, já que elas não consideram interações entre fatores que podem ser relevantes. Portanto, essa dissertação relata uma investigação que almeja aumentar a compreensão sobre como uma ampla gama de interações entre fatores pode afetar a degradação do design, para que consequentemente possam ser investigadas práticas efetivas para evitar ou mitigar esse fenômeno. Para tal fim, nós realizamos uma análise aprofundada buscando preencher lacunas no conhecimento existente sobre dois tipos de fatores: fatores relacionados ao processo (i.e. relacionados às mudanças e seus resultados produzidos) e fatores relacionados ao desenvolvedor (i.e. relacionados ao desenvolvedor trabalhando nas mudanças). Nós focamos em analisar os efeitos de possíveis interações entre os fatores previamente mencionados e uma série de sub-fatores, no que diz respeito como essas interações afetam módulos que sofreram diferentes níveis de degradação. Por exemplo, nós observamos que: (1) individualmente, tanto o sub-fator relacionado ao desenvolvedor que representa um desenvolvedor novato (que está contribuindo pela primeira vez), quanto o sub-fator relacionado ao processo que representa tamanho de uma mudança, não se mostraram relacionados a efeitos negativos na qualidade de código das classes alteradas. Porém, analisando interações entre fatores, nós observamos que mudanças em que esses dois fatores interagem tendem a ter um efeito negativo no código, causando degradação. Interessantemente, esse comportamento não se alterou mesmo quando mudança foi introduzida através de uma pull request (o que frequentemente inicia um processo de revisão de código), (2) surpreendentemente, refatorações de extração frequentemente não tem um efeito positivo na qualidade do código, enquanto, em contrapartida, as refatorações de movimentação foram predominantemente positivas. Nós também discutimos como esses achados apresentados na dissertação podem ajudar desenvolvedores e pesquisadores na melhoria de suas diretrizes sobre como evitar e monitorar a degradação do design. / [en] 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.
2

[pt] REVELANDO AS FACETAS SOCIAIS E TÉCNICAS DA DEGRADAÇÃO DO DESIGN NA REVISÃO DE CÓDIGO MODERNA / [en] UNVEILING SOCIAL AND TECHNICAL FACETS OF DESIGN DEGRADATION IN MODERN CODE REVIEW

ANDERSON GONCALVES UCHOA 08 October 2021 (has links)
[pt] O design de software é uma preocupação fundamental na revisão de código, por meio da qual os desenvolvedores discutem ativamente e melhoram cada mudança de software. No entanto, a revisão de código é uma tarefa colaborativa influenciada por aspectos técnicos e sociais. Consequentemente, esses aspectos podem desempenhar um papel fundamental em como o design de software se degrada. Eles podem contribuir para acelerar ou reverter a degradação do design durante o processo de revisão de cada mudança. No entanto, há pouco entendimento sobre: (i) o impacto da revisão do código e suas práticas na degradação do design ao longo do tempo; e (ii) em que medida os aspectos sociais e técnicos estão relacionados com a redução ou aumento da degradação do design. Abordamos essas limitações motivadas por dois objetivos. Nosso primeiro objetivo é fornecer uma caracterização de como as revisões de código modernas afetam a degradação do design durante a manutenção do software. Consideramos vários aspectos técnicos e sociais para estudar o impacto das revisões de código, utilizando técnicas de aprendizado de máquina. Nosso segundo objetivo é explorar o papel dos aspectos técnicos e sociais em distinguir e predizer mudanças de design (não) impactantes durante as revisões de código. Uma mudança de design é considerada impactante quando varia a densidade e a diversidade dos sintomas de degradação (ou seja, cheiros de código). Esses objetivos foram abordados em dois estudos empíricos. Nosso primeiro estudo relata uma caracterização do impacto das revisões de código na evolução dos sintomas de degradação ao longo de cada revisão de código. Também levamos em consideração quando havia um objetivo explícito ou discussões sobre design de software. Nosso segundo estudo relata uma análise dos aspectos técnicos e sociais que influenciam as mudanças ao longo de todas as revisões em uma única revisão de código. Então, pudemos observar o papel dos aspectos sociais em distinguir e predizer mudanças impactantes no design. Nossos resultados mostram que a maioria das revisões de código tem pouco ou nenhum impacto na degradação, mesmo com discussões explícitas de design. Longas discussões e uma alta taxa de discordância dos revisores aumentam o risco de degradação. Os aspectos sociais e técnicos são capazes de distinguir mudanças de design (não) impactantes. Em resumo, nossos resultados nos forneceram uma melhor compreensão dos aspectos influentes que nos ajudam a derivar diretrizes para mitigar a degradação durante as revisões de código. Nossos resultados também fornecem insights para projetar novas ferramentas de revisão de código, também capazes de alertar os desenvolvedores com antecedência sobre o impacto prejudicial do design ao longo das revisões de código. / [en] Software design is a key concern in code review through which developers actively discuss and improve each software change. Nevertheless, code review is a collaborative task influenced by technical and social aspects. Consequently, these aspects can play a key role in how software design degrades. They can contribute to accelerating or reversing design degradation during the process of each single change s review. However, there is little understanding about: (i) the impact of code review and their practices on design degradation over time; and (ii) to what extent social and technical aspects are related to the reduction or increase of design degradation.We addressed these limitations driven by two goals. Our first goal is to provide a characterization of how modern code reviews impact design degradation during software maintenance. We consider various technical and socials aspects to study the code reviews impact. Our second goal is to explore the role of technical and social aspects in distinguishing and predicting (un)impactful design changes during code reviews, using machine learning techniques. A design change is considered impactful when it varies the density and diversity of degradation symptoms (i.e., code smells). These goals were addressed with two empirical studies. Our first study reports a characterization of the impact of code reviews on the evolution of degradation symptoms along each code review. We also took into consideration when there was an explicit goal or discussions around software design. Our second study reports an analysis of technical and social aspects influencing changes along all the revisions within a single code review. Then, we could observe the role of social aspects in distinguishing and predicting design impactful changes. Our results show that the majority of code reviews have little or no impact on degradation, even with explicit design discussions. Long discussions and a high rate of reviewers disagreement increase the risk of degradation. Both social and technical aspects are able to distinguish design (un)impactful changes. In summary, our results provided us with a better understanding of influential aspects that help us in deriving guidelines to mitigate degradation during code reviews. Our results also provide insights to design a new code review tool salso able to warn developers early about the harmful design impact along code reviews.

Page generated in 0.0321 seconds