Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Francesco A. Bianchi

dblp:165/9644 · also Francesco Adalberto Bianchi · DBLP profile ↗
← Back
5ranked-venue papers
3as first author
0since 2021 · last 2019
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 5 · 3 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
3 papers
Concurrent programming · 48% Program analysis · 23% Software testing · 18%
Computer architecture, parallel and distributed computing, and storage systems
1 paper
Parallel and multicore computing · 100%

Topics — the 6 heaviest of 7, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Concurrent programming
concurrency bugs
0.622018
A Survey of Recent Trends in Testing Concurrent Software Systems · IEEE Trans. Software Eng. 2018
Reproducing concurrency failures from crash stacks · ESEC/SIGSOFT FSE 2017
Software testing
concurrency testing
0.312018
A Survey of Recent Trends in Testing Concurrent Software Systems · IEEE Trans. Software Eng. 2018
Concurrent programming › concurrency bugs
concurrency bug reproduction
0.312017
Reproducing concurrency failures from crash stacks · ESEC/SIGSOFT FSE 2017
Program analysis
constraint solving
0.212015
Reusing constraint proofs in program analysis · ISSTA 2015
Program verification › proof assistants
proof reuse
0.212015
Reusing constraint proofs in program analysis · ISSTA 2015
Program analysis
symbolic execution
0.212015
Reusing constraint proofs in program analysis · ISSTA 2015

Methods — techniques the papers use, named apart from their topics

systematic literature survey · 0.7classification framework · 0.7search pruning · 0.3interleaving exploration · 0.3canonical form · 0.2SMT solving · 0.2
YearPublicationVenuePosition
2019 Coverage-Driven Test Generation for Thread-Safe Classes via Parallel and Conflict Dependencies
abstract
Thread-safe classes are common in concurrent object-oriented programs. Testing such classes is important to ensure the reliability of the concurrent programs that rely on them. Recently, researchers have proposed the automated generation of concurrent (multi-threaded) tests to expose concurrency faults in thread-safe classes (thread-safety violations). However, generating fault-revealing concurrent tests within an affordable time-budget is difficult due to the huge search space of possible concurrent tests. In this paper, we present DepCon, an approach to effectively reduce the search space of concurrent tests by means of both parallel and conflict dependency analyses. DepCon is based on the intuition that only methods that can both interleave (parallel dependent) and access the same shared memory locations (conflict dependent) can lead to thread-safety violations when concurrently executed. DepCon implements an efficient static analysis to compute the parallel and conflict dependencies among the methods of a class and uses the computed dependencies to steer the generation of tests towards concurrent tests that exhibit the computed dependencies. We evaluated DepCon by experimenting with a prototype implementation for Java programs on a set of thread-safe classes with known concurrency faults. The experimental results show that DepCon is more effective in exposing concurrency faults than state-of-the-art techniques.
Valerio Terragni, Mauro Pezzè, Francesco A. Bianchi
ICST3
2018 A Survey of Recent Trends in Testing Concurrent Software Systems
abstract
Many modern software systems are composed of multiple execution flows that run simultaneously, spanning from applications designed to exploit the power of modern multi-core architectures to distributed systems consisting of multiple components deployed on different physical nodes. We collectively refer to such systems as concurrent systems. Concurrent systems are difficult to test, since the faults that derive from their concurrent nature depend on the interleavings of the actions performed by the individual execution flows. Testing techniques that target these faults must take into account the concurrency aspects of the systems. The increasingly rapid spread of parallel and distributed architectures led to a deluge of concurrent software systems, and the explosion of testing techniques for such systems in the last decade. The current lack of a comprehensive classification, analysis and comparison of the many testing techniques for concurrent systems limits the understanding of the strengths and weaknesses of each approach and hampers the future advancements in the field. This survey provides a framework to capture the key features of the available techniques to test concurrent software systems, identifies a set of classification criteria to review and compare the available techniques, and discusses in details their strengths and weaknesses, leading to a thorough assessment of the field and paving the road for future progresses.
Francesco A. Bianchi, Alessandro Margara, Mauro Pezzè
IEEE Trans. Software Eng.1
2017 Reproducing concurrency failures from crash stacks
abstract
Reproducing field failures is the first essential step for understanding, localizing and removing faults. Reproducing concurrency field failures is hard due to the need of synthesizing a test code jointly with a thread interleaving that induce the failure in the presence of limited information from the field. Current techniques for reproducing concurrency failures focus on identifying failure-inducing interleavings, leaving largely open the problem of synthesizing the test code that manifests such interleavings. In this paper, we present ConCrash, a technique to automatically generate test codes that reproduce concurrency failures that violate thread-safety from crash stacks, which commonly summarize the conditions of field failures. ConCrash efficiently explores the huge space of possible test codes to identify a failure-inducing one by using a suitable set of search pruning strategies. Combined with existing techniques for exploring interleavings, ConCrash automatically reproduces a given concurrency failure that violates the thread-safety of a class by identifying both a failure-inducing test code and corresponding interleaving. In the paper, we define the ConCrash approach, present a prototype implementation of ConCrash, and discuss the experimental results that we obtained on a known set of ten field failures that witness the effectiveness of the approach.
Francesco A. Bianchi, Mauro Pezzè, Valerio Terragni
ESEC/SIGSOFT FSE1
2016 Testing Concurrent Software Systems
abstract
Many modern software systems are intrinsically concurrent, consisting of multiple execution flows that progress simultaneously. Concurrency introduces new challenges to the testing process, since some faults can manifest only under specific interleavings of the execution flows. Thus, testing concurrent systems requires not only to explore the space of possible inputs, but also the space of possible interleavings, which can be intractable also for small programs. Most of the research on testing concurrent systems has focused exclusively on selecting interleavings that expose potentially dangerous patterns, such as data races and atomicity violations. However, by ignoring the high-level semantics of the system, these patterns may miss relevant faults and generate many false positive alarms. In this PhD work we aim to define a novel testing technique that (i) offers a holistic approach to select both test inputs and interleavings, and (ii) exploits high-level semantic information on the program to guide the selection and to improve the accuracy of the state-of-the-art techniques.
Francesco A. Bianchi
ICST1
2015 Reusing constraint proofs in program analysis
abstract
Symbolic analysis techniques have largely improved over the years, and are now approaching an industrial maturity level. One of the main limitations to the scalability of symbolic analysis is the impact of constraint solving that is still a relevant bottleneck for the applicability of symbolic techniques, despite the dramatic improvements of the last decades. In this paper we discuss a novel approach to deal with the constraint solving bottleneck. Starting from the observation that constraints may recur during the analysis of the same as well as different programs, we investigate the advantages of complementing constraint solving with searching for the satisfiability proof of a constraint in a repository of constraint proofs. We extend recent proposals with powerful simplifications and an original canonical form of the constraints that reduce syntactically different albeit equivalent constraints to the same form, and thus facilitate the search for equivalent constraints in large repositories. The experimental results we attained indicate that the proposed approach improves over both similar solutions and state of the art constraint solvers.
Andrea Aquino, Francesco A. Bianchi, Meixian Chen, Giovanni Denaro, Mauro Pezzè
ISSTA2