Demo Data from EDBT 2026 / reviewers in the wild / expert
Andrea Mattavelli
dblp:116/6661
· DBLP profile ↗
10ranked-venue papers
1as first author
0since 2021 · last 2018
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 10 · 1 first-authorArtificial intelligence and machine learning · 1 · 1 first-author
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Software engineering, system software, and programming languages
8 papers |
Program analysis · 41% Software testing · 34% Software maintenance and evolution · 9% |
Topics — the 12 heaviest of 14, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Program analysis
symbolic execution |
0.7 | 3 | 2018 | Chopped symbolic execution · ICSE 2018 Accelerating array constraints in symbolic execution · ISSTA 2017 Combining symbolic execution and search-based testing for programs with complex heap inputs · ISSTA 2017 |
Software testing
test generation |
0.6 | 2 | 2017 | Accelerating array constraints in symbolic execution · ISSTA 2017 Combining symbolic execution and search-based testing for programs with complex heap inputs · ISSTA 2017 |
Program analysis › symbolic execution
path explosion |
0.3 | 1 | 2018 | Chopped symbolic execution · ICSE 2018 |
Program analysis
constraint solving |
0.3 | 1 | 2017 | Accelerating array constraints in symbolic execution · ISSTA 2017 |
Program analysis
static analysis |
0.3 | 1 | 2017 | Accelerating array constraints in symbolic execution · ISSTA 2017 |
Software testing › test generation
automated test generation |
0.2 | 1 | 2014 | Cross-checking oracles from intrinsic software redundancy · ICSE 2014 |
Software testing
metamorphic testing |
0.2 | 1 | 2014 | Search-based synthesis of equivalent method sequences · SIGSOFT FSE 2014 |
Software testing › test generation › test sequence generation
method sequence generation |
0.2 | 1 | 2014 | Search-based synthesis of equivalent method sequences · SIGSOFT FSE 2014 |
Program synthesis and code generation
search-based program synthesis |
0.2 | 1 | 2014 | Search-based synthesis of equivalent method sequences · SIGSOFT FSE 2014 |
Software testing › test oracle
test oracle generation |
0.2 | 1 | 2014 | Cross-checking oracles from intrinsic software redundancy · ICSE 2014 |
Software maintenance and evolution › software evolution › software adaptation
self-healing systems |
0.1 | 1 | 2012 | A self-healing technique for Java applications · ICSE 2012 |
Operating systems
fault tolerance |
0.1 | 2 | 2015 | Measuring Software Redundancy · ICSE (1) 2015 Search-based synthesis of equivalent method sequences · SIGSOFT FSE 2014 |
Methods — techniques the papers use, named apart from their topics
symbolic execution · 0.6constraint solving · 0.6semantics-preserving transformation · 0.3search-based testing · 0.3optimization · 0.3code similarity analysis · 0.2specification-based testing · 0.2search-based synthesis · 0.2metamorphic testing · 0.2cross-checking · 0.2
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2018 | Chopped symbolic executionabstractSymbolic execution is a powerful program analysis technique that systematically explores multiple program paths. However, despite important technical advances, symbolic execution often struggles to reach deep parts of the code due to the well-known path explosion problem and constraint solving limitations. David Trabish, Andrea Mattavelli, Noam Rinetzky, Cristian Cadar |
ICSE | 2 |
| 2017 | Combining symbolic execution and search-based testing for programs with complex heap inputsabstractDespite the recent improvements in automatic test case generation, handling complex data structures as test inputs is still an open problem. Search-based approaches can generate sequences of method calls that instantiate structured inputs to exercise a relevant portion of the code, but fall short in building inputs to execute program elements whose reachability is determined by the structural features of the input structures themselves. Symbolic execution techniques can effectively handle structured inputs, but do not identify the sequences of method calls that instantiate the input structures through legal interfaces. In this paper, we propose a new approach to automatically generate test cases for programs with complex data structures as inputs. We use symbolic execution to generate path conditions that characterise the dependencies between the program paths and the input structures, and convert the path conditions to optimisation problems that we solve with search-based techniques to produce sequences of method calls that instantiate those inputs. Our preliminary results show that the approach is indeed effective in generating test cases for programs with complex data structures as inputs, thus opening a promising research direction. Pietro Braione, Giovanni Denaro, Andrea Mattavelli, Mauro Pezzè |
ISSTA | 3 |
| 2017 | Accelerating array constraints in symbolic executionabstractDespite significant recent advances, the effectiveness of symbolic execution is limited when used to test complex, real-world software. One of the main scalability challenges is related to constraint solving: large applications and long exploration paths lead to complex constraints, often involving big arrays indexed by symbolic expressions. In this paper, we propose a set of semantics-preserving transformations for array operations that take advantage of contextual information collected during symbolic execution. Our transformations lead to simpler encodings and hence better performance in constraint solving. The results we obtain are encouraging: we show, through an extensive experimental analysis, that our transformations help to significantly improve the performance of symbolic execution in the presence of arrays. We also show that our transformations enable the analysis of new code, which would be otherwise out of reach for symbolic execution. David Mitchel Perry, Andrea Mattavelli, Xiangyu Zhang 0001, Cristian Cadar |
ISSTA | 2 |
| 2015 | Measuring Software RedundancyabstractRedundancy is the presence of different elements with the same functionality. In software, redundancy is useful (and used) in many ways, for example for fault tolerance and reliability engineering, and in self-adaptive and self-checking programs. However, despite the many uses, we still do not know how to measure software redundancy to support a proper and effective design. If, for instance, the goal is to improve reliability, one might want to measure the redundancy of a solution to then estimate the reliability gained with that solution. Or one might compare alternative solutions to choose the one that expresses more redundancy and therefore, presumably, more reliability. We first formalize a notion of redundancy whereby two code fragments are considered redundant when they achieve the same functionality with different executions. On the basis of this abstract and general notion, we then develop a concrete method to obtain a meaningful quantitative measure of software redundancy. The results we obtain are very positive: we show, through an extensive experimental analysis, that it is possible to distinguish code that is only minimally different, from truly redundant code, and that it is even possible to distinguish low-level code redundancy from high-level algorithmic redundancy. We also show that the measurement is significant and useful for the designer, as it can help predict the effectiveness of techniques that exploit redundancy. Antonio Carzaniga, Andrea Mattavelli, Mauro Pezzè |
ICSE (1) | 2 |
| 2015 | Synthesis of Equivalent Method Calls in Guava
Andrea Mattavelli, Alberto Goffi, Alessandra Gorla |
SSBSE | 1 |
| 2014 | Cross-checking oracles from intrinsic software redundancyabstractDespite the recent advances in automatic test generation, testers must still write test oracles manually. If formal specifications are available, it might be possible to use decision procedures derived from those specifications. We present a technique that is based on a form of specification but also leverages more information from the system under test. We assume that the system under test is somewhat redundant, in the sense that some operations are designed to behave like others but their executions are different. Our experience in this and previous work indicates that this redundancy exists and is easily documented. We then generate oracles by cross-checking the execution of a test with the same test in which we replace some operations with redundant ones. We develop this notion of cross-checking oracles into a generic technique to automatically insert oracles into unit tests. An experimental evaluation shows that cross-checking oracles, used in combination with automatic test generation techniques, can be very effective in revealing faults, and that they can even improve good hand-written test suites. Antonio Carzaniga, Alberto Goffi, Alessandra Gorla, Andrea Mattavelli, Mauro Pezzè |
ICSE | 4 |
| 2014 | Search-based synthesis of equivalent method sequencesabstractSoftware components are usually redundant, since their interface offers different operations that are equivalent in their functional behavior. Several reliability techniques exploit this redundancy to either detect or tolerate faults in software. Metamorphic testing, for instance, executes pairs of sequences of operations that are expected to produce equivalent results, and identifies faults in case of mismatching outcomes. Some popular fault tolerance and self-healing techniques execute redundant operations in an attempt to avoid failures at runtime. The common assumption of these techniques, though, is that such redundancy is known a priori. This means that the set of operations that are supposed to be equivalent in a given component should be available in the specifications. Unfortunately, inferring this information manually can be expensive and error prone. This paper proposes a search-based technique to synthesize sequences of method invocations that are equivalent to a target method within a finite set of execution scenarios. The experimental results obtained on 47 methods from 7 classes show that the proposed approach correctly identifies equivalent method sequences in the majority of the cases where redundancy was known to exist, with very few false positives. Alberto Goffi, Alessandra Gorla, Andrea Mattavelli, Mauro Pezzè, Paolo Tonella |
SIGSOFT FSE | 3 |
| 2014 | Software testing with code-based test generators: data and lessons learned from a case study with an industrial software component
Pietro Braione, Giovanni Denaro, Andrea Mattavelli, Mattia Vivanti |
Softw. Qual. J. | 3 |
| 2013 | Automatic recovery from runtime failuresabstractWe present a technique to make applications resilient to failures. This technique is intended to maintain a faulty application functional in the field while the developers work on permanent and radical fixes. We target field failures in applications built on reusable components. In particular, the technique exploits the intrinsic redundancy of those components by identifying workarounds consisting of alternative uses of the faulty components that avoid the failure. The technique is currently implemented for Java applications but makes little or no assumptions about the nature of the application, and works without interrupting the execution flow of the application and without restarting its components. We demonstrate and evaluate this technique on four mid-size applications and two popular libraries of reusable components affected by real and seeded faults. In these cases the technique is effective, maintaining the application fully functional with between 19% and 48% of the failure-causing faults, depending on the application. The experiments also show that the technique incurs an acceptable runtime overhead in all cases. Antonio Carzaniga, Alessandra Gorla, Andrea Mattavelli, Nicolò Perino, Mauro Pezzè |
ICSE | 3 |
| 2012 | A self-healing technique for Java applicationsabstractDespite the best design practices and testing techniques, many faults exist and manifest themselves in deployed software. In this paper we propose a self-healing framework that aims to mask fault manifestations at runtime in Java applications by automatically applying workarounds. The framework integrates a checkpoint-recovery mechanism to restore a consistent state after the failure, and a mechanism to replace the Java code at runtime to apply the workaround. Antonio Carzaniga, Alessandra Gorla, Andrea Mattavelli, Nicolò Perino |
ICSE | 3 |