Alessandro F. Garcia 0001

dblp:g/AlessandroFGarcia · also Alessandro Fabricio Garcia, Alessandro Garcia 0001 · DBLP profile ↗
← Back
8ranked-venue papers in the field
0as first author
2since 2021 · last 2023
0000-0001-5788-5215ORCID · conflict

Domains — venue-derived; a paper can count in several

Other / Interdisciplinary · 4Business Process & Enterprise Data · 2Database Systems & Data Management · 1Information Retrieval & Web Search · 1
YearPublicationVenuePosition
2023 Don't Forget the Exception! : Considering Robustness Changes to Identify Design Problems
abstract
Modern programming languages, such as Java, use exception-handling mechanisms to guarantee the robustness of software systems. Although important, the quality of exception code is usually poor and neglected by developers. Indiscriminate robustness changes (e.g., the addition of empty catch blocks) can indicate design decisions that negatively impact the internal quality of software systems. As it is known in the literature, multiple occurrences of poor code structures, namely code smells, are strong indicators of design problems. Still, existing studies focus mainly on the correlation of maintainability smells with design problems. However, using only these smells may not be enough since developers need more context (e.g., system domain) to identify the problems in certain scenarios. Moreover, these studies do not explore how changes in the exceptional code of the methods combined with maintainability smells can give complementary evidence of design problems. By covering both regular and exception codes, the developer can have more context about the system and find complementary code smells that reinforce the presence of design problems. This work aims to leverage the identification of design problems by tracking poor robustness changes combined with maintainability smells. We investigated the correlation between robustness changes and maintainability smells on the commit history of more than 160k methods from different releases of 10 open-source software systems. We observed that maintainability smells can be worsened or even introduced when robustness changes are performed. This scenario mainly happened for the smells Feature Envy, Long Method, and Dispersed Coupling. We also analyzed the co-occurrence between robustness and maintainability smells. We identified that the empty catch block and catch throwable robustness smells were the ones that co-occurred the most with maintainability smells related to the Concern Overload and Misplaced Concern design problems. The contribution of our work is to reveal that poor exception code, usually neglected by developers, negatively impacts the quality of methods and classes, signaled by the maintainability smells. Therefore, existing code smell detecting tools can be enhanced to leverage robustness changes to identify design problems.
Anderson Oliveira, João Lucas Correia, Leonardo da Silva Sousa, Wesley K. G. Assunção, Daniel Coutinho, Alessandro F. Garcia 0001, Willian Nalepa Oizumi, Caio Barbosa, Anderson G. Uchôa, Juliana Alves Pereira
MSR6
2021 Predicting Design Impactful Changes in Modern Code Review: A Large-Scale Empirical Study
abstract
Companies have adopted modern code review as a key technique for continuously monitoring and improving the quality of software changes. One of the main motivations for this is the early detection of design impactful changes, to prevent that design-degrading ones prevail after each code review. Even though design degradation symptoms often lead to changes' rejections, practices of modern code review alone are actually not sufficient to avoid or mitigate design decay. Software design degrades whenever one or more symptoms of poor structural decisions, usually represented by smells, end up being introduced by a change. Design degradation may be related to both technical and social aspects in collaborative code reviews. Unfortunately, there is no study that investigates if code review stakeholders, e.g, reviewers, could benefit from approaches to distinguish and predict design impactful changes with technical and/or social aspects. By analyzing 57,498 reviewed code changes from seven open-source systems, we report an investigation on prediction of design impactful changes in modern code review. We evaluated the use of six ML algorithms to predict design impactful changes. We also extracted and assessed 41 different features based on both social and technical aspects. Our results show that Random Forest and Gradient Boosting are the best algorithms. We also observed that the use of technical features results in more precise predictions. However, the use of social features alone, which are available even before the code review starts (e.g., for team managers or change assigners), also leads to highly-accurate prediction. Therefore social and/or technical prediction models can be used to support further design inspection of suspicious changes early in a code review process. Finally, we provide an enriched dataset that allows researchers to investigate the context behind design impactful changes during the code review process.
Anderson G. Uchôa, Caio Barbosa, Daniel Coutinho, Willian Nalepa Oizumi, Wesley K. G. Assunção, Silvia Regina Vergilio, Juliana Alves Pereira, Anderson Oliveira, Alessandro F. Garcia 0001
MSR9
2020 Behind the Intents: An In-depth Empirical Study on Software Refactoring in Modern Code Review
abstract
Code refactorings are of pivotal importance in modern code review. Developers may preserve, revisit, add or undo refactorings through changes' revisions. Their goal is to certify that the driving intent of a code change is properly achieved. Developers' intents behind refactorings may vary from pure structural improvement to facilitating feature additions and bug fixes. However, there is little understanding of the refactoring practices performed by developers during the code review process. It is also unclear whether the developers' intents influence the selection, composition, and evolution of refactorings during the review of a code change. Through mining 1,780 reviewed code changes from 6 systems pertaining to two large open-source communities, we report the first in-depth empirical study on software refactoring during code review. We inspected and classified the developers' intents behind each code change into 7 distinct categories. By analyzing data generated during the complete reviewing process, we observe: (i) how refactorings are selected, composed and evolved throughout each code change, and (ii) how developers' intents are related to these decisions. For instance, our analysis shows developers regularly apply non-trivial sequences of refactorings that crosscut multiple code elements (i.e., widely scattered in the program) to support a single feature addition. Moreover, we observed that new developers' intents commonly emerge during the code review process, influencing how developers select and compose their refactorings to achieve the new and adapted goals. Finally, we provide an enriched dataset that allows researchers to investigate the context and motivations behind refactoring operations during the code review process.
Matheus Paixão, Anderson G. Uchôa, Ana Carla Bibiano, Daniel Oliveira 0005, Alessandro F. Garcia 0001, Jens Krinke, Emilio Arvonio
MSR5
2020 Characterizing and Identifying Composite Refactorings: Concepts, Heuristics and Patterns
abstract
Refactoring consists of a transformation applied to improve the program internal structure, for instance, by contributing to remove code smells. Developers often apply multiple interrelated refactorings called composite refactoring. Even though composite refactoring is a common practice, an investigation from different points of view on how composite refactoring manifests in practice is missing. Previous empirical studies also neglect how different kinds of composite refactorings affect the removal, prevalence or introduction of smells. To address these matters, we provide a conceptual framework and two heuristics to respectively characterize and identify composite refactorings within and across commits. Then, we mined the commit history of 48 GitHub software projects. We identified and analyzed 24,911 composite refactorings involving 104,505 single refactorings. Amongst several findings, we observed that most composite refactorings occur in the same commit and have the same refactoring type. We found that several refactorings are semantically related to each other, which occur in different parts of the system but are still related to the same task. Our study is the first to reveal that many smells are introduced in a program due to "incomplete" composite refactorings. Our study is also the first to reveal 111 patterns of composite refactorings that frequently introduce or remove certain smell types. These patterns can be used as guidelines for developers to improve their refactoring practices as well as for designers of recommender systems.
Leonardo da Silva Sousa, Diego Cedrim, Alessandro F. Garcia 0001, Willian Nalepa Oizumi, Ana Carla Bibiano, Daniel Oliveira 0005, Miryung Kim, Anderson Oliveira
MSR3
2018 VazaDengue: An information system for preventing and combating mosquito-borne diseases with social networks
Leonardo da Silva Sousa, Rafael Maiani de Mello, Diego Cedrim, Alessandro F. Garcia 0001, Paolo Missier, Anderson G. Uchôa, Anderson Oliveira, Alexander B. Romanovsky
Inf. Syst.4
2017 Recruiting from the Network: Discovering Twitter Users Who Can Help Combat Zika Epidemics
Paolo Missier, Callum McClean, Jonathan Carlton, Diego Cedrim, Leonardo da Silva Sousa, Alessandro F. Garcia 0001, Alexandre Plastino 0001, Alexander B. Romanovsky
ICWE6
2014 On the Effectiveness of Concern Metrics to Detect Code Smells: An Empirical Study
Juliana Padilha, Juliana Alves Pereira, Eduardo Figueiredo 0001, Jussara M. Almeida, Alessandro F. Garcia 0001, Cláudio Sant'Anna
CAiSE5
2008 On the Impact of Evolving Requirements-Architecture Dependencies: An Exploratory Study
Safoora Shakil Khan, Phil Greenwood, Alessandro F. Garcia 0001, Awais Rashid
CAiSE3