Please use this identifier to cite or link to this item: http://hdl.handle.net/1843/59120
Full metadata record
DC FieldValueLanguage
dc.contributor.advisor1Marco Túlio de Oliveira Valentept_BR
dc.contributor.advisor1Latteshttp://lattes.cnpq.br/2147157840592913pt_BR
dc.contributor.referee1Marcelo de Almeida Maiapt_BR
dc.contributor.referee2Breno Bernard Nicolau de Françapt_BR
dc.contributor.referee3André Cavalcante Horapt_BR
dc.contributor.referee4Eduardo Magno Lages Figueiredopt_BR
dc.creatorFábio da Silva Ferreirapt_BR
dc.creator.Latteshttp://lattes.cnpq.br/8025083564194915pt_BR
dc.date.accessioned2023-10-04T16:05:27Z-
dc.date.available2023-10-04T16:05:27Z-
dc.date.issued2023-08-11-
dc.identifier.urihttp://hdl.handle.net/1843/59120-
dc.description.abstractFrameworks front-end baseados em JavaScript, como React e Vue, são ferramentas chave para implementar aplicações Web modernas. No entanto, devido à complexidade das interfaces Web, essas aplicações podem atingir centenas de componentes e arquivos de cédigo fonte. Consequentemente, os desenvolvedores front-end estão enfrentando desafios crescentes ao projetar e modularizar essas aplicações. No entanto, pouca pesquisa tem se aprofundado nos desafios de manutenção associados à adoção de tais frameworks. Especificamente, (1) falta-nos uma compreensão dos fatores que motivam a adoção desses frameworks, (2) falta-nos um catálogo de “code smells” comuns que podem surgir nos clientes desses frameworks, e, por fim, (3) faltam-nos informações sobre as operações de refatoração que os desenvolvedores realizam ao implementar sistemas Web usando esses frameworks. Nesse contexto, o principal objetivo desta tese de doutorado é auxiliar os desenvolvedores front-end na manutenção e evolução de seus sistemas. Para alcançar esse objetivo, apresentamos um catálogo de “code smells” comuns a esses sistemas, bem como um catálogo de refatorações que podem ser aplicadas para eliminar esses “smells” e, consequentemente, melhorar a qualidade do código front-end. Organizamos esta pesquisa em três unidades de trabalho principais. Começamos investigando os fatores que motivam a adoção de frameworks front-end em JavaScript. Particularmente, realizamos uma pesquisa com desenvolvedores de projetos JavaScript sobre sua motivação para adotar tais frameworks. No segundo estudo, propomos um catálogo de 12 “code smells” associados a problemas de design enfrentados pelos desenvolvedores ao implementar aplicações React. Além disso, para verificar se os “smells” identificados são prevalentes em projetos de software reais, também implementamos uma ferramenta chamada ReactSniffer para detectar os “smells” propostos. Como resultado, detectamos 2.565 ocorrências dos ”code smells” propostos nos 10 projetos mais populares do GitHub que utilizam React. Finalmente, em nosso último e terceiro estudo, investigamos as operações de refatoração realizadas com frequência por desenvolvedores ao manter e evoluir aplicações React. Após inspecionar manualmente 320 commits de refatoração realizados em projetos de código aberto, catalogamos 69 operações de refatoração distintas, das quais 25 são específicas para código React, 17 são adaptações de refatorações tradicionais para o contexto de React, 22 são refatorações tradicionais e seis são específicas para código JavaScript e CSS.pt_BR
dc.description.resumoJavaScript-based front-end frameworks, such as React and Vue, are key tools for implementing modern Web applications. However, due to the complexity of Web UIs, these applications can reach hundreds of components and source code files. Consequently, frontend developers are facing increasing challenges in designing and modularizing these applications. Surprisingly, only limited research has delved into the maintenance challenges associated with adopting such frameworks. Specifically, (1) we lack a deep understanding of the factors driving their adoption, (2) we lack a comprehensive catalog of common code smells that may arise in clients of these frameworks, and finally, (3) we lack information and documentation on the refactoring operations that developers perform when implementing Web-based systems using these frameworks. In this context, the main goal of this Ph.D. thesis is to assist JavaScript front-end developers in maintaining and evolving their systems. To achieve this goal, we introduce a catalog of code smells that are common in such systems, as well as a catalog of refactorings that can be applied to eliminate these smells and consequently improve the source code quality of front-end components. We organize the research into three major working units. We start by investigating the factors that motivate the adoption of JavaScript front-end frameworks. Notably, we survey developers of JavaScript projects about their motivation to adopt such frameworks. In the second study, we propose a catalog of 12 code smells associated with design problems developers face when using JavaScript front-end frameworks. We focus on React applications because it is currently the most popular JavaScript front-end framework. Moreover, to check whether the identified smells are prevalent in real software projects, we also implement a tool, called ReactSniffer, to detect the proposed smells. As a result, we detected 2,565 instances of the proposed code smells in the top-10 most popular GitHub projects that use React. Finally, in our last and third study, we investigate frequent refactoring operations developers perform when maintaining and evolving React applications. By manually inspecting 320 refactoring commits performed in open source projects, we catalog 69 distinct refactoring operations of which 25 are specific to React code, 17 are adaptations of traditional refactorings for the React context, 22 are traditional refactorings, and six are specific to JavaScript and CSS code.pt_BR
dc.description.sponsorshipCNPq - Conselho Nacional de Desenvolvimento Científico e Tecnológicopt_BR
dc.languageengpt_BR
dc.publisherUniversidade Federal de Minas Geraispt_BR
dc.publisher.countryBrasilpt_BR
dc.publisher.departmentICEX - INSTITUTO DE CIÊNCIAS EXATASpt_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.rights.urihttp://creativecommons.org/licenses/by-nc-nd/3.0/pt/*
dc.subjectjavaScriptpt_BR
dc.subjectfront-end frameworkspt_BR
dc.subjectrefactoringpt_BR
dc.subjectcode smellspt_BR
dc.subjectmining software repositoriespt_BR
dc.subjectmaintainabilitypt_BR
dc.subject.otherComputação – Tesespt_BR
dc.subject.otherEngenharia de Software – Tesespt_BR
dc.subject.otherJavaScript (Linguagem de programação de computador) – Tesespt_BR
dc.subject.otherMineração de repositórios de software – Teses.pt_BR
dc.titleAssisting JavaScript Front-End Developers in Maintaining and Evolving React-Based Applications: Code Smells and Refactoring Operationspt_BR
dc.typeTesept_BR
dc.identifier.orcidhttps://orcid.org/0000-0003-4485-3219pt_BR
Appears in Collections:Teses de Doutorado

Files in This Item:
File Description SizeFormat 
PhD_Thesis_Fabio_Final.pdfTese de doutorado de Fábio da Silva Ferreira6.8 MBAdobe PDFView/Open


This item is licensed under a Creative Commons License Creative Commons