Eduardo Figueiredo
Current Organizations / Institutes
The organizations/institutes from the scholar's latest article
Previous Organizations / Institutes
The organizations / institutes from the scholar's other articles in the past ten years
Research Subjects
Research Interests
Eduardo Figueiredo has a total of 160 co-authors. Here are the top co-authors by number of shared publications:
Alessandro Garcia
Pontifical Catholic University of Rio de Janeiro
12 shared publications- Kattiana Constantino
Federal University of Jequitinhonha and Mucuri Valleys (UFVJM)
11 shared publications Gustavo Vale
9 shared publications- Alessandro Garcia
Pontifical Catholic University of Rio de Janeiro, Rio de Janeiro, Brazil
6 shared publications - Fischer Ferreira
Federal University of Itajubá, Brazil
6 shared publications - João Paulo Diniz
Computer Science Department, Federal University of Minas Gerais, Brazil
6 shared publications
Latest Publications
- 29 September 2026
- Published by Springer Nature
- p. 102-124
The Post-pandemic Recovery in a Software Engineering Course: A Quantitative and Qualitative Analysis
- 29 September 2026
- Published by Springer Nature
- p. 102-124
The Post-pandemic Recovery in a Software Engineering Course: A Quantitative and Qualitative Analysis
- Open Access
- 22 July 2026
- Published by Springer Nature in Software Quality Journal
- Vol. 34 (3) , 40
Understanding the developer and user perspectives of design pattern detection tools
Design Pattern Detection (DPD) tools are useful to support to the comprehension and maintenance of software systems. Although several DPD tools have been introduced over the years, they typically focus on a limited set of design patterns and programming languages. This paper aims to investigate (i) the reasons that motivate DPD tool designers to target specific design patterns and programming languages, and (ii) how potential users perceive the usefulness of DPD tools in practical software development scenarios. We conducted two online surveys. For the first survey, we reached out to designers of 42 DPD tools selected from a systematic literature review to obtain their perspectives on design decisions about pattern and language coverage, receiving 22% of such responses. For the second survey, we recruited 28 student and senior developers to help us understand their expectations, perceived benefits, and concerns related to the use of DPD tools. Within our sample, the findings suggest that participating tool designers often prioritize design patterns whose internal structure facilitates automated detection, while language support is frequently motivated by popularity and expected demand. From the perspective of tool users, DPD tools are expected to support development activities, such as program comprehension and software quality improvement. Unfortunately, usability difficulties, limited accuracy, and insufficient documentation often discourage them from adopting a tool. The responses suggest that some design decisions reported by participating DPD tool designers are aligned with practical and industrial considerations. However, the recurring lack of adequate documentation and usability support is a major barrier to wider usage. Taken as indicative evidence, these results suggest that future DPD tools should better balance detection capabilities and usability concerns, especially to meet the need of less experienced developers. Given the limited number of tool-designer respondents, conclusions about design rationale should be interpreted as indicative rather than representative of all DPD tool designers.
- 22 July 2026
- Published by Springer Nature in Software Quality Journal
- Vol. 34 (3) , 40
Open AccessUnderstanding the developer and user perspectives of design pattern detection tools
Design Pattern Detection (DPD) tools are useful to support to the comprehension and maintenance of software systems. Although several DPD tools have been introduced over the years, they typically focus on a limited set of design patterns and programming languages. This paper aims to investigate (i) the reasons that motivate DPD tool designers to target specific design patterns and programming languages, and (ii) how potential users perceive the usefulness of DPD tools in practical software development scenarios. We conducted two online surveys. For the first survey, we reached out to designers of 42 DPD tools selected from a systematic literature review to obtain their perspectives on design decisions about pattern and language coverage, receiving 22% of such responses. For the second survey, we recruited 28 student and senior developers to help us understand their expectations, perceived benefits, and concerns related to the use of DPD tools. Within our sample, the findings suggest that participating tool designers often prioritize design patterns whose internal structure facilitates automated detection, while language support is frequently motivated by popularity and expected demand. From the perspective of tool users, DPD tools are expected to support development activities, such as program comprehension and software quality improvement. Unfortunately, usability difficulties, limited accuracy, and insufficient documentation often discourage them from adopting a tool. The responses suggest that some design decisions reported by participating DPD tool designers are aligned with practical and industrial considerations. However, the recurring lack of adequate documentation and usability support is a major barrier to wider usage. Taken as indicative evidence, these results suggest that future DPD tools should better balance detection capabilities and usability concerns, especially to meet the need of less experienced developers. Given the limited number of tool-designer respondents, conclusions about design rationale should be interpreted as indicative rather than representative of all DPD tool designers.
- Open Access
- 5 July 2026
- Published by Association for Computing Machinery (ACM)
- p. 31-40
High Agreement, Shallow Reasoning: A Mixed-Method Study of LLMs in Refactoring Reviews
- 5 July 2026
- Published by Association for Computing Machinery (ACM)
- p. 31-40
Open AccessHigh Agreement, Shallow Reasoning: A Mixed-Method Study of LLMs in Refactoring Reviews
- Open Access
- 23 June 2026
- Published by Sociedade Brasileira de Computação in SBC Reviews on Computer Science
- Vol. 5 (1) , 87-101
A Systematic Literature Review of Code Smell Detection Tools for JavaScript Systems
JavaScript is one of the most popular programming languages. As projects grow, their code can become complex which leads to code smells, signs that can indicate problems. Many tools are available to detect and fix these issues, but we need a comprehensive summary of their most important features. This paper provides a systematic literature review of JavaScript code smell detection tools. We searched four databases (Scopus, ACM Digital Library, IEEE Xplore, and Springer) using a specific search string to find relevant studies. To refine the results, we applied a four-step selection process, reducing 1002 initial studies to 18 by removing duplicates, filtering metadata, and reviewing their full texts. We then used backward and forward snowballing to find more relevant studies, increasing the total number to 27 primary studies. Finally, we examined these studies to analyze the code smell detection tools they described. We identified 22 tools, many published in top software engineering venues, such as ICSE, MSR and TSE. We found that most tools use rule-based linting (55%), which is efficient but struggles with complex architectural smells. Dynamic analysis (23%) is underused and AI-driven detection is completely missing, despite its relevance in modern software engineering research. Researchers are also developing framework-specific tools for modern JavaScript practices and focusing on the detection of test smells (22%). Most tools available to practitioners detect only basic smells and ignore deeper design issues. Tool builders can address these gaps by combining static and dynamic analysis and creating more adaptable tools. For researchers, the lack of AI-driven detection and modern benchmark datasets presents an opportunity for progress.
- 23 June 2026
- Published by Sociedade Brasileira de Computação in SBC Reviews on Computer Science
- Vol. 5 (1) , 87-101
Open AccessA Systematic Literature Review of Code Smell Detection Tools for JavaScript Systems
JavaScript is one of the most popular programming languages. As projects grow, their code can become complex which leads to code smells, signs that can indicate problems. Many tools are available to detect and fix these issues, but we need a comprehensive summary of their most important features. This paper provides a systematic literature review of JavaScript code smell detection tools. We searched four databases (Scopus, ACM Digital Library, IEEE Xplore, and Springer) using a specific search string to find relevant studies. To refine the results, we applied a four-step selection process, reducing 1002 initial studies to 18 by removing duplicates, filtering metadata, and reviewing their full texts. We then used backward and forward snowballing to find more relevant studies, increasing the total number to 27 primary studies. Finally, we examined these studies to analyze the code smell detection tools they described. We identified 22 tools, many published in top software engineering venues, such as ICSE, MSR and TSE. We found that most tools use rule-based linting (55%), which is efficient but struggles with complex architectural smells. Dynamic analysis (23%) is underused and AI-driven detection is completely missing, despite its relevance in modern software engineering research. Researchers are also developing framework-specific tools for modern JavaScript practices and focusing on the detection of test smells (22%). Most tools available to practitioners detect only basic smells and ignore deeper design issues. Tool builders can address these gaps by combining static and dynamic analysis and creating more adaptable tools. For researchers, the lack of AI-driven detection and modern benchmark datasets presents an opportunity for progress.
- Open Access
- 12 April 2026
- Published by Association for Computing Machinery (ACM)
- p. 85-89
When Code Meets Things: The FLOSS Side of IoT Systems
- 12 April 2026
- Published by Association for Computing Machinery (ACM)
- p. 85-89
Open AccessWhen Code Meets Things: The FLOSS Side of IoT Systems
- Open Access
- 31 March 2026
- Published by Sociedade Brasileira de Computação in Journal of Software Engineering Research and Development
- Vol. 14 (1) , 247-258
Exploring the Relationship Between SOLID Principles and Code Smells: The Software Developer Perspective
Software engineering principles aim to deliver high-quality products efficiently. However, as development progresses and new features are added, software quality can deteriorate without proactive measures. Refactoring helps maintain software quality by systematically restructuring code through small incremental changes without altering its behavior. A crucial step in the refactoring process is identifying code smells, which are design or structural flaws that increase software complexity, hinder maintenance, and contribute to duplication and rework. This study examines developers' knowledge of code smells and their perceptions of using SOLID principles to avoid them. To explore this relationship, we conducted a survey with 71 professional developers. Our results show no correlation between knowledge of code smells and the developer's academic background or experience level. Additionally, participants widely recognized the SOLID principles as an effective way of avoiding code smells. These findings reinforce the importance of studying code smells, understanding their refactoring techniques, and applying the SOLID principles for maintaining high-quality software products.
- 31 March 2026
- Published by Sociedade Brasileira de Computação in Journal of Software Engineering Research and Development
- Vol. 14 (1) , 247-258
Open AccessExploring the Relationship Between SOLID Principles and Code Smells: The Software Developer Perspective
Software engineering principles aim to deliver high-quality products efficiently. However, as development progresses and new features are added, software quality can deteriorate without proactive measures. Refactoring helps maintain software quality by systematically restructuring code through small incremental changes without altering its behavior. A crucial step in the refactoring process is identifying code smells, which are design or structural flaws that increase software complexity, hinder maintenance, and contribute to duplication and rework. This study examines developers' knowledge of code smells and their perceptions of using SOLID principles to avoid them. To explore this relationship, we conducted a survey with 71 professional developers. Our results show no correlation between knowledge of code smells and the developer's academic background or experience level. Additionally, participants widely recognized the SOLID principles as an effective way of avoiding code smells. These findings reinforce the importance of studying code smells, understanding their refactoring techniques, and applying the SOLID principles for maintaining high-quality software products.
- Open Access
- 22 September 2025
- Published by Sociedade Brasileira de Computação
- p. 776-782
Improving JavaScript Test Quality with Large Language Models: Lessons from Test Smell Refactoring
Test smells—poor design choices in test code—can hinder test maintainability, clarity, and reliability. Prior studies have proposed rulebased detection tools and manual refactoring strategies, most focus on statically typed languages such as Java. In this paper, we investigate the potential of Large Language Models (LLMs) to automatically refactor test smells in JavaScript, a dynamically typed and widely used language with limited prior research in this area. We conducted an empirical study using GitHub Copilot Chat and Amazon CodeWhisperer to refactor 148 test smell instances across 10 real-world JavaScript projects. Our evaluation assessed smell removal effectiveness, behavioral preservation, introduction of new smells, and structural code quality based on six software metrics. Results show that Copilot removed 58.78% of the smells successfully, outperforming Whisperer’s 47.30%, while both tools preserved test behavior in most cases. However, both also introduced new smells, highlighting current limitations. Our findings reveal the strengths and trade-offs of LLM-based refactoring and provide insights for building more reliable and smell-aware testing tools for JavaScript.
- 22 September 2025
- Published by Sociedade Brasileira de Computação
- p. 776-782
Open AccessImproving JavaScript Test Quality with Large Language Models: Lessons from Test Smell Refactoring
Test smells—poor design choices in test code—can hinder test maintainability, clarity, and reliability. Prior studies have proposed rulebased detection tools and manual refactoring strategies, most focus on statically typed languages such as Java. In this paper, we investigate the potential of Large Language Models (LLMs) to automatically refactor test smells in JavaScript, a dynamically typed and widely used language with limited prior research in this area. We conducted an empirical study using GitHub Copilot Chat and Amazon CodeWhisperer to refactor 148 test smell instances across 10 real-world JavaScript projects. Our evaluation assessed smell removal effectiveness, behavioral preservation, introduction of new smells, and structural code quality based on six software metrics. Results show that Copilot removed 58.78% of the smells successfully, outperforming Whisperer’s 47.30%, while both tools preserved test behavior in most cases. However, both also introduced new smells, highlighting current limitations. Our findings reveal the strengths and trade-offs of LLM-based refactoring and provide insights for building more reliable and smell-aware testing tools for JavaScript.
- 5 June 2025
- Published by Elsevier in Science of Computer Programming
- Vol. 247
Evaluating a continuous feedback strategy to enhance machine learning code smell detection
- 5 June 2025
- Published by Elsevier in Science of Computer Programming
- Vol. 247
Evaluating a continuous feedback strategy to enhance machine learning code smell detection
- Open Access
- 28 May 2025
- Published by Sociedade Brasileira de Computação in Journal of Software Engineering Research and Development
- Vol. 13 (2)
From Detection to Refactoring of Microservice Bad Smells: A Systematic Literature Review
The extensive adoption of microservices architecture by technology companies is driven by its expected advantages, such as scalability, simplicity of development, and resilience, likely due to its cloud-native nature. However, the increasing complexity associated with this architecture can lead to the emergence of microservice smells, analogous to code smells, indicating potential architectural design issues. Despite the identification of numerous microservice smells in the literature, cohesive documentation to support architects detecting and refactoring them. This study conducts a Systematic Literature Review (SLR) to deepen the understanding of these microservice smells, explore detection tools and identify refactoring strategies to mitigate them. We conducted searches across six popular digital libraries, analyzing 27 relevant papers. As a result, we cataloged 104 distinct microservice bad smells, identified 7 detection tools, and compiled refactoring strategies for the most prevalent smells. This documentation aims to assist engineers and architects in identifying and effectively addressing microservice bad smells, thereby enhancing the quality and maintainability of microservice-based systems.
- 28 May 2025
- Published by Sociedade Brasileira de Computação in Journal of Software Engineering Research and Development
- Vol. 13 (2)
Open AccessFrom Detection to Refactoring of Microservice Bad Smells: A Systematic Literature Review
The extensive adoption of microservices architecture by technology companies is driven by its expected advantages, such as scalability, simplicity of development, and resilience, likely due to its cloud-native nature. However, the increasing complexity associated with this architecture can lead to the emergence of microservice smells, analogous to code smells, indicating potential architectural design issues. Despite the identification of numerous microservice smells in the literature, cohesive documentation to support architects detecting and refactoring them. This study conducts a Systematic Literature Review (SLR) to deepen the understanding of these microservice smells, explore detection tools and identify refactoring strategies to mitigate them. We conducted searches across six popular digital libraries, analyzing 27 relevant papers. As a result, we cataloged 104 distinct microservice bad smells, identified 7 detection tools, and compiled refactoring strategies for the most prevalent smells. This documentation aims to assist engineers and architects in identifying and effectively addressing microservice bad smells, thereby enhancing the quality and maintainability of microservice-based systems.
- Open Access
- 7 April 2025
- Published by Sociedade Brasileira de Computação
- p. 741-749
Reflexões sobre o Uso de LLMs no Ensino de Programação
O objetivo deste artigo é saber como os Modelos de Linguagem de Grande Escala (Large Language Models -LLMs) impactam no ensino de programação. Atualmente muitos iniciantes nas linguagens de programação, em termos de criação, correção e explicação de código, vêm recorrendo às Large Language Models devido à sua facilidade em obter códigos prontos e explicações completas. Mas será que as LLMs causam impacto negativo ou positivo no ensino de linguagens de programação? Isso que esse artigo irá discutir.
- 7 April 2025
- Published by Sociedade Brasileira de Computação
- p. 741-749
Open AccessReflexões sobre o Uso de LLMs no Ensino de Programação
O objetivo deste artigo é saber como os Modelos de Linguagem de Grande Escala (Large Language Models -LLMs) impactam no ensino de programação. Atualmente muitos iniciantes nas linguagens de programação, em termos de criação, correção e explicação de código, vêm recorrendo às Large Language Models devido à sua facilidade em obter códigos prontos e explicações completas. Mas será que as LLMs causam impacto negativo ou positivo no ensino de linguagens de programação? Isso que esse artigo irá discutir.