Bruno Dufour

dblp:65/4767 · DBLP profile ↗
← Back
12ranked-venue papers
4as first author
0since 2021 · last 2015
0000-0003-0577-1675ORCID · corroborated

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

Software engineering, systems software and programming languages · 11 · 4 first-authorSystems, architecture and hardware · 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
4 papers
Program analysis · 73% Programming languages and type systems · 9% Runtime systems and virtual machines · 8%
Computer architecture, parallel and distributed computing, and storage systems
2 papers
Performance modeling and evaluation · 100%

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

TopicWeightPapersLastEvidence papers
Program analysis
dynamic analysis
0.222008
A scalable technique for characterizing the usage of temporaries in framework-intensive Java applications · SIGSOFT FSE 2008
Blended analysis for performance understanding of framework-based applications · ISSTA 2007
Program analysis › static analysis › pointer analysis
escape analysis
0.222008
A scalable technique for characterizing the usage of temporaries in framework-intensive Java applications · SIGSOFT FSE 2008
Blended analysis for performance understanding of framework-based applications · ISSTA 2007
Performance modeling and evaluation
workload characterization
0.122004
Measuring the dynamic behaviour of AspectJ programs · OOPSLA 2004
Dynamic metrics for java · OOPSLA 2003
Program analysis
static analysis
0.112008
A scalable technique for characterizing the usage of temporaries in framework-intensive Java applications · SIGSOFT FSE 2008
Programming languages and type systems
aspect-oriented programming
0.012004
Measuring the dynamic behaviour of AspectJ programs · OOPSLA 2004
Runtime systems and virtual machines › managed runtime
java runtime
0.012003
Dynamic metrics for java · OOPSLA 2003
Operating systems
workload characterization
0.012008
A scalable technique for characterizing the usage of temporaries in framework-intensive Java applications · SIGSOFT FSE 2008
Program analysis › dynamic analysis › instrumentation
bytecode instrumentation
0.012004
Measuring the dynamic behaviour of AspectJ programs · OOPSLA 2004

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

