Please use this identifier to cite or link to this item: http://hdl.handle.net/1843/52752
Full metadata record
DC FieldValueLanguage
dc.contributor.advisor1Marco Túlio de Oliveira Valentept_BR
dc.contributor.advisor1Latteshttp://lattes.cnpq.br/2147157840592913pt_BR
dc.contributor.referee1Rohit Gheyipt_BR
dc.contributor.referee2André Cavalcante Horapt_BR
dc.contributor.referee3Eduardo Magno Lages Figueiredopt_BR
dc.contributor.referee4Paulo Henrique Monteiro Borbapt_BR
dc.creatorDanilo Ferreira e Silvapt_BR
dc.creator.Latteshttp://lattes.cnpq.br/5675610909926344pt_BR
dc.date.accessioned2023-05-03T15:21:41Z-
dc.date.available2023-05-03T15:21:41Z-
dc.date.issued2020-02-06-
dc.identifier.urihttp://hdl.handle.net/1843/52752-
dc.description.abstractRefatoração de código é uma prática importante no desenvolvimento de sistemas e um fator essencial para entender a evolução de um software. Sendo assim, pesquisadores frequentemente reportam e discutem a prática de refatoração em sistemas reais. Infelizmente, estudos empíricos sobre refatoração são frequentemente limitados pela dificuldade de se obter informações confiáveis sobre a atividade de refatoração e muitas questões permanecem em aberto. Nesta tese, primeiro investigamos uma importante questão: por que desenvolvedores refatoram? Para esse fim, desenvolvemos dois estudos empíricos em larga escala, baseados na mineração de refatorações em históricos de versões. Inicialmente, investigamos a relação entre a refatoração Extrair Método e reúso de código. Após analizar mais de 10 mil revisões de 10 sistemas, encontramos evidências de que em 56,9% dos casos tal refatoração é motivada pelo reúso de código. Em seguida, investigamos as motivações para refatorações encontradas em sistemas de código aberto com base em respostas dos próprios desenvolvedores que as aplicaram. Como resultado, compilamos um catálogo com 44 motivações distintas para 12 tipos de refatorações. Tal catálogo revela que o esforço de refatoração é mais direcionado pela necessidade de evolução do sistema do que pela resolução de problemas de projeto conhecidos como code smells. Notadamente, Extrair Método é a refatoração mais versátil, servindo a 11 propósitos diferentes. Em uma segunda linha de pesquisa, nós propomos RefDiff, uma nova ferramenta para mineração de refatorações em histórico de versões, com suporte a múltiplas linguagens de programação e alta precisão. Nossa ferramenta introduz um algoritmo de detecção de refatorações baseado na Code Structure Tree (CST)—uma representação do código fonte que abstrai as particularidades das linguagens de programação—e em uma métrica de similaridade de código baseada na técnica TF-IDF. Apesar do seu projeto multilinguagem, nossa avaliação revelou que nossa ferramenta tem precisão (96%) e revocação (80%) equivalentes ao estado da arte em ferramentas especializadas na linguagem Java.pt_BR
dc.description.resumoRefactoring is an important aspect of software development and a key factor to understand software evolution. As such, researchers often report and discuss refactoring practice on real software projects. Unfortunately, empirical studies on refactoring are often hindered by the difficulty of obtaining reliable information of refactoring activity, and many questions remain open. In this thesis, we first investigate an overarching question: why do developers refactor? To this end, we developed two large-scale empirical studies that rely on mining refactorings from version histories. Initially, we investigated the relationship between Extract Method refactoring and code reuse. After analyzing over 10,000 revisions of 10 open source systems, we found evidence that, in 56.9% of the cases, Extract Method is motivated by code reuse. Next, we investigated the motivations for refactorings applied to open source systems based on feedback from the developers who performed the refactorings. By applying thematic analysis on the collected responses, we compiled a catalogue of 44 distinct motivations for 12 well-known refactoring types. We found that refactoring activity is mainly driven by changes in the requirements and much less by code smells. Notably, Extract Method is the most versatile refactoring operation, serving 11 different purposes. Additionally, we found evidence that the IDE used by the developers affects the adoption of automated refactoring tools. As a second line of research, we propose RefDiff, a novel approach to mine refactorings from version histories that supports multiple programming languages and offers high precision and recall. Our tool leverages existing techniques and introduces a novel refactoring detection algorithm that relies on the Code Structure Tree (CST)—a simple yet powerful representation of the source code that abstracts away the specificities of particular programming languages—and on a code similarity metric based on TF-IDF technique. Despite its language-agnostic design, our evaluation shows that RefDiff’s precision (96%) and recall (80%) are on par with state-of-the-art refactoring detection approaches specialized in the Java language.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.subjectSoftware Evolutionpt_BR
dc.subjectMining Software Repositoriespt_BR
dc.subject.otherComputação – Tesespt_BR
dc.subject.otherRefatoração de softwarept_BR
dc.subject.otherEngenharia de Softwarept_BR
dc.subject.otherEvolução de softwarept_BR
dc.subject.otherMineração de repositórios de software.pt_BR
dc.titleMining refactorings from version histories: studies, tools, and applicationspt_BR
dc.typeTesept_BR
Appears in Collections:Teses de Doutorado

Files in This Item:
File Description SizeFormat 
phd_thesis_danilo.pdf3.24 MBAdobe PDFView/Open


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