[en] ASSESSING THE BUG-PRONENESS OF REFACTORED CODE: LONGITUDINAL MULTI-PROJECT STUDIES

Detalhes bibliográficos
Autor(a) principal: ISABELLA VIEIRA FERREIRA
Data de Publicação: 2018
Tipo de documento: Tese
Idioma: eng
Título da fonte: Repositório Institucional da PUC-RIO (Projeto Maxwell)
Texto Completo: https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=35428&idi=1
https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=35428&idi=2
http://doi.org/10.17771/PUCRio.acad.35428
Resumo: [pt] Os elementos de código geralmente mudam ao longo da evolução do sistema, o que implica em uma eventual degradação estrutural do código fonte. Sintomas recorrentes de tal degradação são chamados anomalias de código. Estudos sugerem que quanto mais anomalias de código afetam um sistema, mais alta se torna a propensão a bugs dos elementos de código. Para lidar com tal degradação da qualidade estrutural do código, desenvolvedores geralmente aplicam refatorações no código fonte. No entanto, aplicar refatorações pode não ser suficiente para reduzir a propensão a bugs dos elementos de código degradados. Um estudo recente sugere que refatorações induzem bugs frequentemente. No entanto, os autores não analisam se o código refatorado está, de fato, diretamente relacionado à introdução de bugs. Com isso, nesta dissertação, realizamos dois estudos longitudinais de múltiplos projetos para avaliar a propensão a bugs do código refatorado. Nossa metodologia teve como objetivo abordar várias limitações de estudos anteriores. Por exemplo, definimos duas propriedades complementares da propensão a bugs do código refatorado, sendo elas, frequência e distância. Enquanto a primeira propriedade quantifica a frequência com que um código refatorado está relacionado a bugs que emergiram no código fonte, a distância quantifica o quão próximo um bug surge depois que uma refatoração é aplicada. Nosso primeiro estudo tem como objetivo avaliar a propensão a bugs de refatorações isoladas. Primeiro, nossos resultados mostram que 80 porcento dos elementos degradados que se tornaram bugs não foram previamente refatorados. Este resultado implica que um código refatorado é menos propenso a bugs do que um código não refatorado. Em segundo lugar, em 75 porcento das vezes um bug surge depois de 7 mudanças feitas a partir da operação de refatoração, o que geralmente corresponde à 3 meses nos projetos analisados. Nosso segundo estudo tem como objetivo avaliar a propensão a bugs de refatorações em lote, ou seja, refatorações aplicadas em sequência. Nossos resultados mostram que, na maioria dos casos, o código refatorado em lotes é mais resiliente à introdução de bugs do que o código refatorado por meio de refatorações isoladas.
id PUC_RIO-1_ca281491a223b09a9b53f149d6b9fe91
oai_identifier_str oai:MAXWELL.puc-rio.br:35428
network_acronym_str PUC_RIO-1
network_name_str Repositório Institucional da PUC-RIO (Projeto Maxwell)
repository_id_str 534
spelling [en] ASSESSING THE BUG-PRONENESS OF REFACTORED CODE: LONGITUDINAL MULTI-PROJECT STUDIES[pt] AVALIANDO A PROPENSÃO A BUGS DO CÓDIGO REFATORADO: ESTUDOS LONGITUDINAIS MULTIPROJETOS[pt] REFATORACAO[pt] ESTUDO EMPIRICO[pt] PROPENSAO A BUGS[pt] DEGRADACAO ESTRUTURAL DO CODIGO-FONTE[pt] MANUTENCAO DE SOFTWARE[en] REFACTORING[en] EMPIRICAL STUDY[en] BUG-PRONENESS[en] CODE DEGRADATION[en] SOFTWARE MAINTENANCE[pt] Os elementos de código geralmente mudam ao longo da evolução do sistema, o que implica em uma eventual degradação estrutural do código fonte. Sintomas recorrentes de tal degradação são chamados anomalias de código. Estudos sugerem que quanto mais anomalias de código afetam um sistema, mais alta se torna a propensão a bugs dos elementos de código. Para lidar com tal degradação da qualidade estrutural do código, desenvolvedores geralmente aplicam refatorações no código fonte. No entanto, aplicar refatorações pode não ser suficiente para reduzir a propensão a bugs dos elementos de código degradados. Um estudo recente sugere que refatorações induzem bugs frequentemente. No entanto, os autores não analisam se o código refatorado está, de fato, diretamente relacionado à introdução de bugs. Com isso, nesta dissertação, realizamos dois estudos longitudinais de múltiplos projetos para avaliar a propensão a bugs do código refatorado. Nossa metodologia teve como objetivo abordar várias limitações de estudos anteriores. Por exemplo, definimos duas propriedades complementares da propensão a bugs do código refatorado, sendo elas, frequência e distância. Enquanto a primeira propriedade quantifica a frequência com que um código refatorado está relacionado a bugs que emergiram no código fonte, a distância quantifica o quão próximo um bug surge depois que uma refatoração é aplicada. Nosso primeiro estudo tem como objetivo avaliar a propensão a bugs de refatorações isoladas. Primeiro, nossos resultados mostram que 80 porcento dos elementos degradados que se tornaram bugs não foram previamente refatorados. Este resultado implica que um código refatorado é menos propenso a bugs do que um código não refatorado. Em segundo lugar, em 75 porcento das vezes um bug surge depois de 7 mudanças feitas a partir da operação de refatoração, o que geralmente corresponde à 3 meses nos projetos analisados. Nosso segundo estudo tem como objetivo avaliar a propensão a bugs de refatorações em lote, ou seja, refatorações aplicadas em sequência. Nossos resultados mostram que, na maioria dos casos, o código refatorado em lotes é mais resiliente à introdução de bugs do que o código refatorado por meio de refatorações isoladas.[en] Programs often change along the system evolution, which implies an eventual code structure degradation. Recurring symptoms of such degradation are code smells. Studies suggest that the more frequently code smells affect a system, the higher becomes the bug-proneness of the code elements. To tackle code structural quality degradation, developers often apply refactorings on smelly program elements. However, applying refactorings might not suffice to reduce the bug-proneness of such degraded program elements. Previous empirical studies do not systematically analyze the bug-proneness of refactored code. Even though a recent study suggests that refactoring induces bugs frequently, the authors do not analyze to what extent refactored code is indeed closely related to the bug occurrence. Thus, in this dissertation, we conducted two longitudinal multi-project studies to assess the bugproneness of refactored code. Our methodology aimed to address various limitations of previous studies. For instance, we have defined two complementary properties of the bug-proneness of refactored code, i.e., frequency and distance. While the former quantifies how often a refactored code is related to emerging bugs, the latter quantifies how close a bug emerges after a refactoring has been applied. The quantitative analysis of such properties was complemented by a manual analysis of refactorings closely related to the bug occurrence. Our first study aims at assessing the bug-proneness of code refactored through isolated refactorings, i.e., a single refactoring operation not performed in conjunction with other refactoring operations. This study reveals that 80 per cent of the smelly elements that became buggy were not previously refactored. This result suggests the refactored code is much less bug-prone than non-refactored code. Moreover, in 75 per cent of the times, a bug emerges in 7 changes far from the refactoring operation; this amount of changes usually corresponds to 3 months in the analyzed projects. Our second study aims at assessing the bug-proneness of code elements refactored through batch refactorings, i.e., a sequence of inter-related refactoring operations. Our results show that code refactored through batches is often more resilient to the introduction of bugs as compared to code refactored through isolated refactorings.MAXWELLALESSANDRO FABRICIO GARCIAALESSANDRO FABRICIO GARCIAALESSANDRO FABRICIO GARCIAISABELLA VIEIRA FERREIRA2018-10-19info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/doctoralThesishttps://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=35428&idi=1https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=35428&idi=2http://doi.org/10.17771/PUCRio.acad.35428engreponame: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/openAccess2018-10-19T00:00:00Zoai:MAXWELL.puc-rio.br:35428Repositório InstitucionalPRIhttps://www.maxwell.vrac.puc-rio.br/ibict.phpopendoar:5342018-10-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] ASSESSING THE BUG-PRONENESS OF REFACTORED CODE: LONGITUDINAL MULTI-PROJECT STUDIES
[pt] AVALIANDO A PROPENSÃO A BUGS DO CÓDIGO REFATORADO: ESTUDOS LONGITUDINAIS MULTIPROJETOS
title [en] ASSESSING THE BUG-PRONENESS OF REFACTORED CODE: LONGITUDINAL MULTI-PROJECT STUDIES
spellingShingle [en] ASSESSING THE BUG-PRONENESS OF REFACTORED CODE: LONGITUDINAL MULTI-PROJECT STUDIES
ISABELLA VIEIRA FERREIRA
[pt] REFATORACAO
[pt] ESTUDO EMPIRICO
[pt] PROPENSAO A BUGS
[pt] DEGRADACAO ESTRUTURAL DO CODIGO-FONTE
[pt] MANUTENCAO DE SOFTWARE
[en] REFACTORING
[en] EMPIRICAL STUDY
[en] BUG-PRONENESS
[en] CODE DEGRADATION
[en] SOFTWARE MAINTENANCE
title_short [en] ASSESSING THE BUG-PRONENESS OF REFACTORED CODE: LONGITUDINAL MULTI-PROJECT STUDIES
title_full [en] ASSESSING THE BUG-PRONENESS OF REFACTORED CODE: LONGITUDINAL MULTI-PROJECT STUDIES
title_fullStr [en] ASSESSING THE BUG-PRONENESS OF REFACTORED CODE: LONGITUDINAL MULTI-PROJECT STUDIES
title_full_unstemmed [en] ASSESSING THE BUG-PRONENESS OF REFACTORED CODE: LONGITUDINAL MULTI-PROJECT STUDIES
title_sort [en] ASSESSING THE BUG-PRONENESS OF REFACTORED CODE: LONGITUDINAL MULTI-PROJECT STUDIES
author ISABELLA VIEIRA FERREIRA
author_facet ISABELLA VIEIRA FERREIRA
author_role author
dc.contributor.none.fl_str_mv ALESSANDRO FABRICIO GARCIA
ALESSANDRO FABRICIO GARCIA
ALESSANDRO FABRICIO GARCIA
dc.contributor.author.fl_str_mv ISABELLA VIEIRA FERREIRA
dc.subject.por.fl_str_mv [pt] REFATORACAO
[pt] ESTUDO EMPIRICO
[pt] PROPENSAO A BUGS
[pt] DEGRADACAO ESTRUTURAL DO CODIGO-FONTE
[pt] MANUTENCAO DE SOFTWARE
[en] REFACTORING
[en] EMPIRICAL STUDY
[en] BUG-PRONENESS
[en] CODE DEGRADATION
[en] SOFTWARE MAINTENANCE
topic [pt] REFATORACAO
[pt] ESTUDO EMPIRICO
[pt] PROPENSAO A BUGS
[pt] DEGRADACAO ESTRUTURAL DO CODIGO-FONTE
[pt] MANUTENCAO DE SOFTWARE
[en] REFACTORING
[en] EMPIRICAL STUDY
[en] BUG-PRONENESS
[en] CODE DEGRADATION
[en] SOFTWARE MAINTENANCE
description [pt] Os elementos de código geralmente mudam ao longo da evolução do sistema, o que implica em uma eventual degradação estrutural do código fonte. Sintomas recorrentes de tal degradação são chamados anomalias de código. Estudos sugerem que quanto mais anomalias de código afetam um sistema, mais alta se torna a propensão a bugs dos elementos de código. Para lidar com tal degradação da qualidade estrutural do código, desenvolvedores geralmente aplicam refatorações no código fonte. No entanto, aplicar refatorações pode não ser suficiente para reduzir a propensão a bugs dos elementos de código degradados. Um estudo recente sugere que refatorações induzem bugs frequentemente. No entanto, os autores não analisam se o código refatorado está, de fato, diretamente relacionado à introdução de bugs. Com isso, nesta dissertação, realizamos dois estudos longitudinais de múltiplos projetos para avaliar a propensão a bugs do código refatorado. Nossa metodologia teve como objetivo abordar várias limitações de estudos anteriores. Por exemplo, definimos duas propriedades complementares da propensão a bugs do código refatorado, sendo elas, frequência e distância. Enquanto a primeira propriedade quantifica a frequência com que um código refatorado está relacionado a bugs que emergiram no código fonte, a distância quantifica o quão próximo um bug surge depois que uma refatoração é aplicada. Nosso primeiro estudo tem como objetivo avaliar a propensão a bugs de refatorações isoladas. Primeiro, nossos resultados mostram que 80 porcento dos elementos degradados que se tornaram bugs não foram previamente refatorados. Este resultado implica que um código refatorado é menos propenso a bugs do que um código não refatorado. Em segundo lugar, em 75 porcento das vezes um bug surge depois de 7 mudanças feitas a partir da operação de refatoração, o que geralmente corresponde à 3 meses nos projetos analisados. Nosso segundo estudo tem como objetivo avaliar a propensão a bugs de refatorações em lote, ou seja, refatorações aplicadas em sequência. Nossos resultados mostram que, na maioria dos casos, o código refatorado em lotes é mais resiliente à introdução de bugs do que o código refatorado por meio de refatorações isoladas.
publishDate 2018
dc.date.none.fl_str_mv 2018-10-19
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=35428&idi=1
https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=35428&idi=2
http://doi.org/10.17771/PUCRio.acad.35428
url https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=35428&idi=1
https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=35428&idi=2
http://doi.org/10.17771/PUCRio.acad.35428
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_ 1849967285895168000