dynamic analysis · 0.2bytecode instrumentation · 0.1dynamic metrics · 0.1blended escape analysis · 0.1benchmark analysis · 0.1abstract interpretation · 0.1static analysis · 0.1escape analysis · 0.1blended analysis · 0.1
YearPublicationVenuePosition
2015 An observational study on API usage constraints and their documentation
abstract
Nowadays, APIs represent the most common reuse form when developing software. However, the reuse benefits depend greatly on the ability of client application developers to use correctly the APIs. In this paper, we present an observational study on the API usage constraints and their documentation. To conduct the study on a large number of APIs, we implemented and validated strategies to automatically detect four types of usage constraints in existing APIs. We observed that some of the constraint types are frequent and that for three types, they are not documented in general. Surprisingly, the absence of documentation is, in general, specific to the constraints and not due to the non documenting habits of developers.
Mohamed Aymen Saied, Houari Sahraoui, Bruno Dufour
SANER3
2015 Learning dependency-based change impact predictors using independent change histories
Hani Abdeen, Khaled Bali, Houari Sahraoui, Bruno Dufour
Inf. Softw. Technol.4
2014 Portable and Efficient Run-time Monitoring of JavaScript Applications Using Virtual Machine Layering
Erick Lavoie, Bruno Dufour, Marc Feeley
ECOOP2
2012 Vasco: A visual approach to explore object churn in framework-intensive applications
abstract
Bloat, and particularly object churn, is a common performance problem in framework-intensive applications. Object churn consists of an excessive use of temporary objects. Identifying and understanding sources of churn is a difficult and labor-intensive task, despite recent advances in automated analysis techniques. We present an interactive visualization approach designed to help developers quickly and intuitively explore the behavior of their application with respect to object churn. We have implemented this technique in Vasco, a new flexible and scalable visualization platform. Vasco is designed to minimize the cognitive effort required for the visualization task. We demonstrate the effectiveness of our approach by applying it to three framework-intensive applications and identifying previously unreported churn in a commercial system.
Fleur Duseau, Bruno Dufour, Houari Sahraoui
ICSM2
2011 Bootstrapping a self-hosted research virtual machine for JavaScript: an experience report
abstract
JavaScript is one of the most widely used dynamic languages. The performance of existing JavaScript VMs, however, is lower than that of VMs for static languages. There is a need for a research VM to easily explore new implementation approaches. This paper presents the Tachyon JavaScript VM which was designed to be flexible and to allow experimenting with new approaches for the execution of JavaScript. The Tachyon VM is itself implemented in JavaScript and currently supports a subset of the full language that is sufficient to bootstrap itself. The paper discusses the architecture of the system and in particular the bootstrapping of a self-hosted VM. Preliminary performance results indicate that our VM, with few optimizations, can already execute code faster than a commercial JavaScript interpreter on some benchmarks.
Maxime Chevalier-Boisvert, Erick Lavoie, Marc Feeley, Bruno Dufour
DLS4
2010 Exploring the impact of context sensitivity on blended analysis
abstract
This paper explores the use of context sensitivity both intra- and inter-procedurally in a blended (static/dynamic) program analysis for identifying source of object churn in framework-intensive Web-based applications. Empirical experiments with an existing blended analysis algorithm compare combinations of (i) use of a context-insensitive call graph with a context-sensitive calling context tree, and (ii) use (or not) of context-sensitive code pruning within methods. These experiments demonstrate achievable gains in scalability and performance in terms of several metrics designed for blended escape analysis, and report results in terms of object instances created, to allow more realistic conclusions from the data than were possible previously.
Marc Fisher II, Bruno Dufour, Shrutarshi Basu, Barbara G. Ryder
ICSM2
2010 Deriving Coupling Metrics from Call Graphs
abstract
Coupling metrics play an important role in empirical software engineering research as well as in industrial measurement programs. The existing coupling metrics have usually been defined in a way that they can be computed from a static analysis of the source code. However, modern programs extensively use dynamic language features such as polymorphism and dynamic class loading that are difficult to capture by static analysis. Consequently, the derived metric values might not accurately reflect the state of a program. In this paper, we express existing definitions of coupling metrics using call graphs. We then compare the results of four different call graph construction algorithms with standard tool implementations of these metrics in an empirical study. Our results show important variations in coupling between standard and call graph-based calculations due to the support of dynamic features.
Simon Allier, Stéphane Vaucher, Bruno Dufour, Houari Sahraoui
SCAM3
2008 A scalable technique for characterizing the usage of temporaries in framework-intensive Java applications
abstract
Framework-intensive applications (e.g., Web applications) heavily use temporary data structures, often resulting in performance bot-tlenecks. This paper presents an optimized blended escape analysis to approximate object lifetimes and thus, to identify these tempo-raries and their uses. Empirical results show that this optimized analysis on average prunes 37 % of the basic blocks in our bench-marks, and achieves a speedup of up to 29 times compared to the original analysis. Newly defined metrics quantify key properties of temporary data structures and their uses. A detailed empirical eval-uation offers the first characterization of temporaries in framework-intensive applications. The results show that temporary data struc-tures can include up to 12 distinct object types and can traverse through as many as 14 method invocations before being captured.
Bruno Dufour, Barbara G. Ryder, Gary Sevitsky
SIGSOFT FSE1
2007 Blended analysis for performance understanding of framework-based applications
abstract
This paper defines a new analysis paradigm, blended program analysis, that enables practical, effective analysis of large framework-based Java applications for performance understanding. Blended analysis combines a dynamic representation of the program calling structure, with a static analysis applied to a region of that calling structure with observed performance problems. A blended escape analysis is presented which enables approximation of object effective lifetimes, to facilitate explanation of the usage of newly created objects in a program region. Performance bottlenecks stemming from overuse of temporary structures are common in framework-based applications. Metrics are introduced to expose how, in aggregate, these applications make use of new objects. Results of empirical experiments with the Trade benchmark are presented. A case study demonstrates how results from a blended escape analysis can help locate, in a region which calls 223 distinct methods, the single call path responsible for a performance problem involving objects created at 9 distinct sites and as far as 6 call levels away.
Bruno Dufour, Barbara G. Ryder, Gary Sevitsky
ISSTA1
2005 Middleware benchmarking: approaches, results, experiences
abstract
The report summarizes the results of the Workshop on Middleware Benchmarking held during OOPSLA 2003. The goal of the workshop was to help advance the current practice of gathering performance characteristics of middleware implementations through benchmarking. The participants of the workshop have focused on identifying requirements of and obstacles to middleware benchmarking and forming a position on the related issues. Selected requirements and obstacles are presented, together with guidelines to adhere to when benchmarking, open issues of current practice, and perspectives on further research. Copyright © 2005 John Wiley & Sons, Ltd.
Paul Brebner, Emmanuel Cecchet, Julie Marguerite, Petr Tuma 0001, Octavian Ciuhandu, Bruno Dufour, Lieven Eeckhout, Stéphane Frénot, Arvind S. Krishna, John Murphy 0001, Clark Verbrugge
Concurr. Comput. Pract. Exp.6
2004 Measuring the dynamic behaviour of AspectJ programs
abstract
This paper proposes and implements a rigorous method for studying the dynamic behaviour of AspectJ programs. As part of this methodology several new metrics specific to AspectJ programs are proposed and tools for collecting the relevant metrics are presented. The major tools consist of: (1) a modified version of the AspectJ compiler that tags bytecode instructions with an indication of the cause of their generation, such as a particular feature of AspectJ; and (2) a modified version of the *J dynamic metrics collection tool which is composed of a JVMPI-based trace generator and an analyzer which propagates tags and computes the proposed metrics. This dynamic propagation is essential, and thus this paper contributes not only new metrics, but also non-trivial ways of computing them.
Bruno Dufour, Christopher Goard, Laurie J. Hendren, Oege de Moor, Ganesh Sittampalam, Clark Verbrugge
OOPSLA1
2003 Dynamic metrics for java
abstract
In order to perform meaningful experiments in optimizing compilation and run-time system design, researchers usually rely on a suite of benchmark programs of interest to the optimization technique under consideration. Programs are described as numeric, memory-intensive, concurrent, or object-oriented, based on a qualitative appraisal, in some cases with little justification. We believe it is beneficial to quantify the behaviour of programs with a concise and precisely defined set of metrics, in order to make these intuitive notions of program behaviour more concrete and subject to experimental validation. We therefore define and measure a set of unambiguous, dynamic, robust and architecture-independent metrics that can be used to categorize programs according to their dynamic behaviour in five areas: size, data structure, memory use, concurrency, and polymorphism. A framework computing some of these metrics for Java programs is presented along with specific results demonstrating how to use metric data to understand a program's behaviour, and both guide and evaluate compiler optimizations.
Bruno Dufour, Karel Driesen, Laurie J. Hendren, Clark Verbrugge
OOPSLA1