VLDB 2026 Research / reviewers in the wild / expert
Paulo Borba
dblp:b/PauloBorba · also Paulo H. M. Borba, Paulo Henrique Monteiro Borba
· DBLP profile ↗
63ranked-venue papers
7as first author
6since 2021 · last 2026
0000-0002-0381-2843ORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 60 · 5 first-author · 6 since 2021Applied, interdisciplinary, general and emerging computing · 9Artificial intelligence and machine learning · 6Theory of computation · 2 · 2 first-authorDatabases, data management, data science and information retrieval · 1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2026 | Comparing static analyses for improved semantic conflict detection
Galileu Santos de Jesus, Paulo Borba, Rodrigo Bonifácio, Matheus Barbosa de Oliveira |
Autom. Softw. Eng. | 2 |
| 2024 | Semistructured Merge with Language-Specific Syntactic SeparatorsabstractStructured merge tools exploit programming language syntactic structure to enhance merge accuracy by reducing spurious conflicts reported by unstructured tools. By creating and handling full ASTs, structured tools are language-specific and harder to implement. They can also be computationally expensive when merging large files. To reduce these drawbacks, semistructured merge tools work with partial ASTs that use strings to represent lower level syntactic structures such as method bodies, and rely on unstructured tools to merge them. This, however, results in merge accuracy loss. To improve accuracy without compromising semistructured merge benefits, we propose a tool that leverages language-specific syntactic separators to infer structure without parsing. We still resort to an unstructured tool to merge lower level structures, but only after preprocessing the code so that text in between separators such as curly braces appear in separate lines. This way we emulate the capabilities of structured merge tools while avoiding their drawbacks. By comparing our tool with a robust implementation of semistructured merge, we find that our tool substantially reduces the number of spurious conflicts. We also observe significant but less substantial reductions on the overall number of reported conflicts, and of files with conflicts. However, similar to structured tools, our tool lets more merge conflicts go undetected. Our tool shows significant improvements over unstructured tools widely used in practice. Finally we observe that exploiting language-specific syntactic separators introduces unique textual alignment challenges. Guilherme Cavalcanti, Paulo Borba, Leonardo dos Anjos, Jônatas Clementino |
ASE | 2 |
| 2024 | Detecting semantic conflicts with unit testsabstractWhile modern merge techniques, such as 3-way and structured merge, can resolve textual conflicts automatically, they fail when the conflict arises not at the syntactic, but at the semantic level. Detecting such semantic conflicts requires understanding the behavior of the software, which is beyond the capabilities of most existing merge tools. Although semantic merge tools have been proposed, they are usually based on heavyweight static analyses, or need explicit specifications of program behavior. In this work, we take a different route and propose SAM (SemAntic Merge), a semantic merge tool based on the automated generation of unit tests that are used as partial specifications of the changes to be merged, and that drive the detection of unwanted behavior changes (conflicts) when merging software. To evaluate SAM’s feasibility for detecting conflicts, we perform an empirical study relying on a dataset of more than 80 pairs of changes integrated to common class elements (constructors, methods, and fields) from 51 merge scenarios. We also assess how the four unit test generation tools used by SAM individually contribute to conflict identification. Our results show that SAM performs best when combining only the tests generated by Differential EvoSuite and EvoSuite, and using our proposed testability transformations (nine detected conflicts out of 29). These results reinforce previous findings about the potential of using test-case generation to detect conflicts as a method that is versatile and requires only limited deployment effort in practice. Léuson M. P. da Silva, Paulo Borba, Toni Maciel, Wardah Mahmood, Thorsten Berger, João Moisakis, Aldiberg Gomes, Vinícius Leite |
J. Syst. Softw. | 2 |
| 2023 | Using acceptance tests to predict merge conflict risk
Thaís Rocha, Paulo Borba |
Empir. Softw. Eng. | 2 |
| 2022 | Build conflicts in the wildabstractAbstract When collaborating, developers often create and change software artifacts without being fully aware of team members' work. While such independence is essential for increasing development productivity, it might also result in conflicts when integrating developers' contributions. To better understand the conflicts revealed by failures when building integrated code, we investigate their frequency and structure and adopted resolution patterns in 451 open‐source Java projects. To detect such build conflicts, we select merge scenarios from git repositories, parse their Travis build logs, and check whether the build error messages are related to the merged changes. We find and classify 239 build conflicts and their resolution patterns. Most build conflicts are caused by missing declarations removed or renamed by one developer but referenced by another developer. Conflicts caused by renaming are often resolved by updating the missing reference, whereas removed declarations are often reintroduced. Most fix commits are authored by one of the merge scenario contributors. Based on our catalogue of conflict causes, awareness tools could alert developers about the risk of conflict situations. Program repair tools could benefit from our catalogue of resolution patterns to automatically fix conflicts; we illustrate that with a proof of concept implementation of a tool that fixes conflicts. Léuson M. P. da Silva, Paulo Borba, Arthur Pires |
J. Softw. Evol. Process. | 2 |
| 2022 | Leveraging Structure in Software Merge: An Empirical StudyabstractLarge-scale software development today relies heavily on version control systems facilitating distributed development of software projects. For the purpose of merging diverging versions of the code base, version control systems employ line-based merge algorithms, which are applicable to all text files. Structured merge algorithms have been proposed as an alternative to unstructured, line-based merging, with the goal of reducing the number of merge conflicts that have to be manually resolved by the developer. By leveraging the structure inherent in source code (i.e., by representing source code files in terms of abstract syntax trees instead of sequences of text lines), these algorithms are able to merge revisions in various situations (e.g., reordering of methods) that would cause conflicts when merged using an unstructured approach. However, merging abstract syntax trees is inherently more complex than merging sequences of text lines, which makes structured merge algorithms computationally more expensive than an unstructured merge. To reduce the runtime cost of structured merge algorithms, semistructured merge as well as combinations of different merge strategies were proposed. As such, we observe a range of increasingly structured merge algorithms, which feature different characteristics in terms of conflict resolution and runtime. The progressively increasing use of structure to avoid merge conflicts or to automate conflict resolution raises a number of questions: How is the correctness of the code resulting from a merge affected when employing structured merge algorithms? Which algorithm strikes the best balance between runtime, conflict resolution potential, and correctness of the merge result? For the first time, we evaluate a whole range of merge algorithms (from unstructured over semistructured to structured as well as combinations) by replaying merge commits in a controlled setting. We employ the test suite of the projects in question as an oracle for the correctness of the resulting code, triangulated by a thorough manual analysis. Using 7727 merge commits from 10 open-source projects, we find that combined strategies appear to be the best of both worlds: They resolve as many conflicts as structured merge at a significantly lower runtime per merge commit. Notably, structured merge strategies do cause more test failures, however, the increase is small. Georg Seibt, Florian Heck, Guilherme Cavalcanti, Paulo Borba, Sven Apel |
IEEE Trans. Software Eng. | 4 |
| 2020 | Detecting Semantic Conflicts via Automated Behavior Change DetectionabstractBranching and merging are common practices in collaborative software development. They increase developer productivity by fostering teamwork, allowing developers to independently contribute to a software project. Despite such benefits, branching and merging comes at a cost-the need to merge software and to resolve merge conflicts, which often occur in practice. While modern merge techniques, such as 3-way or structured merge, can resolve many such conflicts automatically, they fail when the conflict arises not at the syntactic, but the semantic level. Detecting such conflicts requires understanding the behavior of the software, which is beyond the capabilities of most existing merge tools. As such, semantic conflicts can only be identified and fixed with significant effort and knowledge of the changes to be merged. While semantic merge tools have been proposed, they are usually heavyweight, based on static analysis, and need explicit specifications of program behavior. In this work, we take a different route and explore the automated creation of unit tests as partial specifications to detect unwanted behavior changes (conflicts) when merging software.We systematically explore the detection of semantic conflicts through unit-test generation. Relying on a ground-truth dataset of 38 software merge scenarios, which we extracted from GitHub, we manually analyzed them and investigated whether semantic conflicts exist. Next, we apply test-generation tools to study their detection rates. We propose improvements (code transformations) and study their effectiveness, as well as we qualitatively analyze the detection results and propose future improvements. For example, we analyze the generated test suites for false-negative cases to understand why the conflict was not detected. Our results evidence the feasibility of using test-case generation to detect semantic conflicts as a method that is versatile and requires only limited deployment effort in practice, as well as it does not require explicit behavior specifications. Léuson M. P. da Silva, Paulo Borba, Wardah Mahmood, Thorsten Berger, João Moisakis |
ICSME | 2 |
| 2020 | Understanding predictive factors for merge conflicts
Klissiomara L. Dias, Paulo Borba, Marcos Barreto 0002 |
Inf. Softw. Technol. | 2 |
| 2020 | Privacy and security constraints for code contributionsabstractSummary In collaborative software development, developers submit their contributions to repositories that are used to integrate code from various collaborators. To avoid privacy and security issues, code contributions are often reviewed before integration. Although careful manual code review can detect such issues, it might be time‐consuming, expensive, and error‐prone. Automatic analysis tools can also detect privacy and security issues, but they often demand significant developer effort, or are domain specific, considering fixed framework specific vulnerability sources and sinks. To reduce these problems, in this paper we propose the Salvum policy language to support the specification of constraints that help to protect sensitive information from being inadvertently accessed by specific code contributions. We implement a tool that automatically checks Salvum policies for systems of different technical domains. We also investigate whether Salvum can find policy violations for a number of open‐source projects. We find evidence that Salvum helps to detect violations even for well‐supported and highly active projects. Moreover, our tool helps to find 80 violations in benchmark projects. Rodrigo Andrade, Paulo Borba |
Softw. Pract. Exp. | 2 |
| 2019 | The Impact of Structure on Software Merging: Semistructured Versus Structured MergeabstractMerge conflicts often occur when developers concurrently change the same code artifacts. While state of practice unstructured merge tools (e.g Git merge) try to automatically resolve merge conflicts based on textual similarity, semistructured and structured merge tools try to go further by exploiting the syntactic structure and semantics of the artifacts involved. Although there is evidence that semistructured merge has significant advantages over unstructured merge, and that structured merge reports significantly fewer conflicts than unstructured merge, it is unknown how semistructured merge compares with structured merge. To help developers decide which kind of tool to use, we compare semistructured and structured merge in an empirical study by reproducing more than 40,000 merge scenarios from more than 500 projects. In particular, we assess how often the two merge strategies report different results, we identify conflicts incorrectly reported by one but not by the other (false positives), and conflicts correctly reported by one but missed by the other (false negatives). Our results show that semistructured and structured merge differ in 24% of the scenarios with conflicts. Semistructured merge reports more false positives, whereas structured merge has more false negatives. Finally, we found that adapting a semistructured merge tool to resolve a particular kind of conflict makes semistructured and structured merge even closer. Guilherme Cavalcanti, Paulo Borba, Georg Seibt, Sven Apel |
ASE | 2 |
| 2019 | Semistructured Merge in JavaScript SystemsabstractIndustry widely uses unstructured merge tools that rely on textual analysis to detect and resolve conflicts between code contributions. Semistructured merge tools go further by partially exploring the syntactic structure of code artifacts, and, as a consequence, obtaining significant merge accuracy gains for Java-like languages. To understand whether semistructured merge and the observed gains generalize to other kinds of languages, we implement two semistructured merge tools for JavaScript, and compare them to an unstructured tool. We find that current semistructured merge algorithms and frameworks are not directly applicable for scripting languages like JavaScript. By adapting the algorithms, and studying 10,345 merge scenarios from 50 JavaScript projects on GitHub, we find evidence that our JavaScript tools report fewer spurious conflicts than unstructured merge, without compromising the correctness of the merging process. The gains, however, are much smaller than the ones observed for Java-like languages, suggesting that semistructured merge advantages might be limited for languages that allow both commutative and non-commutative declarations at the same syntactic level. Alberto Trindade Tavares, Paulo Borba, Guilherme Cavalcanti, Sérgio Soares |
ASE | 2 |
| 2019 | Using acceptance tests to predict files changed by programming tasks
Thaís Rocha, Paulo Borba, João Pedro Santos |
J. Syst. Softw. | 2 |
| 2019 | Partially safe evolution of software product lines
Gabriela Cunha Sampaio, Paulo Borba, Leopoldo Teixeira |
J. Syst. Softw. | 2 |
| 2018 | Understanding Semi-structured merge conflict characteristics in open-source Java projects (journal-first abstract)abstractIn a collaborative development environment, tasks are commonly assigned to developers working independent from each other. As a result, when trying to integrate these contributions, one might have to deal with conflicting changes. Such conflicts might be detected when merging contributions (merge conflicts), when building the system (build conflicts), or when running tests (semantic conflicts). Regarding such conflicts, previous studies show that they occur frequently, and impair developers’ productivity, as understanding and solving them is a demanding and tedious task that might introduce defects. Paola R. G. Accioly, Paulo Borba, Guilherme Cavalcanti |
ASE | 2 |
| 2018 | Analyzing conflict predictors in open-source Java projectsabstractIn collaborative development environments integration conflicts occur frequently. To alleviate this problem, different awareness tools have been proposed to alert developers about potential conflicts before they become too complex. However, there is not much empirical evidence supporting the strategies used by these tools. Learning about what types of changes most likely lead to conflicts might help to derive more appropriate requirements for early conflict detection, and suggest improvements to existing conflict detection tools. To bring such evidence, in this paper we analyze the effectiveness of two types of code changes as conflict predictors. Namely, editions to the same method, and editions to directly dependent methods. We conduct an empirical study analyzing part of the development history of 45 Java projects from GitHub and Travis CI, including 5,647 merge scenarios, to compute the precision and recall for the conflict predictors aforementioned. Our results indicate that the predictors combined have a precision of 57.99% and a recall of 82.67%. Moreover, we conduct a manual analysis which provides insights about strategies that could further increase the precision and the recall. Paola R. G. Accioly, Paulo Borba, Léuson M. P. da Silva, Guilherme Cavalcanti |
MSR | 2 |
| 2018 | Understanding semi-structured merge conflict characteristics in open-source Java projects
Paola R. G. Accioly, Paulo Borba, Guilherme Cavalcanti |
Empir. Softw. Eng. | 2 |
| 2018 | Detecting Overly Strong Preconditions in Refactoring EnginesabstractRefactoring engines may have overly strong preconditions preventing developers from applying useful transformations. We find that 32 percent of the Eclipse and JRRT test suites are concerned with detecting overly strong preconditions. In general, developers manually write test cases, which is costly and error prone. Our previous technique detects overly strong preconditions using differential testing. However, it needs at least two refactoring engines. In this work, we propose a technique to detect overly strong preconditions in refactoring engines without needing reference implementations. We automatically generate programs and attempt to refactor them. For each rejected transformation, we attempt to apply it again after disabling the preconditions that lead the refactoring engine to reject the transformation. If it applies a behavior preserving transformation, we consider the disabled preconditions overly strong. We evaluate 10 refactorings of Eclipse and JRRT by generating 154,040 programs. We find 15 overly strong preconditions in Eclipse and 15 in JRRT. Our technique detects 11 bugs that our previous technique cannot detect while missing 5 bugs. We evaluate the technique by replacing the programs generated by JDolly with the input programs of Eclipse and JRRT test suites. Our technique detects 14 overly strong preconditions in Eclipse and 4 in JRRT. Melina Mongiovi, Rohit Gheyi, Gustavo Soares, Márcio Ribeiro 0001, Paulo Borba, Leopoldo Teixeira |
IEEE Trans. Software Eng. | 5 |
| 2017 | An idiom to represent data types in Alloy
Rohit Gheyi, Paulo Borba, Augusto Sampaio 0001, Márcio Ribeiro 0001 |
Inf. Softw. Technol. | 2 |
| 2017 | Evaluating and improving semistructured mergeabstractWhile unstructured merge tools rely only on textual analysis to detect and resolve conflicts, semistructured merge tools go further by partially exploiting the syntactic structure and semantics of the involved artifacts. Previous studies compare these merge approaches with respect to the number of reported conflicts, showing, for most projects and merge situations, reduction in favor of semistructured merge. However, these studies do not investigate whether this reduction actually leads to integration effort reduction (productivity) without negative impact on the correctness of the merging process (quality). To analyze that, and better understand how merge tools could be improved, in this paper we reproduce more than 30,000 merges from 50 open source projects, identifying conflicts incorrectly reported by one approach but not by the other (false positives), and conflicts correctly reported by one approach but missed by the other (false negatives). Our results and complementary analysis indicate that, in the studied sample, the number of false positives is significantly reduced when using semistructured merge. We also find evidence that its false positives are easier to analyze and resolve than those reported by unstructured merge. However, we find no evidence that semistructured merge leads to fewer false negatives, and we argue that they are harder to detect and resolve than unstructured merge false negatives. Driven by these findings, we implement an improved semistructured merge tool that further combines both approaches to reduce the false positives and false negatives of semistructured merge. We find evidence that the improved tool, when compared to unstructured merge in our sample, reduces the number of reported conflicts by half, has no additional false positives, has at least 8% fewer false negatives, and is not prohibitively slower. Guilherme Cavalcanti, Paulo Borba, Paola R. G. Accioly |
Proc. ACM Program. Lang. | 2 |
| 2017 | Empirical assessment of two approaches for specifying software product line use case scenarios
Rodrigo Bonifácio, Paulo Borba, Cristiano Ferraz, Paola R. G. Accioly |
Softw. Syst. Model. | 2 |
| 2016 | Partially safe evolution of software product linesabstractA key challenge developers might face when evolving a product line is not to inadvertently affect users of existing products. In refactoring and conservative extension scenarios, we can avoid this problem by checking for behavior preservation, either by testing the generated products or by using formal theories. Product line refinement theories support that by requiring behavior preservation for all existing products. However, in many evolution scenarios, such as bug fixing, there is a high chance that only some of the products are refined. To support developers in these and other non full-refinement situations, we define a theory of partial product line refinement that helps to precisely understand which products should not be affected by an evolution scenario. This provides a kind of impact analysis that could, for example, reduce test effort, since products not affected do not need to be tested. Additionally, we formally derive a catalog of eight partial refinement templates that capture evolution scenarios, and associated preconditions, not covered before. Finally, by analyzing 79218 commits from the Linux repository, we find evidence that the proposed templates could cover a number of practical evolution scenarios. Gabriela Cunha Sampaio, Paulo Borba, Leopoldo Teixeira |
SPLC | 2 |
| 2016 | Assessing Idioms for a Flexible Feature Binding TimeabstractIn software product lines development, it is sometimes important to provide a flexible binding time for features such that developers can choose between static or dynamic feature activation. For example, software products designed for devices with constrained resources may use a static binding time to avoid the performance overhead introduced by dynamic binding time activation. However, other devices can exploit binding time flexibility to support products with a dynamic binding time for some of their features. To implement this kind of flexibility in a modular way, we can define AspectJ-based idioms. Researchers have proposed Edicts, an idiom based on AspectJ and design patterns. In this article, we argue that this idiom leads to an increase in code duplication, scattering, tangling and size, which can hamper code reuse, maintenance and understanding. To mitigate such issues, this paper proposes three idioms based on aspect-oriented programming to implement flexible feature binding. We apply our three idioms, along with Edicts, to implement a flexible binding time for features in four different applications. By doing so, we were able to assess the resulting implementations by using software metrics that judge code-quality factors. Our evaluation suggests that our idioms reduce the above-mentioned problems when implementing flexible feature binding for the selected features. Rodrigo Andrade, Márcio Ribeiro 0001, Henrique Rebêlo, Paulo Borba, Vaidas Gasiunas, Lucas Satabin |
Comput. J. | 4 |
| 2016 | Coevolution of variability models and related software artifacts - A fresh look at evolution patterns in the Linux kernel
Leonardo Teixeira Passos, Leopoldo Teixeira, Nicolas Dintzner, Sven Apel, Andrzej Wasowski, Krzysztof Czarnecki 0001, Paulo Borba, Jianmei Guo |
Empir. Softw. Eng. | 7 |
| 2016 | Assessing fine-grained feature dependencies
Iran Rodrigues, Márcio Ribeiro 0001, Flávio Medeiros, Paulo Borba, Baldoino Fonseca dos Santos Neto, Rohit Gheyi |
Inf. Softw. Technol. | 4 |
| 2015 | Improving Performance and Maintainability of Object Cloning with Lazy Clones: An Empirical EvaluationabstractObject cloning is demanded by the prototype design pattern, copy-on-write strategy, some graph transformations, and many other scenarios. We have been developing a static analysis tool that clones objects frequently. In that context, issues related to performance, memory usage, and code maintainability might arise. Traditional deep cloning with dynamic allocation, reflection, and serialization, have not fulfilled those requirements. Thus, we developed novel implementations of lazy cloning with dynamic proxies and aspect-oriented programming (AOP). We defined benchmarks based on real workload to quantitatively assess the benefits of each implementation. AOP was chosen since it better harmonizes performance, memory usage and code maintainability. It was 88% faster than serialization, consumed 9 times less memory than reflection, and required 25 times less modifications on source code than dynamic allocation. In summary, we believe that the results can be extrapolated to broader contexts helping developers to make evidence-based decisions when object cloning is needed. Bruno Cartaxo, Paulo Borba, Sérgio Soares, Helio Fugimoto |
ESEM | 2 |
| 2015 | Assessing Semistructured Merge in Version Control Systems: A Replicated ExperimentabstractContext: To reduce the integration effort arising from conflicting changes resulting from collaborative software development tasks, unstructured merge tools try to automatically solve part of the conflicts via textual similarity, whereas structured and semistructured merge tools try to go further by exploiting the syntactic structure of the involved artifacts. Objective: In this study, aiming at increasing the existing body of evidence and assessing results for systems developed under an alternative version control paradigm, we replicate an experiment conducted by Apel et al. to compare the unstructured and semistructured approach with respect to the occurrence of conflicts reported by both approaches. Method: We used both semistructured and unstructured merge in a sample 2.5 times bigger than the original study regarding the number of projects and 18 times bigger regarding the number of merge scenarios, and we compared the occurrence of conflicts. Results: Similar to the original study, we observed that semistructured merge reduces the number of conflicts in 55% of the scenarios of the new sample. However, the observed average conflict reduction of 62% in these scenarios is far superior than what has been observed before. We also bring new evidence that the use of semistructured merge can reduce the occurrence of conflicting merge scenarios by half. Conclusions: Our findings reinforce the benefits of exploiting the syntactic structure of the artifacts involved in code integration. Besides, the reductions observed in the number and size of conflicts suggest that the use of semistructured merge, when compared to the unstructured approach, might decrease integration effort without compromising correctness. Guilherme Cavalcanti, Paola R. G. Accioly, Paulo Borba |
ESEM | 3 |
| 2015 | A product line of theories for reasoning about safe evolution of product linesabstractA product line refinement theory formalizes safe evolution in terms of a refinement notion, which does not rely on particular languages for the elements that constitute a product line. Based on this theory, we can derive refinement templates to support safe evolution scenarios. To do so, we need to provide formalizations for particular languages, to specify and prove the templates. Without a systematic approach, this leads to many similar templates and thus repetitive verification tasks. We investigate and explore similarities between these concrete languages, which ultimately results in a product line of theories, where different languages correspond to features, and products correspond to theory instantiations. This also leads to specifying refinement templates at a higher abstraction level, which, in the long run, reduces the specification and proof effort, and also provides the benefits of reusing such templates for additional languages plugged into the theory. We use the Prototype Verification System to encode and prove soundness of the theories and their instantiations. Moreover, we also use the refinement theory to reason about safe evolution of the proposed product line of theories. Leopoldo Teixeira, Vander Alves, Paulo Borba, Rohit Gheyi |
SPLC | 3 |
| 2015 | Safe evolution of product populations and multi product linesabstractA product line is often developed in the context of a set of related product lines. When supporting separate feature development, we might have product populations, with product line versions being simultaneously developed in different branches. Multi product lines involve a number of product lines that depend on each other. A product line refinement notion formalizes safe evolution, but this is not sufficient for reasoning over sets of product lines. We propose refinement notions and compositionality properties that help to explain how we can support modular development in these contexts. Thus, we formally define the foundations for safe and modular evolution of product populations and multi product lines, enabling developers to perform changes in a systematic manner. Leopoldo Teixeira, Paulo Borba, Rohit Gheyi |
SPLC | 2 |
| 2015 | Safe evolution templates for software product lines
Laís Neves, Paulo Borba, Vander Alves, Lucinéia Turnes, Leopoldo Teixeira, Demóstenes Sena, Uirá Kulesza |
J. Syst. Softw. | 2 |
| 2014 | Feature maintenance with emergent interfacesabstractHidden code dependencies are responsible for many complications in maintenance tasks. With the introduction of variable features in configurable systems, dependencies may even cross feature boundaries, causing problems that are prone to be detected late. Many current implementation techniques for product lines lack proper interfaces, which could make such dependencies explicit. As alternative to changing the implementation approach, we provide a tool-based solution to support developers in recognizing and dealing with feature dependencies: emergent interfaces. Emergent interfaces are inferred on demand, based on feature-sensitive intraprocedural and interprocedural data-flow analysis. They emerge in the IDE and emulate modularity benefits not available in the host language. To evaluate the potential of emergent interfaces, we conducted and replicated a controlled experiment, and found, in the studied context, that emergent interfaces can improve performance of code change tasks by up to 3 times while also reducing the number of errors. Márcio Ribeiro 0001, Paulo Borba, Christian Kästner |
ICSE | 2 |
| 2014 | Evaluating scenario-based SPL requirements approaches: the case for modularity, stability and expressiveness
Mauricio Alférez, Rodrigo Bonifácio, Leopoldo Teixeira, Paola R. G. Accioly, Uirá Kulesza, Ana Moreira 0001, João Araújo 0001, Paulo Borba |
Requir. Eng. | 8 |
| 2014 | Making refactoring safer through impact analysis
Melina Mongiovi, Rohit Gheyi, Gustavo Soares, Leopoldo Teixeira, Paulo Borba |
Sci. Comput. Program. | 5 |
| 2013 | SPLLIFT: statically analyzing software product lines in minutes instead of yearsabstractA software product line (SPL) encodes a potentially large variety of software products as variants of some common code base. Up until now, re-using traditional static analyses for SPLs was virtually intractable, as it required programmers to generate and analyze all products individually. In this work, however, we show how an important class of existing inter-procedural static analyses can be transparently lifted to SPLs. Without requiring programmers to change a single line of code, our approach SPLLIFT automatically converts any analysis formulated for traditional programs within the popular IFDS framework for inter-procedural, finite, distributive, subset problems to an SPL-aware analysis formulated in the IDE framework, a well-known extension to IFDS. Using a full implementation based on Heros, Soot, CIDE and JavaBDD, we show that with SPLLIFT one can reuse IFDS-based analyses without changing a single line of code. Through experiments using three static analyses applied to four Java-based product lines, we were able to show that our approach produces correct results and outperforms the traditional approach by several orders of magnitude. Eric Bodden, Társis Tolêdo, Márcio Ribeiro 0001, Claus Brabrand, Paulo Borba, Mira Mezini |
PLDI | 5 |
| 2013 | A Model-Driven Approach to Specifying and Monitoring Controlled Experiments in Software Engineering
Marília Aranha Freire, Paola R. G. Accioly, Gustavo Sizílio, Edmilson Campos Neto, Uirá Kulesza, Eduardo Aranha, Paulo Borba |
PROFES | 7 |
| 2013 | Coevolution of variability models and related artifacts: a case study from the Linux kernelabstractVariability-aware systems are subject to the coevolution of variability models and related artifacts. Surprisingly, little knowledge exists to understand such coevolution in practice. This shortage is directly reflected in existing approaches and tools for variability management, as they fail to provide effective support for such a coevolution. To understand how variability models and related artifacts coevolve in a large and complex real-world variability-aware system, we inspect over 500 Linux kernel commits spanning almost four years of development. We collect a catalog of evolution patterns, capturing the coevolution of the Linux kernel variability model, Makefiles, and C source code. Further, we extract general findings to guide further research and tool development. Leonardo Teixeira Passos, Jianmei Guo, Leopoldo Teixeira, Krzysztof Czarnecki 0001, Andrzej Wasowski, Paulo Borba |
SPLC | 6 |
| 2013 | The crosscutting impact of the AOSD Brazilian research community
Uirá Kulesza, Sérgio Soares, Christina von Flach G. Chavez, Fernando Castor Filho, Paulo Borba, Carlos José Pereira de Lucena, Paulo César Masiero, Cláudio Sant'Anna, Fabiano Cutigi Ferrari, Vander Alves, Roberta Coelho, Eduardo Figueiredo 0001, Paulo F. Pires, Flávia Coimbra Delicato, Eduardo Piveta, Carla T. L. L. Silva, Valter Vieira de Camargo, Rosana T. V. Braga, Julio César Sampaio do Prado Leite, Otávio Augusto Lazzarini Lemos, Nabor das Chagas Mendonça, Thaís Vasconcelos Batista, Rodrigo Bonifácio, Nélio Cacho, Lyrene Fernandes da Silva, Arndt von Staa, Fábio Fagundes Silveira, Marco Túlio Valente, Fernanda M. R. Alencar, Jaelson Brelaz de Castro, Ricardo Argenton Ramos, Rosângela A. D. Penteado, Cecília M. F. Rubira |
J. Syst. Softw. | 5 |
| 2013 | A design rule language for aspect-oriented programming
Alberto Costa Neto, Rodrigo Bonifácio, Márcio Ribeiro 0001, Carlos Eduardo Pontual, Paulo Borba, Fernando Castor Filho |
J. Syst. Softw. | 5 |
| 2013 | Safe composition of configuration knowledge-based software product lines
Leopoldo Teixeira, Paulo Borba, Rohit Gheyi |
J. Syst. Softw. | 2 |
| 2012 | Special issue with selected papers from the 23rd Brazilian Symposium on Software Engineering
Paulo Borba |
J. Syst. Softw. | 1 |
| 2012 | Modularity analysis of use case implementations
Fernanda d'Amorim, Paulo Borba |
J. Syst. Softw. | 2 |
| 2012 | A theory of software product line refinement
Paulo Borba, Leopoldo Teixeira, Rohit Gheyi |
Theor. Comput. Sci. | 1 |
| 2011 | Investigating the safe evolution of software product linesabstractThe adoption of a product line strategy can bring significant productivity and time to market improvements. However, evolving a product line is risky because it might impact many products and their users. So when evolving a product line to introduce new features or to improve its design, it is important to make sure that the behavior of existing products is not affected. In fact, to preserve the behavior of existing products one usually has to analyze different artifacts, like feature models, configuration knowledge and the product line core assets. To better understand this process, in this paper we discover and analyze concrete product line evolution scenarios and, based on the results of this study, we describe a number of safe evolution templates that developers can use when working with product lines. For each template, we show examples of their use in existing product lines. We evaluate the templates by also analyzing the evolution history of two different product lines and demonstrating that they can express the corresponding modifications and then help to avoid the mistakes that we identified during our analysis. Laís Neves, Leopoldo Teixeira, Demóstenes Sena, Vander Alves, Uirá Kulesza, Paulo Borba |
GPCE | 6 |
| 2011 | On the impact of feature dependencies when maintaining preprocessor-based software product linesabstractDuring Software Product Line (SPL) maintenance tasks, Virtual Separation of Concerns (VSoC) allows the programmer to focus on one feature and hide the others. However, since features depend on each other through variables and control-flow, feature modularization is compromised since the maintenance of one feature may break another. In this context, emergent interfaces can capture dependencies between the feature we are maintaining and the others, making developers aware of dependencies. To better understand the impact of code level feature dependencies during SPL maintenance, we have investigated the following two questions: how often methods with preprocessor directives contain feature dependencies? How feature dependencies impact maintenance effort when using VSoC and emergent interfaces? Answering the former is important for assessing how often we may face feature dependency problems. Answering the latter is important to better understand to what extent emergent interfaces complement VSoC during maintenance tasks. To answer them, we analyze 43 SPLs of different domains, size, and languages. The data we collect from them complement previous work on preprocessor usage. They reveal that the feature dependencies we consider in this paper are reasonably common in practice; and that emergent interfaces can reduce maintenance effort during the SPL maintenance tasks we regard here. Márcio Ribeiro 0001, Felipe Queiroz, Paulo Borba, Társis Tolêdo, Claus Brabrand, Sérgio Soares |
GPCE | 3 |
| 2010 | A Theory of Software Product Line Refinement
Paulo Borba, Leopoldo Teixeira, Rohit Gheyi |
ICTAC | 1 |
| 2008 | Formal Model-Driven Program Refactoring
Tiago Massoni, Rohit Gheyi, Paulo Borba |
FASE | 3 |
| 2008 | FLiP: Managing Software Product Line Extraction and Reaction with AspectsabstractSummary form only given. The extractive and the reactive software product line (SPL) adoption strategies involve, respectively, bootstrapping existing products into a SPL and extending an existing SPL to encompass another product. In both cases, product line refactorings are useful to guide the SPL derivation process by extracting product variations and appropriately structuring them. They also help to assure the safety of the whole process by preserving SPL configurability. In this context, we describe FLiP, which is a suite of tools implemented as Eclipse plugins and has been designed and tested in the context of mobile game SPLs. Vander Alves, Fernando Calheiros, Vilmar Nepomuceno, Andrea Menezes, Sérgio Soares, Paulo Borba |
SPLC | 6 |
| 2007 | Concurrency Control Modularization with Aspect-Oriented ProgrammingabstractConcurrent programs are essential in the development of web based information systems. The wide dissemination of these systems increased the need for methods to create correct and efficient concurrent programs, which are usually difficult to implement and test. This paper presents guidelines to improve the concurrent control structure of object-oriented software using aspect-oriented programming through AspectJ based on an existent object-oriented concurrency control implementation method. We have defined a simple aspect framework that can be extended to implement concurrency control in applications complying with a software architecture presented in this paper. The framework comprises a set of reusable aspects useful for modularizing concurrency control. Sérgio Soares, Paulo Borba, Ricardo Massa Ferreira Lima |
COMPSAC (1) | 2 |
| 2007 | On the Impact of Aspectual Decompositions on Design Stability: An Empirical Study
Phil Greenwood, Thiago T. Bartolomei, Eduardo Figueiredo 0001, Marcos Dósea, Alessandro F. Garcia 0001, Nélio Cacho, Cláudio Sant'Anna, Sérgio Soares, Paulo Borba, Uirá Kulesza, Awais Rashid |
ECOOP | 9 |
| 2007 | An Estimation Model for Test Execution EffortabstractTesting is an important activity to ensure software quality. Big organizations can have several development teams with their products being tested by overloaded test teams. In such situations, test team managers must be able to properly plan their schedules and resources. Also, estimates for the required test execution effort can be an additional criterion for test selection, since effort may be restrictive in practice. Nevertheless, this information is usually not available for test cases never executed before. This paper proposes an estimation model for test execution effort based on the test specifications. For that, we define and validate a measure of size and execution complexity of test cases. This measure is obtained from test specifications written in a controlled natural language. We evaluated the model through an empirical study on the mobile application domain, which results suggested an accuracy improvement when compared with estimations based only on historical test productivity. Eduardo Aranha, Paulo Borba |
ESEM | 2 |
| 2006 | Refactoring product linesabstractAdoption strategies for Software Product Lines (SPL) frequently involve bootstrapping existing products into a SPL and extending an existing SPL to encompass another product. One way to do that is to use program refactorings. However, the traditional notion of refactoring does not handle appropriately feature models (FM), nor transformations involving multiple instances of the same SPL. For instance, it is not desirable to apply a refactoring into a SPL and reduce its configurability. In this paper, we extend the traditional notion of refactoring to an SPL context. Besides refactoring programs, FMs must also be refactored. We present a set of sound refactorings for FMs. We evaluate this extended refactoring definition for SPL in a real case study in the mobile games domain. Vander Alves, Rohit Gheyi, Tiago Massoni, Uirá Kulesza, Paulo Borba, Carlos José Pereira de Lucena |
GPCE | 5 |
| 2006 | Improving Extensibility of Object-Oriented Frameworks with Aspect-Oriented Programming
Uirá Kulesza, Vander Alves, Alessandro F. Garcia 0001, Carlos José Pereira de Lucena, Paulo Borba |
ICSR | 5 |
| 2006 | Model Simulation for Test Execution Capacity EstimationabstractIt is important for a company to know if it is able to attend the clients' requests on time and according to their expectations, mainly in competitive markets. A usual activity performed to ensure quality is the test activity. Software testing is been considered so important that organizations can allocate teams exclusively for test activities. In this context, it is important that test managers know the capacity of their test team. This paper defines a capacity model for test execution teams and presents the use of simulation technique for estimating teams' capacities for executing tests in mobile applications. We also report our experiences using this model in an organizational setting Eduardo Aranha, Paulo Borba |
ISSRE | 2 |
| 2006 | Distribution and persistence as aspectsabstractAbstract This paper reports our experience using AspectJ, a general‐purpose aspect‐oriented extension to Java, to implement distribution and persistence concerns in a Web‐based information system. This system was originally implemented in Java and restructured with AspectJ. Our main contribution is to show that AspectJ is useful for implementing several persistence and distribution concerns in the considered application, but also in similar applications. We have also identified interferences between the implemented aspects and a few drawbacks in the language, so we suggest some minor language modifications that could significantly improve similar implementations. Despite those problems, we argue that the AspectJ implementation is superior to the pure Java implementation. Some of the aspects implemented in our experiment are abstract and constitute a simple aspect framework. The other aspects are application specific but we suggest that different implementations might follow the same aspect patterns. The framework and the patterns allow us to propose architecture‐specific guidelines that provide practical advice for both restructuring and implementing certain kinds of persistent and distributed applications with AspectJ. Copyright © 2006 John Wiley & Sons, Ltd. Sérgio Soares, Paulo Borba, Eduardo Laureano |
Softw. Pract. Exp. | 2 |
| 2005 | Comparative Analysis of Porting Strategies in J2ME GamesabstractPorting is a critical task in mobile device game development. The high diversity of devices requires correspondingly customized versions of a single game. Managing the variabilities among these customized versions while exploring the latent game commonality cannot be solely addressed with a single technique. This paper contributes to this task by identifying and analyzing porting challenges, and by evaluating and contrasting existing approaches within industrial-strength case studies of J2ME games. Further, we present lessons learned, proposing more effective guidelines for this process, aiming at improving the quality of the resulting applications and porting process productivity. Vander Alves, Ivan Cardim, Heitor Vital, Pedro H. M. Sampaio, Alexandre L. G. Damasceno, Paulo Borba, Geber L. Ramalho |
ICSM | 6 |
| 2005 | A rigorous approach for proving model refactoringsabstractBoth model and program refactorings are usually proposed in an ad hoc way because it is difficult to prove that they are sound with respect to a formal semantics. In this paper, we propose guidelines on how to rigorously prove model refactorings for Alloy, a formal object-oriented modeling language. We use the Prototype Verification System (PVS) to specify and prove the soundness of the transformations. Proposing refactorings in this way can facilitate not only design, but also improve the quality of refactoring tools. Rohit Gheyi, Tiago Massoni, Paulo Borba |
ASE | 3 |
| 2005 | Extracting and Evolving Mobile Games Product Lines
Vander Alves, Pedro Matos Jr., Leonardo Cole, Paulo Borba, Geber L. Ramalho |
SPLC | 4 |
| 2004 | Algebraic reasoning for object-oriented programming
Paulo Borba, Augusto Sampaio 0001, Ana Cavalcanti 0001, Márcio Cornélio |
Sci. Comput. Program. | 1 |
| 2003 | A Refinement Algebra for Object-Oriented Programming
Paulo Borba, Augusto Sampaio 0001, Márcio Cornélio |
ECOOP | 1 |
| 2002 | Concurrency Control with Java and Relational DatabasesabstractAs Web-based information systems usually run in concurrent environment, the complexity for implementing and testing those systems is significantly high. Therefore it is useful to have guidelines to introduce concurrency control, avoiding ad hoc control strategies, which may have a negative impact in efficiency and may not guarantee system safety. This paper defines guidelines for concurrency control in Web-based information systems implemented in Java with relational databases. In particular we show where Java and relational database concurrency control mechanisms should be used in order to implement our concurrency control strategy. Additionally, we analyze the performance of different concurrency controls approaches. The main point of the guidelines is to guarantee system correctness without redundant concurrency control, both increasing performance and guaranteeing safely. Sérgio Soares, Paulo Borba |
COMPSAC | 2 |
| 2002 | Implementing distribution and persistence aspects with aspectJabstractThis paper reports our experience using AspectJ, a generalpurpose aspect-oriented extension to Java, to implement distribution and persistence aspects in a web-based information system. This system was originally implemented in Java and restructured with AspectJ. Our main contribution is to show that AspectJ is useful for implementing several persistence and distribution concerns in the application considered, and other similar applications. We have also identified a few drawbacks in the language and suggest some minor modifications that could significantly improve similar implementations. Despite the drawbacks, we argue that the AspectJ implementation is superior to the pure Java implementation. Some of the aspects implemented in our experiment are abstract and constitute a simple aspect framework. The other aspects are application specific but we suggest that different implementations might follow the same aspect pattern. The framework and the pattern allow us to propose architecture-specific guidelines that provide practical advice for both restructuring and implementing certain kinds of persistent and distributed applications with AspectJ. Sérgio Soares, Eduardo Laureano, Paulo Borba |
OOPSLA | 3 |
| 2000 | Structuring Meachanisms for an Object-Oriented Formal Specification Language
Márcio Cornélio, Paulo Borba |
ICSR | 2 |
| 1997 | A System for Translating Executable VDM Specifiactions into Lazy MLabstractThis article describes the process of developing a system for translating VDM executable specifications into Lazy ML prototypes. The system was specified in VDM and a Lazy ML prototype implementation was derived from its specification. This article concentrates on discussing the lessons learned in each stage of the development process, evaluating the adequacy of the used methodology. © 1997 by John Wiley & Sons, Ltd. Paulo Borba, Silvio Romero de Lemos Meira |
Softw. Pract. Exp. | 1 |
| 1993 | From VDM specifications to functional prototypes
Paulo Borba, Silvio Romero de Lemos Meira |
J. Syst. Softw. | 1 |