Luca Della Toffola

dblp:70/10696 · DBLP profile ↗
← Back
4ranked-venue papers
3as first author
0since 2021 · last 2018
0000-0002-2600-9594ORCID · corroborated

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

Software engineering, systems software and programming languages · 3 · 3 first-authorSystems, architecture and hardware · 1 · 1 first-authorApplied, interdisciplinary, general and emerging computing · 1

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
2 papers
Software testing · 40% Debugging and program repair · 30% Program analysis · 30%
Databases, data mining, and information retrieval
1 paper
Information retrieval · 100%

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

TopicWeightPapersLastEvidence papers
Software testing › test generation
automated test generation
0.312017
Saying 'hi!' is not enough: mining inputs for effective test generation · ASE 2017
Program analysis
dynamic analysis
0.212015
Performance problems you can fix: a dynamic analysis of memoization opportunities · OOPSLA 2015
Debugging and program repair › performance debugging
performance bug detection
0.212015
Performance problems you can fix: a dynamic analysis of memoization opportunities · OOPSLA 2015
Information retrieval › document retrieval › domain-specific retrieval
information retrieval for software engineering
0.112017
Saying 'hi!' is not enough: mining inputs for effective test generation · ASE 2017

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

literal extraction · 0.6information retrieval · 0.6memoization · 0.2dynamic analysis · 0.2
YearPublicationVenuePosition
2018 Synthesizing programs that expose performance bottlenecks
abstract
Software often suffers from performance bottlenecks, e.g., because some code has a higher computational complexity than expected or because a code change introduces a performance regression. Finding such bottlenecks is challenging for developers and for profiling techniques because both rely on performance tests to execute the software, which are often not available in practice. This paper presents PerfSyn, an approach for synthesizing test programs that expose performance bottlenecks in a given method under test. The basic idea is to repeatedly mutate a program that uses the method to systematically increase the amount of work done by the method. We formulate the problem of synthesizing a bottleneck-exposing program as a combinatorial search and show that it can be effectively and efficiently addressed using well known graph search algorithms. We evaluate the approach with 147 methods from seven Java code bases. PerfSyn automatically synthesizes test programs that expose 22 bottlenecks. The bottlenecks are due to unexpectedly high computational complexity and due to performance differences between different versions of the same code.
Luca Della Toffola, Michael Pradel, Thomas R. Gross
CGO1
2017 Saying 'hi!' is not enough: mining inputs for effective test generation
abstract
Automatically generating unit tests is a powerful approach to exercise complex software. Unfortunately, current techniques often fail to provide relevant input values, such as strings that bypass domain-specific sanity checks. As a result, state-of-the-art techniques are effective for generic classes, such as collections, but less successful for domain-specific software. This paper presents TestMiner, the first technique for mining a corpus of existing tests for input values to be used by test generators for effectively testing software not in the corpus. The main idea is to extract literals from thousands of tests and to adapt information retrieval techniques to find values suitable for a particular domain. Evaluating the approach with 40 Java classes from 18 different projects shows that TestMiner improves test coverage by 21% over an existing test generator. The approach can be integrated into various test generators in a straightforward way, increasing their effectiveness on previously difficult-to-test classes.
Luca Della Toffola, Cristian-Alexandru Staicu, Michael Pradel
ASE1
2015 Activity detection in uncontrolled free-living conditions using a single accelerometer
abstract
Motivated by a need for accurate assessment and monitoring of patients with knee osteoarthritis in an ambulatory setting, a wearable electrogoniometer composed of a knee angular sensor and a three-axis accelerometer placed on the thigh is developed. Accurate assessment of knee kinematics requires accurate detection of walking amongst dynamic, heterogeneous, and individualized activities of daily living. This paper investigates four different machine learning techniques for detecting occurrences of walking in uncontrolled environments based on a dataset collected from a total of 4 healthy subjects. Multi-class classifier (random forest) based detection method showed the best performance, which supports 90% precision and 75% recall. The in-depth analysis and interpretation of the results show that accurate decision boundaries are necessary between 1) fast walking and descending stairs, 2) slow walking and ascending stairs, as well as 3) slow walking and transitional activities. This work provides a systematic approach to detect occurrences of walking in uncontrolled living conditions, which can also be extended to other activities.
Sunghoon Ivan Lee, Muzaffer Yalgin Ozsecen, Luca Della Toffola, Jean-Francois Daneault, Alessandro Puiatti, Shyamal Patel, Paolo Bonato
BSN3
2015 Performance problems you can fix: a dynamic analysis of memoization opportunities
abstract
Performance bugs are a prevalent problem and recent research proposes various techniques to identify such bugs. This paper addresses a kind of performance problem that often is easy to address but difficult to identify: redundant computations that may be avoided by reusing already computed results for particular inputs, a technique called memoization. To help developers find and use memoization opportunities, we present MemoizeIt, a dynamic analysis that identifies methods that repeatedly perform the same computation. The key idea is to compare inputs and outputs of method calls in a scalable yet precise way. To avoid the overhead of comparing objects at all method invocations in detail, MemoizeIt first compares objects without following any references and iteratively increases the depth of exploration while shrinking the set of considered methods. After each iteration, the approach ignores methods that cannot benefit from memoization, allowing it to analyze calls to the remaining methods in more detail. For every memoization opportunity that MemoizeIt detects, it provides hints on how to implement memoization, making it easy for the developer to fix the performance issue. Applying MemoizeIt to eleven real-world Java programs reveals nine profitable memoization opportunities, most of which are missed by traditional CPU time profilers, conservative compiler optimizations, and other existing approaches for finding performance bugs. Adding memoization as proposed by MemoizeIt leads to statistically significant speedups by factors between 1.04x and 12.93x.
Luca Della Toffola, Michael Pradel, Thomas R. Gross
OOPSLA1