Leonardo Murta
Current Organizations / Institutes
The organizations/institutes from the scholar's latest article
Research Subjects
Research Interests
Leonardo Murta has a total of 71 co-authors. Here are the top co-authors by number of shared publications:
- João Felipe Pimentel
Universidade Federal Fluminense, Brazil
7 shared publications - Vanessa Braganholo
Universidade Federal Fluminense
7 shared publications - Esteban Clua
Fluminense Federal University
5 shared publications - Alexandre Plastino
Universidade Federal Fluminense
4 shared publications - André van der Hoek
University of California, Irvine, Irvine, CA, USA
4 shared publications - Heleno De Souza Campos Junior
Universidade Federal Fluminense, Niteroi, Brazil
4 shared publications
Latest Publications
- Open Access
- 24 April 2026
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Software Engineering and Methodology
- Vol. 35 (5) , 1-35
Towards a Feasible Evaluation Function for Search-Based Merge Conflict Resolution
Resolving merge conflicts manually is a tedious and complex task. While automated approaches exist, many challenges persist. One promising yet underexplored solution is the use of search-based optimization algorithms, which require an evaluation function to measure the quality of intermediary solutions. However, using code compilation and test execution for this purpose is computationally expensive. This study investigates the relationship between conflict resolutions and conflicting content to identify a metric for guiding search-based optimization techniques. We analyzed 9,998 conflict chunks from 1,062 open source projects, focusing on the similarity of resolutions to their parents and the correlation between randomly generated candidates, parent versions, and the resolution. Our findings reveal that conflict resolutions are, on average, 70% similar to both parents. A strong median correlation ( \(\rho=0.791\) ) exists between candidate-parent and candidate-resolution similarities when aggregating parent similarities with the mean function. Based on these findings, we propose and evaluate SBCR, a Search-Based Conflict Resolution approach that uses parent similarity as a guiding function. We found that the resolution candidates generated by SBCR have a median of 86.5% similarity to the expected resolution, achieving 100% of similarity in 25.2% of the conflicts.- 24 April 2026
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Software Engineering and Methodology
- Vol. 35 (5) , 1-35
Open AccessTowards a Feasible Evaluation Function for Search-Based Merge Conflict Resolution
Resolving merge conflicts manually is a tedious and complex task. While automated approaches exist, many challenges persist. One promising yet underexplored solution is the use of search-based optimization algorithms, which require an evaluation function to measure the quality of intermediary solutions. However, using code compilation and test execution for this purpose is computationally expensive. This study investigates the relationship between conflict resolutions and conflicting content to identify a metric for guiding search-based optimization techniques. We analyzed 9,998 conflict chunks from 1,062 open source projects, focusing on the similarity of resolutions to their parents and the correlation between randomly generated candidates, parent versions, and the resolution. Our findings reveal that conflict resolutions are, on average, 70% similar to both parents. A strong median correlation ( \(\rho=0.791\) ) exists between candidate-parent and candidate-resolution similarities when aggregating parent similarities with the mean function. Based on these findings, we propose and evaluate SBCR, a Search-Based Conflict Resolution approach that uses parent similarity as a guiding function. We found that the resolution candidates generated by SBCR have a median of 86.5% similarity to the expected resolution, achieving 100% of similarity in 25.2% of the conflicts. - 22 February 2025
- Published by Springer Nature in Empirical Software Engineering
- Vol. 30 (3) , 1-59
Analyzing the adoption of database management systems throughout the history of open source projects
- 22 February 2025
- Published by Springer Nature in Empirical Software Engineering
- Vol. 30 (3) , 1-59
Analyzing the adoption of database management systems throughout the history of open source projects
- Open Access
- 11 January 2024
- Published by Sociedade Brasileira de Computação in Journal of Software Engineering Research and Development
- Vol. 12 (1) , 13:1-13:17
How code composition strategies affect merge conflict resolution?
Software developers often need to combine their contributions. This operation is called merge. When the contributions happen at the same physical region in the source code, the merge is marked as conflicting and must be manually resolved by the developers. Existing studies explore why conflicts happen, their characteristics, and how they are resolved. This paper investigates a subset of merge conflicts, which may be resolved using a combination of existing lines. We analyze 10,177 conflict chunks of popular projects that were resolved by combining existing lines, aiming at characterizing and finding patterns frequently addressed by developers to resolve them. We found that these conflicting chunks and their resolutions are usually small (they have a median of 6 LOC and 3 LOC, respectively). Moreover, 98.6% of the analyzed resolutions preserve the order of the lines in the conflicting chunks. We also found that 72.7% of the chunk resolutions do not interleave lines from different contributions more than once. Finally, developers prefer to resolve conflicts containing only Import statements using lines from the local version of the conflict. When used as heuristics for automatic merge resolution, these findings could reduce the search space by 94.7%, paving the road for future search-based software engineering tools for this problem.
- 11 January 2024
- Published by Sociedade Brasileira de Computação in Journal of Software Engineering Research and Development
- Vol. 12 (1) , 13:1-13:17
Open AccessHow code composition strategies affect merge conflict resolution?
Software developers often need to combine their contributions. This operation is called merge. When the contributions happen at the same physical region in the source code, the merge is marked as conflicting and must be manually resolved by the developers. Existing studies explore why conflicts happen, their characteristics, and how they are resolved. This paper investigates a subset of merge conflicts, which may be resolved using a combination of existing lines. We analyze 10,177 conflict chunks of popular projects that were resolved by combining existing lines, aiming at characterizing and finding patterns frequently addressed by developers to resolve them. We found that these conflicting chunks and their resolutions are usually small (they have a median of 6 LOC and 3 LOC, respectively). Moreover, 98.6% of the analyzed resolutions preserve the order of the lines in the conflicting chunks. We also found that 72.7% of the chunk resolutions do not interleave lines from different contributions more than once. Finally, developers prefer to resolve conflicts containing only Import statements using lines from the local version of the conflict. When used as heuristics for automatic merge resolution, these findings could reduce the search space by 94.7%, paving the road for future search-based software engineering tools for this problem.
- 4 January 2024
- Published by Elsevier in Expert Systems with Applications
- Vol. 245
Prov-Dominoes: An approach for knowledge discovery from provenance data
- 4 January 2024
- Published by Elsevier in Expert Systems with Applications
- Vol. 245
Prov-Dominoes: An approach for knowledge discovery from provenance data
- 16 September 2023
- Published by Elsevier in Information and Software Technology
- Vol. 164
Towards accurate recommendations of merge conflicts resolution strategies
- 16 September 2023
- Published by Elsevier in Information and Software Technology
- Vol. 164
Towards accurate recommendations of merge conflicts resolution strategies
- Open Access
Do code refactorings influence the merge effort?
In collaborative software development, multiple contributors frequently change the source code in parallel to implement new features, fix bugs, refactor existing code, and make other changes. These simultaneous changes need to be merged into the same version of the source code. However, the merge operation can fail, and developer intervention is required to resolve the conflicts. Studies in the literature show that 10 to 20 percent of all merge attempts result in conflicts, which require the manual developer's intervention to complete the process. In this paper, we concern about a specific type of change that affects the structure of the source code and has the potential to increase the merge effort: code refactorings. We analyze the relationship between the occurrence of refactorings and the merge effort. To do so, we applied a data mining technique called association rule extraction to find patterns of behavior that allow us to analyze the influence of refactorings on the merge effort. Our experiments extracted association rules from 40,248 merge commits that occurred in 28 popular open-source projects. The results indicate that: (i) the occurrence of refactorings increases the chances of having merge effort; (ii) the more refactorings, the greater the chances of effort; (iii) the more refactorings, the greater the effort; and (iv) parallel refactorings increase even more the chances of having effort, as well as the intensity of it. The results obtained may suggest behavioral changes in the way refactorings are implemented by developer teams. In addition, they can indicate possible ways to improve tools that support code merging and those that recommend refactorings, considering the number of refactorings and merge effort attributes.
Open AccessDo code refactorings influence the merge effort?
In collaborative software development, multiple contributors frequently change the source code in parallel to implement new features, fix bugs, refactor existing code, and make other changes. These simultaneous changes need to be merged into the same version of the source code. However, the merge operation can fail, and developer intervention is required to resolve the conflicts. Studies in the literature show that 10 to 20 percent of all merge attempts result in conflicts, which require the manual developer's intervention to complete the process. In this paper, we concern about a specific type of change that affects the structure of the source code and has the potential to increase the merge effort: code refactorings. We analyze the relationship between the occurrence of refactorings and the merge effort. To do so, we applied a data mining technique called association rule extraction to find patterns of behavior that allow us to analyze the influence of refactorings on the merge effort. Our experiments extracted association rules from 40,248 merge commits that occurred in 28 popular open-source projects. The results indicate that: (i) the occurrence of refactorings increases the chances of having merge effort; (ii) the more refactorings, the greater the chances of effort; (iii) the more refactorings, the greater the effort; and (iv) parallel refactorings increase even more the chances of having effort, as well as the intensity of it. The results obtained may suggest behavioral changes in the way refactorings are implemented by developer teams. In addition, they can indicate possible ways to improve tools that support code merging and those that recommend refactorings, considering the number of refactorings and merge effort attributes.
- 16 January 2023
- Published by Springer Nature in Empirical Software Engineering
- Vol. 28 (2) , 1-35
On the assignment of commits to releases
- 16 January 2023
- Published by Springer Nature in Empirical Software Engineering
- Vol. 28 (2) , 1-35
On the assignment of commits to releases
- Open Access
- 3 October 2022
- Published by Sociedade Brasileira de Computação
- p. 6-10
Merge Nature: a tool to support research about merge conflicts
The modern software development model requires concurrent programming to create more complex programs. As such, existing approaches are able to track and merge the changes made on a code repository, allowing more developers to work collaboratively. Despite these solutions, 10% to 20% of all merges result in conflicts, such as when changes are made on the same file region. Existing studies have analyzed, prevented, predicted, and even automatically resolved merge conflicts. However, they are usually focused on a specific language or on language-independent information from the source-code lines involved in the conflict. This situation hinders the generalization of results. To enrich the information to be used by further studies about merges, we present the Merge Nature Tool, which recreates all project merges and extracts characteristics from conflicts, such as the resolutions adopted by developers, and the language constructs involved in the conflict for Java, C++, and Python files. The tool was evaluated regarding reproducibility and generalization. It was able to reproduce 87.75% of the results of a previous study. The differences can be explained by newly introduced features. On the other hand, regarding generalization, the tool was used to analyze a set of 100 merges from Python projects. The merges were analyzed manually to ensure the reliability of the results. We found that 100% of the data matched the expected result. We expect this tool to facilitate future work regarding merge conflicts. For instance, it may allow comparing the characteristics of merge conflicts from different programming languages.
- 3 October 2022
- Published by Sociedade Brasileira de Computação
- p. 6-10
Open AccessMerge Nature: a tool to support research about merge conflicts
The modern software development model requires concurrent programming to create more complex programs. As such, existing approaches are able to track and merge the changes made on a code repository, allowing more developers to work collaboratively. Despite these solutions, 10% to 20% of all merges result in conflicts, such as when changes are made on the same file region. Existing studies have analyzed, prevented, predicted, and even automatically resolved merge conflicts. However, they are usually focused on a specific language or on language-independent information from the source-code lines involved in the conflict. This situation hinders the generalization of results. To enrich the information to be used by further studies about merges, we present the Merge Nature Tool, which recreates all project merges and extracts characteristics from conflicts, such as the resolutions adopted by developers, and the language constructs involved in the conflict for Java, C++, and Python files. The tool was evaluated regarding reproducibility and generalization. It was able to reproduce 87.75% of the results of a previous study. The differences can be explained by newly introduced features. On the other hand, regarding generalization, the tool was used to analyze a set of 100 merges from Python projects. The merges were analyzed manually to ensure the reliability of the results. We found that 100% of the data matched the expected result. We expect this tool to facilitate future work regarding merge conflicts. For instance, it may allow comparing the characteristics of merge conflicts from different programming languages.
- Open Access
- 25 October 2021
- Published by Sociedade Brasileira de Computação in Journal of Software Engineering Research and Development
- Vol. 9, 14:1-14:14
Attributes that may raise the occurrence of merge conflicts
Collaborative software development typically involves the use of branches. The changes made in different branches are usually merged, and direct and indirect conflicts may arise. Some studies are concerned with investigating ways to deal with merge conflicts and measuring the effort that this activity may require. However, the investigation of factors that may reduce the occurrence of conflicts needs more and deeper attention. This paper aims at identifying and analyzing attributes of past merges with and without conflicts to understand what may induce direct conflicts. We analyzed 182,273 merge scenarios from 80 projects written in eight different programming languages to find characteristics that increase the chances of a merge to have a conflict. We found that attributes such as the number of changed files, the number of commits, the number of changed lines, and the number of committers demonstrated to have the strongest influence in the occurrence of merge conflicts. Moreover, attributes in the branch that is being integrated seem to be more influential than the same attributes in the receiving branch. Additionally, we discovered positive correlations between the occurrence of conflicts and both the duration of the branch and the intersection of developers in both branches. Finally, we observed that PHP, JavaScript, and Java are more prone to conflicts.
- 25 October 2021
- Published by Sociedade Brasileira de Computação in Journal of Software Engineering Research and Development
- Vol. 9, 14:1-14:14
Open AccessAttributes that may raise the occurrence of merge conflicts
Collaborative software development typically involves the use of branches. The changes made in different branches are usually merged, and direct and indirect conflicts may arise. Some studies are concerned with investigating ways to deal with merge conflicts and measuring the effort that this activity may require. However, the investigation of factors that may reduce the occurrence of conflicts needs more and deeper attention. This paper aims at identifying and analyzing attributes of past merges with and without conflicts to understand what may induce direct conflicts. We analyzed 182,273 merge scenarios from 80 projects written in eight different programming languages to find characteristics that increase the chances of a merge to have a conflict. We found that attributes such as the number of changed files, the number of commits, the number of changed lines, and the number of committers demonstrated to have the strongest influence in the occurrence of merge conflicts. Moreover, attributes in the branch that is being integrated seem to be more influential than the same attributes in the receiving branch. Additionally, we discovered positive correlations between the occurrence of conflicts and both the duration of the branch and the intersection of developers in both branches. Finally, we observed that PHP, JavaScript, and Java are more prone to conflicts.
- Top Cited Papers
- 8 May 2021
- Published by Springer Nature in Empirical Software Engineering
- Vol. 26 (4) , 1-55
Understanding and improving the quality and reproducibility of Jupyter notebooks
Jupyter Notebooks have been widely adopted by many different communities, both in science and industry. They support the creation of literate programming documents that combine code, text, and execution results with visualizations and other rich media. The self-documenting aspects and the ability to reproduce results have been touted as significant benefits of notebooks. At the same time, there has been growing criticism that the way in which notebooks are being used leads to unexpected behavior, encourages poor coding practices, and makes it hard to reproduce its results. To better understand good and bad practices used in the development of real notebooks, in prior work we studied 1.4 million notebooks from GitHub. We presented a detailed analysis of their characteristics that impact reproducibility, proposed best practices that can improve the reproducibility, and discussed open challenges that require further research and development. In this paper, we extended the analysis in four different ways to validate the hypothesis uncovered in our original study. First, we separated a group of popular notebooks to check whether notebooks that get more attention have more quality and reproducibility capabilities. Second, we sampled notebooks from the full dataset for an in-depth qualitative analysis of what constitutes the dataset and which features they have. Third, we conducted a more detailed analysis by isolating library dependencies and testing different execution orders. We report how these factors impact the reproducibility rates. Finally, we mined association rules from the notebooks. We discuss patterns we discovered, which provide additional insights into notebook reproducibility. Based on our findings and best practices we proposed, we designed Julynter, a Jupyter Lab extension that identifies potential issues in notebooks and suggests modifications that improve their reproducibility. We evaluate Julynter with a remote user experiment with the goal of assessing Julynter recommendations and usability.
- 8 May 2021
- Published by Springer Nature in Empirical Software Engineering
- Vol. 26 (4) , 1-55
Top Cited PapersUnderstanding and improving the quality and reproducibility of Jupyter notebooks
Jupyter Notebooks have been widely adopted by many different communities, both in science and industry. They support the creation of literate programming documents that combine code, text, and execution results with visualizations and other rich media. The self-documenting aspects and the ability to reproduce results have been touted as significant benefits of notebooks. At the same time, there has been growing criticism that the way in which notebooks are being used leads to unexpected behavior, encourages poor coding practices, and makes it hard to reproduce its results. To better understand good and bad practices used in the development of real notebooks, in prior work we studied 1.4 million notebooks from GitHub. We presented a detailed analysis of their characteristics that impact reproducibility, proposed best practices that can improve the reproducibility, and discussed open challenges that require further research and development. In this paper, we extended the analysis in four different ways to validate the hypothesis uncovered in our original study. First, we separated a group of popular notebooks to check whether notebooks that get more attention have more quality and reproducibility capabilities. Second, we sampled notebooks from the full dataset for an in-depth qualitative analysis of what constitutes the dataset and which features they have. Third, we conducted a more detailed analysis by isolating library dependencies and testing different execution orders. We report how these factors impact the reproducibility rates. Finally, we mined association rules from the notebooks. We discuss patterns we discovered, which provide additional insights into notebook reproducibility. Based on our findings and best practices we proposed, we designed Julynter, a Jupyter Lab extension that identifies potential issues in notebooks and suggests modifications that improve their reproducibility. We evaluate Julynter with a remote user experiment with the goal of assessing Julynter recommendations and usability.