[pt] RELEVANDO FATORES INTERATIVOS NA DEGRADAÇÃO DO DESIGN DE SOFTWARE

[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...

Descripción completa

Detalles Bibliográficos
Autor: DANIEL JOSE BARBOSA COUTINHO
Tipo de recurso: tesis doctoral
Estado:Versión publicada
Fecha de publicación:2021
País:Brasil
Institución:Pontifícia Universidade Católica do Rio de Janeiro (PUC-RIO)
Repositorio:Repositório Institucional da PUC-RIO (Projeto Maxwell)
Idioma:inglés
OAI Identifier:oai:MAXWELL.puc-rio.br:56818
Acceso en línea:https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=56818&idi=1
https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=56818&idi=2
http://doi.org/10.17771/PUCRio.acad.56818
Access Level:acceso abierto
Palabra clave:[pt] QUALIDADE DE SOFTWARE
[pt] DEGRADACAO DO DESIGN
[pt] METRICAS DE SOFTWARE
[en] SOFTWARE QUALITY
[en] DESIGN DEGRADATION
[en] SOFTWARE METRICS
Descripción
Sumario:[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.