[en] ON THE RELATION BETWEEN REFACTORING AND CRITICAL INTERNAL ATTRIBUTES WHEN EVOLVING SOFTWARE FEATURES

Detalhes bibliográficos
Ano de defesa: 2021
Autor(a) principal: EDUARDO MOREIRA FERNANDES
Orientador(a): Não Informado pela instituição
Banca de defesa: Não Informado pela instituição
Tipo de documento: Tese
Tipo de acesso: Acesso aberto
Idioma: eng
Instituição de defesa: MAXWELL
Programa de Pós-Graduação: Não Informado pela instituição
Departamento: Não Informado pela instituição
País: Não Informado pela instituição
Palavras-chave em Português:
Link de acesso: https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=53129&idi=1
https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=53129&idi=2
http://doi.org/10.17771/PUCRio.acad.53129
Resumo: [pt] Contexto: Várias mudanças de código aplicadas ao evoluir funcionalidades visam melhorar atributos internos de qualidade como coesão. Tais mudanças são as refatorações. Refatorações não dirigidas podem piorar, e não melhorar, atributos internos. Porém, o saber atual é insuficiente para gerir atributos internos durante a evolução do sistema. Objetivo: Nosso primeiro objetivo é entender como refatorações afetam atributos internos ao evoluir sistemas, mitigando limitações de escopo de estudos anteriores. Nosso segundo objetivo é atender uma carência por evidência quantitativa sobre como gerir atributos internos críticos via refatorações ao evoluir sistemas. Um atributo interno é crítico se sua medição assume valores anômalos. Baixa coesão é um exemplo de atributo crítico. Método: O primeiro estudo estende uma avaliação quantitativa da relação entre refatorações e cinco atributos internos: acoplamento, coesão, complexidade, herança e tamanho. Incluímos novas análises e resolvemos ameaças à validade da literatura. O segundo estudo contém estudos de caso qualitativos baseados em grupo focal. Em dois casos industriais, promovemos discussões sobre o quanto (e por que) atributos críticos são relevante ao evoluir funcionalidades. Por fim, cruzamos os achados dos dois estudos para discutir como gerir atributos críticos via refatoração ao evoluir funcionalidades. Resultados: Aproximadamente 64 por cento das refatorações melhoram ou não afetam os atributos internos. Desenvolvedores parecem refatorar até melhorar os atributos mais relevantes, ignorando outros atributos internos possivelmente críticos. Baixa coesão e alta complexidade são percebidos como relevantes e tornam mais difícil evoluir funcionalidades. Alto acoplamento, herança larga e tamanho largo são percebidos como irrelevantes ao implementar funcionalidades especialmente complexas, por exemplo. Ao cruzar dados entre estudos, discutimos como refatorações podem melhorar atributos internos, inclusive atributos críticos. Conclusões: Os achados dos nossos estudos podem apoiar a gestão de atributos críticos relevantes aos desenvolvedores, mas também preservar outros atributos que podem se tornar críticos.
id PUC_RIO-1_2b7d3e4b51644fdb656d794d1c0b11a0
oai_identifier_str oai:MAXWELL.puc-rio.br:53129
network_acronym_str PUC_RIO-1
network_name_str Repositório Institucional da PUC-RIO (Projeto Maxwell)
repository_id_str
spelling [en] ON THE RELATION BETWEEN REFACTORING AND CRITICAL INTERNAL ATTRIBUTES WHEN EVOLVING SOFTWARE FEATURES [pt] SOBRE A RELAÇÃO ENTRE REFATORAÇÃO E ATRIBUTOS INTERNOS CRÍTICOS AO EVOLUIR FUNCIONALIDADES DE SOFTWARE [pt] GRUPO FOCAL[pt] MINERACAO DE REPOSITORIO DE SOFTWARE[pt] ATRIBUTO INTERNO DE QUALIDADE[pt] FUNCIONALIDADE[pt] REFATORACAO[en] FOCUS GROUP[en] MINING SOFTWARE REPOSITORY[en] INTERNAL QUALITY ATTRIBUTES[en] FUNCTIONALITY[en] REFACTORING[pt] Contexto: Várias mudanças de código aplicadas ao evoluir funcionalidades visam melhorar atributos internos de qualidade como coesão. Tais mudanças são as refatorações. Refatorações não dirigidas podem piorar, e não melhorar, atributos internos. Porém, o saber atual é insuficiente para gerir atributos internos durante a evolução do sistema. Objetivo: Nosso primeiro objetivo é entender como refatorações afetam atributos internos ao evoluir sistemas, mitigando limitações de escopo de estudos anteriores. Nosso segundo objetivo é atender uma carência por evidência quantitativa sobre como gerir atributos internos críticos via refatorações ao evoluir sistemas. Um atributo interno é crítico se sua medição assume valores anômalos. Baixa coesão é um exemplo de atributo crítico. Método: O primeiro estudo estende uma avaliação quantitativa da relação entre refatorações e cinco atributos internos: acoplamento, coesão, complexidade, herança e tamanho. Incluímos novas análises e resolvemos ameaças à validade da literatura. O segundo estudo contém estudos de caso qualitativos baseados em grupo focal. Em dois casos industriais, promovemos discussões sobre o quanto (e por que) atributos críticos são relevante ao evoluir funcionalidades. Por fim, cruzamos os achados dos dois estudos para discutir como gerir atributos críticos via refatoração ao evoluir funcionalidades. Resultados: Aproximadamente 64 por cento das refatorações melhoram ou não afetam os atributos internos. Desenvolvedores parecem refatorar até melhorar os atributos mais relevantes, ignorando outros atributos internos possivelmente críticos. Baixa coesão e alta complexidade são percebidos como relevantes e tornam mais difícil evoluir funcionalidades. Alto acoplamento, herança larga e tamanho largo são percebidos como irrelevantes ao implementar funcionalidades especialmente complexas, por exemplo. Ao cruzar dados entre estudos, discutimos como refatorações podem melhorar atributos internos, inclusive atributos críticos. Conclusões: Os achados dos nossos estudos podem apoiar a gestão de atributos críticos relevantes aos desenvolvedores, mas também preservar outros atributos que podem se tornar críticos.[en] Context: Several software changes applied while evolving software features aim at improving internal quality attributes, e.g. cohesion. These changes are the refactorings. Non-assisted refactorings might worsen, rather than improve, internal attributes. However, current knowledge is insufficient for managing internal attributes during software evolution. Objective: Our first objective is assessing how refactorings affect internal attributes during software evolution by filling gaps of past work on study scope. Our second objective is filling gaps of qualitative evidence on how to manage critical internal attributes via refactorings while evolving features. An internal attribute is critical when its measurement has anomalous values. Low cohesion is an example of critical attribute. Method: Our first study extends a large quantitative assessment of the relationship between refactorings and five internal attributes: cohesion, complexity, coupling, inheritance, and size. We include a more detailed statistical analysis and address major threats to validity of past work. Our second study is a qualitative case study based on focus group. We selected two industry cases to promote discussions on how much (and why) critical attributes are relevant while evolving features. Finally, we crossed the findings from both conducted studies aimed at discussing how critical attributes can be addressed via refactoring when evolving features. Results: About 64 per cent of refactorings either improve or keep the internal attributes unaffected. Developers seem to perform refactorings until the most relevant internal attributes are improved, thereby neglecting other internal attributes that may be critical. Low cohesion and high complexity are perceived as relevant because they often make evolving features harder than usual. High coupling, large inheritance, and large size are perceived as irrelevant when developers implement especially complex features. By crossing the findings from both studies, we discuss how refactorings can improve internal attributes, especially the critical ones. Conclusions: The findings of our studies can support managing critical attributes that developers typically find relevant, while preserving other attributes that may become critical.MAXWELLMARCOS KALINOWSKIMARCOS KALINOWSKIMARCOS KALINOWSKIEDUARDO MOREIRA FERNANDES2021-06-07info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/doctoralThesishttps://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=53129&idi=1https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=53129&idi=2http://doi.org/10.17771/PUCRio.acad.53129engreponame:Repositório Institucional da PUC-RIO (Projeto Maxwell)instname:Pontifícia Universidade Católica do Rio de Janeiro (PUC-RIO)instacron:PUC_RIOinfo:eu-repo/semantics/openAccess2022-08-19T00:00:00Zoai:MAXWELL.puc-rio.br:53129Repositório InstitucionalPRIhttps://www.maxwell.vrac.puc-rio.br/ibict.phpopendoar:5342022-08-19T00:00Repositório Institucional da PUC-RIO (Projeto Maxwell) - Pontifícia Universidade Católica do Rio de Janeiro (PUC-RIO)false
dc.title.none.fl_str_mv [en] ON THE RELATION BETWEEN REFACTORING AND CRITICAL INTERNAL ATTRIBUTES WHEN EVOLVING SOFTWARE FEATURES
[pt] SOBRE A RELAÇÃO ENTRE REFATORAÇÃO E ATRIBUTOS INTERNOS CRÍTICOS AO EVOLUIR FUNCIONALIDADES DE SOFTWARE
title [en] ON THE RELATION BETWEEN REFACTORING AND CRITICAL INTERNAL ATTRIBUTES WHEN EVOLVING SOFTWARE FEATURES
spellingShingle [en] ON THE RELATION BETWEEN REFACTORING AND CRITICAL INTERNAL ATTRIBUTES WHEN EVOLVING SOFTWARE FEATURES
EDUARDO MOREIRA FERNANDES
[pt] GRUPO FOCAL
[pt] MINERACAO DE REPOSITORIO DE SOFTWARE
[pt] ATRIBUTO INTERNO DE QUALIDADE
[pt] FUNCIONALIDADE
[pt] REFATORACAO
[en] FOCUS GROUP
[en] MINING SOFTWARE REPOSITORY
[en] INTERNAL QUALITY ATTRIBUTES
[en] FUNCTIONALITY
[en] REFACTORING
title_short [en] ON THE RELATION BETWEEN REFACTORING AND CRITICAL INTERNAL ATTRIBUTES WHEN EVOLVING SOFTWARE FEATURES
title_full [en] ON THE RELATION BETWEEN REFACTORING AND CRITICAL INTERNAL ATTRIBUTES WHEN EVOLVING SOFTWARE FEATURES
title_fullStr [en] ON THE RELATION BETWEEN REFACTORING AND CRITICAL INTERNAL ATTRIBUTES WHEN EVOLVING SOFTWARE FEATURES
title_full_unstemmed [en] ON THE RELATION BETWEEN REFACTORING AND CRITICAL INTERNAL ATTRIBUTES WHEN EVOLVING SOFTWARE FEATURES
title_sort [en] ON THE RELATION BETWEEN REFACTORING AND CRITICAL INTERNAL ATTRIBUTES WHEN EVOLVING SOFTWARE FEATURES
author EDUARDO MOREIRA FERNANDES
author_facet EDUARDO MOREIRA FERNANDES
author_role author
dc.contributor.none.fl_str_mv MARCOS KALINOWSKI
MARCOS KALINOWSKI
MARCOS KALINOWSKI
dc.contributor.author.fl_str_mv EDUARDO MOREIRA FERNANDES
dc.subject.por.fl_str_mv [pt] GRUPO FOCAL
[pt] MINERACAO DE REPOSITORIO DE SOFTWARE
[pt] ATRIBUTO INTERNO DE QUALIDADE
[pt] FUNCIONALIDADE
[pt] REFATORACAO
[en] FOCUS GROUP
[en] MINING SOFTWARE REPOSITORY
[en] INTERNAL QUALITY ATTRIBUTES
[en] FUNCTIONALITY
[en] REFACTORING
topic [pt] GRUPO FOCAL
[pt] MINERACAO DE REPOSITORIO DE SOFTWARE
[pt] ATRIBUTO INTERNO DE QUALIDADE
[pt] FUNCIONALIDADE
[pt] REFATORACAO
[en] FOCUS GROUP
[en] MINING SOFTWARE REPOSITORY
[en] INTERNAL QUALITY ATTRIBUTES
[en] FUNCTIONALITY
[en] REFACTORING
description [pt] Contexto: Várias mudanças de código aplicadas ao evoluir funcionalidades visam melhorar atributos internos de qualidade como coesão. Tais mudanças são as refatorações. Refatorações não dirigidas podem piorar, e não melhorar, atributos internos. Porém, o saber atual é insuficiente para gerir atributos internos durante a evolução do sistema. Objetivo: Nosso primeiro objetivo é entender como refatorações afetam atributos internos ao evoluir sistemas, mitigando limitações de escopo de estudos anteriores. Nosso segundo objetivo é atender uma carência por evidência quantitativa sobre como gerir atributos internos críticos via refatorações ao evoluir sistemas. Um atributo interno é crítico se sua medição assume valores anômalos. Baixa coesão é um exemplo de atributo crítico. Método: O primeiro estudo estende uma avaliação quantitativa da relação entre refatorações e cinco atributos internos: acoplamento, coesão, complexidade, herança e tamanho. Incluímos novas análises e resolvemos ameaças à validade da literatura. O segundo estudo contém estudos de caso qualitativos baseados em grupo focal. Em dois casos industriais, promovemos discussões sobre o quanto (e por que) atributos críticos são relevante ao evoluir funcionalidades. Por fim, cruzamos os achados dos dois estudos para discutir como gerir atributos críticos via refatoração ao evoluir funcionalidades. Resultados: Aproximadamente 64 por cento das refatorações melhoram ou não afetam os atributos internos. Desenvolvedores parecem refatorar até melhorar os atributos mais relevantes, ignorando outros atributos internos possivelmente críticos. Baixa coesão e alta complexidade são percebidos como relevantes e tornam mais difícil evoluir funcionalidades. Alto acoplamento, herança larga e tamanho largo são percebidos como irrelevantes ao implementar funcionalidades especialmente complexas, por exemplo. Ao cruzar dados entre estudos, discutimos como refatorações podem melhorar atributos internos, inclusive atributos críticos. Conclusões: Os achados dos nossos estudos podem apoiar a gestão de atributos críticos relevantes aos desenvolvedores, mas também preservar outros atributos que podem se tornar críticos.
publishDate 2021
dc.date.none.fl_str_mv 2021-06-07
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/doctoralThesis
format doctoralThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=53129&idi=1
https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=53129&idi=2
http://doi.org/10.17771/PUCRio.acad.53129
url https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=53129&idi=1
https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=53129&idi=2
http://doi.org/10.17771/PUCRio.acad.53129
dc.language.iso.fl_str_mv eng
language eng
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.publisher.none.fl_str_mv MAXWELL
publisher.none.fl_str_mv MAXWELL
dc.source.none.fl_str_mv reponame:Repositório Institucional da PUC-RIO (Projeto Maxwell)
instname:Pontifícia Universidade Católica do Rio de Janeiro (PUC-RIO)
instacron:PUC_RIO
instname_str Pontifícia Universidade Católica do Rio de Janeiro (PUC-RIO)
instacron_str PUC_RIO
institution PUC_RIO
reponame_str Repositório Institucional da PUC-RIO (Projeto Maxwell)
collection Repositório Institucional da PUC-RIO (Projeto Maxwell)
repository.name.fl_str_mv Repositório Institucional da PUC-RIO (Projeto Maxwell) - Pontifícia Universidade Católica do Rio de Janeiro (PUC-RIO)
repository.mail.fl_str_mv
_version_ 1856395952498147328