Please use this identifier to cite or link to this item: http://hdl.handle.net/1843/59120
Type: Tese
Title: Assisting JavaScript Front-End Developers in Maintaining and Evolving React-Based Applications: Code Smells and Refactoring Operations
Authors: Fábio da Silva Ferreira
First Advisor: Marco Túlio de Oliveira Valente
First Referee: Marcelo de Almeida Maia
Second Referee: Breno Bernard Nicolau de França
Third Referee: André Cavalcante Hora
metadata.dc.contributor.referee4: Eduardo Magno Lages Figueiredo
Abstract: JavaScript-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.
Abstract: Frameworks 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.
Subject: Computação – Teses
Engenharia de Software – Teses
JavaScript (Linguagem de programação de computador) – Teses
Mineração de repositórios de software – Teses.
language: eng
metadata.dc.publisher.country: Brasil
Publisher: Universidade Federal de Minas Gerais
Publisher Initials: UFMG
metadata.dc.publisher.department: ICEX - INSTITUTO DE CIÊNCIAS EXATAS
metadata.dc.publisher.program: Programa de Pós-Graduação em Ciência da Computação
Rights: Acesso Aberto
metadata.dc.rights.uri: http://creativecommons.org/licenses/by-nc-nd/3.0/pt/
URI: http://hdl.handle.net/1843/59120
Issue Date: 11-Aug-2023
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