1.7SEOct 18, 2023Code
A comprehensible analysis of the efficacy of Ensemble Models for Bug PredictionIngrid Marçal, Rogério Eduardo Garcia
The correctness of software systems is vital for their effective operation. It makes discovering and fixing software bugs an important development task. The increasing use of Artificial Intelligence (AI) techniques in Software Engineering led to the development of a number of techniques that can assist software developers in identifying potential bugs in code. In this paper, we present a comprehensible comparison and analysis of the efficacy of two AI-based approaches, namely single AI models and ensemble AI models, for predicting the probability of a Java class being buggy. We used two open-source Apache Commons Project's Java components for training and evaluating the models. Our experimental findings indicate that the ensemble of AI models can outperform the results of applying individual AI models. We also offer insight into the factors that contribute to the enhanced performance of the ensemble AI model. The presented results demonstrate the potential of using ensemble AI models to enhance bug prediction results, which could ultimately result in more reliable software systems.
8.6HCJan 26, 2021
Contrastive analysis for scatterplot-based representations of dimensionality reductionWilson E. Marcílio-Jr, Danilo M. Eler, Rogério E. Garcia
Cluster interpretation after dimensionality reduction (DR) is a ubiquitous part of exploring multidimensional datasets. DR results are frequently represented by scatterplots, where spatial proximity encodes similarity among data samples. In the literature, techniques support the understanding of scatterplots' organization by visualizing the importance of the features for cluster definition with layout enrichment strategies. However, current approaches usually focus on global information, hampering the analysis whenever the focus is to understand the differences among clusters. Thus, this paper introduces a methodology to visually explore DR results and interpret clusters' formation based on contrastive analysis. We also introduce a bipartite graph to visually interpret and explore the relationship between the statistical variables employed to understand how the data features influence cluster formation. Our approach is demonstrated through case studies, in which we explore two document collections related to news articles and tweets about COVID-19 symptoms. Finally, we evaluate our approach through quantitative results to demonstrate its robustness to support multidimensional analysis.
3.3HCJun 25, 2020
Visual analytics of COVID-19 dissemination in São Paulo state, BrazilWilson E. Marcílio-Jr, Danilo M. Eler, Rogério E. Garcia et al.
Visual analytics techniques are useful tools to support decision-making and cope with increasing data, which is particularly important when monitoring natural or artificial phenomena. When monitoring disease progression, visual analytics approaches help decision-makers choose to understand or even prevent dissemination paths. In this paper, we propose a new visual analytics tool for monitoring COVID-19 dissemination. We use k-nearest neighbors of cities to mimic neighboring cities and analyze COVID-19 dissemination based on the comparison of a city under consideration and its neighborhood. Moreover, such analysis is performed based on periods, which facilitates the assessment of isolation policies. We validate our tool by analyzing the progression of COVID-19 in neighboring cities of São Paulo state, Brazil.
3.0SEFeb 11, 2020
Analyzing the Rework Time and Severity of Code Debt: A Case Study Using Technical Debt CatalogsBruno Santos de Lima, Rogério Eduardo Garcia
This paper presents a case study analyzing Hibernate ecosystem software projects to investigate and demonstrate Code Debt behavior in relation to severity and rework time. The case study carried out revealed that the Code Debt with severity related to impact on software maintenance is the most representative and has the largest rework times to be paid in the Hibernate ecosystem. Besides, it was found that the distributions of rework times of Code Debt for all severities undergo variations in the initial versions of the development.
2.8SESep 9, 2019
Learning and Suggesting Source Code Changes from Version History: A Systematic ReviewLeandro Ungari Cayres, Bruno Santos de Lima, Rogério Eduardo Garcia
Context: Software systems are in continuous evolution through source code changes to fixing bugs, adding new functionalities and improving the internal architecture. All these practices are recorded in the version history, which can be reused as an advantage in the development process. Objective: This paper aims to investigate approaches and techniques related to the learning of source code changes, since the change identification step, learning, and reuse in recommending strategies. Method: We conducted a systematic review related to primary studies about source code changes. The search approach identified 2410 studies, up to and including 2012, which resulted in a final set of 39 selected papers. We grouped the studies according to each established research question. This review investigates how source code changes, which were performed in the past of software, can support the improvement of the software project. Results: The majority of approaches and techniques have used repetitiveness behavior of source code changes to identify structural or metrics patterns in software repositories, trough the evaluation of sequences of versions. To extract the structural patterns, the approaches have used programming-by-example techniques to differencing source code changes. In quality metrics analysis, the studies have applied mainly complexity and object-oriented metrics. Conclusion: The main implication of this review is that source code changes as examples, to support the improvement of coding practice during the development process, in which we presented some relevant strategies to guide each step, since identifying until the suggesting of source code changes.