Please use this identifier to cite or link to this item: http://hdl.handle.net/1843/56371
Full metadata record
DC FieldValueLanguage
dc.contributor.advisor1Marco Tulio de Oliveira Valentept_BR
dc.contributor.advisor1Latteshttp://lattes.cnpq.br/2147157840592913pt_BR
dc.contributor.advisor-co1André Cavalcante Horapt_BR
dc.contributor.referee1Elisa Yumi Nakagawapt_BR
dc.contributor.referee2Fernando José Castor de Lima Filhopt_BR
dc.contributor.referee3Eduardo Magno Lages Figueiredopt_BR
dc.contributor.referee4Tayana Uchôa Contept_BR
dc.creatorAline Norberta de Britopt_BR
dc.creator.Latteshttp://lattes.cnpq.br/5513766633619869pt_BR
dc.date.accessioned2023-07-17T12:51:58Z-
dc.date.available2023-07-17T12:51:58Z-
dc.date.issued2023-03-10-
dc.identifier.urihttp://hdl.handle.net/1843/56371-
dc.description.abstractFrequentemente, desenvolvedores refatoram o código, criando novas entidades ou alterando estruturas existentes. Algumas vezes, estas operações são realizadas em um curto período. Em outros casos, as operações geram sequências de modificações realizadas ao longo do tempo, um cenário que usualmente não é considerado na literatura. Neste contexto, o principal objetivo deste trabalho é caracterizar e compreender refatorações realizadas ao longo do tempo. Para tanto, propõe-se uma nova abstração denominada grafos de refatoração (refactoring graphs). Neste modelo baseado em grafos, os vértices representam métodos ou funções e as arestas referem-se às operações de refatoração. Esta pesquisa está organizada em três grandes trabalhos. Inicialmente, define-se a abstração proposta, descrevendo os principais elementos e provendo um conjunto de scripts que permite a detecção de grafos de refatoração em sistemas de software reais. Em seguida, na segunda unidade de trabalho, caracteriza-se aproximadamente 1,5 mil grafos de refatoração provenientes de projetos Java e JavaScript populares hospedados no GitHub. Os resultados confirmam que as refatorações não são apenas operações únicas, mas também sequências de transformações realizadas ao longo do tempo. Além disso, um estudo qualitativo é realizado, no qual contactou-se os desenvolvedores responsáveis por subgrafos que descrevem grandes operações, visando identificar as suas principais motivações. Por fim, na última unidade de trabalho, explora-se aplicações para a abstração proposta na tese. Inicialmente, avalia-se operações realizadas por alunos de uma disciplina de Engenharia de Software, contando com os grafos de refatoração para compreender e inspecionar as operações. Logo, assume-se a perspectiva de professor que almeja entender atividades práticas neste contexto. Além disso, propõe-se um catálogo de refatorações comumente realizadas ao longo do tempo, denominadas refatorações compostas. Os grafos de refatoração são utilizados para documentar e ilustrar instâncias do catálogo detectadas em um oráculo com centenas de refatorações e no histórico de projetos populares hospedados no GitHub.pt_BR
dc.description.resumoFrequently, practitioners refactor their code, producing new entities or changing the structure of existing ones. Sometimes, these transformations are performed in a constrained time frame. In other cases, they generate sequences of modifications performed over a long time period, a scenario not usually considered in the literature. In this context, the main goal of this Ph.D. thesis is to characterize and understand refactoring operations performed over time. For this purpose, we introduce a novel abstraction for reasoning about refactorings, named refactoring graphs. In this graph-based abstraction, nodes represent methods or functions, and edges refer to refactoring operations. We organize the research into three major working units. We start by defining the proposed abstraction, describing the elements and providing a set of scripts to detect refactoring graphs in real-world projects. Then, in the second working unit, we characterize about 1.5K refactoring subgraphs from popular Java and JavaScript projects hosted on GitHub. The results confirmed our hypothesis that refactorings are not only sole operations. There are also sequences of transformations performed over time. Besides, we also perform a qualitative study, in which we contact developers responsible by subgraphs describing large operations, aiming to identify their main reasons to perform such operations. Finally, in the last working unit, we explore applications of the proposed graph-based model. First, we evaluate refactoring tasks performed by undergraduate students from a Software Engineering course, relying on refactoring graphs to understand and inspect the operations. In other words, we assume a professor's perspective who needs to understand practical exercises on refactoring. We also propose a catalog of common refactorings performed over time, which we decide to call composite refactorings. We rely on refactoring graphs to document and illustrate instances of composites detected in an oracle with hundreds of operations and in the history of popular projects hosted on GitHub.pt_BR
dc.description.sponsorshipCNPq - Conselho Nacional de Desenvolvimento Científico e Tecnológicopt_BR
dc.description.sponsorshipFAPEMIG - Fundação de Amparo à Pesquisa do Estado de Minas Geraispt_BR
dc.description.sponsorshipCAPES - Coordenação de Aperfeiçoamento de Pessoal de Nível Superiorpt_BR
dc.languageengpt_BR
dc.publisherUniversidade Federal de Minas Geraispt_BR
dc.publisher.countryBrasilpt_BR
dc.publisher.departmentICX - DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃOpt_BR
dc.publisher.programPrograma de Pós-Graduação em Ciência da Computaçãopt_BR
dc.publisher.initialsUFMGpt_BR
dc.rightsAcesso Abertopt_BR
dc.subjectRefactoringpt_BR
dc.subjectRefactoring graphspt_BR
dc.subjectMining software repositoriespt_BR
dc.subjectSoftware evolutionpt_BR
dc.subject.otherComputação – Tesespt_BR
dc.subject.otherEngenharia de software – Tesespt_BR
dc.subject.otherGrafos de refatoração – Tesespt_BR
dc.subject.otherMineração de repositórios de software – Tesespt_BR
dc.titleRefactoring graphs: reasoning about refactoring over timept_BR
dc.typeTesept_BR
dc.identifier.orcidhttps://orcid.org/0000-0002-7088-4935pt_BR
Appears in Collections:Teses de Doutorado

Files in This Item:
File Description SizeFormat 
Refactoring graphs: reasoning about refactoring over time.pdf17.95 MBAdobe PDFView/Open


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.