Demo Data from EDBT 2026 / reviewers in the wild / expert
Adrian Lienhard
dblp:55/39
· DBLP profile ↗
6ranked-venue papers
5as first author
0since 2021 · last 2012
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 6 · 5 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 |
Programming languages and type systems · 56% Program analysis · 32% Software maintenance and evolution · 12% |
Topics — the 4 heaviest of 5, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Program analysis
dynamic analysis |
0.1 | 1 | 2012 | Specifying Dynamic Analyses by Extending Language Semantics · IEEE Trans. Software Eng. 2012 |
Programming languages and type systems › language semantics › formal semantics
operational semantics |
0.1 | 1 | 2012 | Specifying Dynamic Analyses by Extending Language Semantics · IEEE Trans. Software Eng. 2012 |
Programming languages and type systems › metaprogramming
behavioral reflection |
0.1 | 1 | 2010 | Pinocchio: bringing reflection to life with first-class interpreters · OOPSLA 2010 |
Software maintenance and evolution
refactoring |
0.1 | 1 | 2005 | Identifying traits with formal concept analysis · ASE 2005 |
Methods — techniques the papers use, named apart from their topics
operational semantics · 0.1formal concept analysis · 0.1clustering · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2012 | Specifying Dynamic Analyses by Extending Language SemanticsabstractDynamic analysis is increasingly attracting attention for debugging, profiling, and program comprehension. Ten to twenty years ago, many dynamic analyses investigated only simple method execution traces. Today, in contrast, many sophisticated dynamic analyses exist, for instance, for detecting memory leaks, analyzing ownership properties, measuring garbage collector performance, or supporting debugging tasks. These analyses depend on complex program instrumentations and analysis models, making it challenging to understand, compare, and reproduce the proposed approaches. While formal specifications and proofs are common in the field of static analysis, most dynamic analyses are specified using informal, textual descriptions. In this paper, we propose a formal framework using operational semantics that allows researchers to precisely specify their dynamic analysis. Our goal is to provide an accessible and reusable basis on which researchers who may not be familiar with rigorous specifications of dynamic analyses can build. By extending the provided semantics, one can concisely specify how runtime events are captured and how this data is transformed to populate the analysis model. Furthermore, our approach provides the foundations to reason about properties of a dynamic analysis. Adrian Lienhard, Tudor Gîrba, Oscar Nierstrasz |
IEEE Trans. Software Eng. | 1 |
| 2010 | Pinocchio: bringing reflection to life with first-class interpretersabstractTo support development tools like debuggers, runtime systems need to provide a meta-programming interface to alter their semantics and access internal data. Reflective capabilities are typically fixed by the Virtual Machine (VM). Unanticipated reflective features must either be simulated by complex program transformations, or they require the development of a specially tailored VM. We propose a novel approach to behavioral reflection that eliminates the barrier between applications and the VM by manipulating an explicit tower of first-class interpreters. Pinocchio is a proof-of-concept implementation of our approach which enables radical changes to the interpretation of programs by explicitly instantiating subclasses of the base interpreter. We illustrate the design of Pinocchio through non-trivial examples that extend runtime semantics to support debugging, parallel debugging, and back-in-time object-flow debugging. Although performance is not yet addressed, we also discuss numerous opportunities for optimization, which we believe will lead to a practical approach to behavioral reflection. Toon Verwaest, Camillo Bruni, David Gurtner, Adrian Lienhard, Oscar Nierstrasz |
OOPSLA | 4 |
| 2009 | Taking an object-centric view on dynamic information with object flow analysis
Adrian Lienhard, Stéphane Ducasse, Tudor Gîrba |
Comput. Lang. Syst. Struct. | 1 |
| 2008 | Practical Object-Oriented Back-in-Time Debugging
Adrian Lienhard, Tudor Gîrba, Oscar Nierstrasz |
ECOOP | 1 |
| 2007 | Tracking Objects to Detect Feature DependenciesabstractThe domain-specific ontology of a software system includes a set of features and their relationships. While the problem of locating features in object-oriented programs has been widely studied, runtime dependencies between features are less well understood. Features cannot be understood in isolation, since their behavior often depends on objects created and referenced in previously exercised features. It is difficult to spot runtime dependencies between features just by browsing source code. Hence, code modifications intended for one feature, often inadvertently affect other features. In this paper, we propose an approach to precisely identify dependencies between features based on a fine-grained dynamic analysis which captures details about how objects are referenced at runtime. The results of two case studies indicate that our approach helps software maintainers in understanding critical feature dependencies. Adrian Lienhard, Orla Greevy, Oscar Nierstrasz |
ICPC | 1 |
| 2005 | Identifying traits with formal concept analysisabstractTraits are basically mixins or interfaces but with method bodies. In languages that support traits, classes are composed out of traits. There are two main advantages with traits. Firstly, decomposing existing classes into traits from which they can be recomposed improves the factoring of hierarchies. Secondly it increases the library reuse potential by providing more reusable traits. Identifying traits and decomposing class hierarchies into traits is therefore an important and challenging task to facilitate maintainability and evolution. In this paper we present how we use Formal Concept Analysis to identify traits in inheritance hierarchies. Our approach is two-staged: first we identify within a hierarchy maximal groups of methods that have a set of classes in common, second we cluster cohesive groups of methods based on method invocations as potential traits. We applied our approach on two significant hierarchies and compare our results with the manual refactorization of the same code which was done by the authors of traits. Adrian Lienhard, Stéphane Ducasse, Gabriela Arévalo |
ASE | 1 |