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.

Adrian Lienhard

dblp:55/39 · DBLP profile ↗
← Back
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

TopicWeightPapersLastEvidence papers
Program analysis
dynamic analysis
0.112012
Specifying Dynamic Analyses by Extending Language Semantics · IEEE Trans. Software Eng. 2012
Programming languages and type systems › language semantics › formal semantics
operational semantics
0.112012
Specifying Dynamic Analyses by Extending Language Semantics · IEEE Trans. Software Eng. 2012
Programming languages and type systems › metaprogramming
behavioral reflection
0.112010
Pinocchio: bringing reflection to life with first-class interpreters · OOPSLA 2010
Software maintenance and evolution
refactoring
0.112005
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
YearPublicationVenuePosition
2012 Specifying Dynamic Analyses by Extending Language Semantics
abstract
Dynamic 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 interpreters
abstract
To 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
OOPSLA4
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
ECOOP1
2007 Tracking Objects to Detect Feature Dependencies
abstract
The 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
ICPC1
2005 Identifying traits with formal concept analysis
abstract
Traits 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
ASE1