Demo Data from EDBT 2026 / reviewers in the wild / expert
Johannes Henkel
dblp:h/JohannesHenkel
· DBLP profile ↗
7ranked-venue papers
6as first author
0since 2021 · last 2008
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 7 · 6 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
5 papers |
Requirements engineering and software design · 32% Program analysis · 24% Software maintenance and evolution · 16% |
Topics — the 16 heaviest of 17, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Requirements engineering and software design › specification
specification debugging |
0.1 | 2 | 2008 | Developing and debugging algebraic specifications for Java classes · ACM Trans. Softw. Eng. Methodol. 2008 A Tool for Writing and Debugging Algebraic Specifications · ICSE 2004 |
Software testing › specification-based testing
algebraic specification testing |
0.1 | 1 | 2008 | Developing and debugging algebraic specifications for Java classes · ACM Trans. Softw. Eng. Methodol. 2008 |
Requirements engineering and software design › specification
specification comprehension |
0.1 | 1 | 2008 | Developing and debugging algebraic specifications for Java classes · ACM Trans. Softw. Eng. Methodol. 2008 |
Program analysis
dynamic analysis |
0.1 | 1 | 2007 | Discovering Documentation for Java Container Classes · IEEE Trans. Software Eng. 2007 |
Software maintenance and evolution
software documentation |
0.1 | 1 | 2007 | Discovering Documentation for Java Container Classes · IEEE Trans. Software Eng. 2007 |
Program analysis
specification mining |
0.1 | 1 | 2007 | Discovering Documentation for Java Container Classes · IEEE Trans. Software Eng. 2007 |
Software maintenance and evolution › software evolution
API evolution |
0.1 | 1 | 2005 | CatchUp!: capturing and replaying refactorings to support API evolution · ICSE 2005 |
Programming languages and type systems › specification language
algebraic specification |
0.0 | 1 | 2004 | A Tool for Writing and Debugging Algebraic Specifications · ICSE 2004 |
Requirements engineering and software design
requirements specification |
0.0 | 1 | 2004 | A Tool for Writing and Debugging Algebraic Specifications · ICSE 2004 |
Software testing
specification-based testing |
0.0 | 1 | 2004 | A Tool for Writing and Debugging Algebraic Specifications · ICSE 2004 |
Runtime systems and virtual machines
garbage collection |
0.0 | 1 | 2002 | On the usefulness of type and liveness accuracy for garbage collection and leak detection · ACM Trans. Program. Lang. Syst. 2002 |
Program analysis › data flow analysis
liveness analysis |
0.0 | 1 | 2002 | On the usefulness of type and liveness accuracy for garbage collection and leak detection · ACM Trans. Program. Lang. Syst. 2002 |
Program verification › model checking › state space exploration
reachability analysis |
0.0 | 1 | 2002 | On the usefulness of type and liveness accuracy for garbage collection and leak detection · ACM Trans. Program. Lang. Syst. 2002 |
Program analysis
static analysis |
0.0 | 1 | 2002 | On the usefulness of type and liveness accuracy for garbage collection and leak detection · ACM Trans. Program. Lang. Syst. 2002 |
Requirements engineering and software design
formal specification |
0.0 | 1 | 2008 | Developing and debugging algebraic specifications for Java classes · ACM Trans. Softw. Eng. Methodol. 2008 |
Software maintenance and evolution
refactoring |
0.0 | 1 | 2005 | CatchUp!: capturing and replaying refactorings to support API evolution · ICSE 2005 |
Methods — techniques the papers use, named apart from their topics
prototype generation · 0.1algebraic specification · 0.1dynamic test generation · 0.1algebraic axiom inference · 0.1interprocedural analysis · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2008 | Developing and debugging algebraic specifications for Java classesabstractModern programs make extensive use of reusable software libraries. For example, a study of a number of large Java applications shows that between 17% and 30% of the classes in those applications use container classes defined in the java.util package. Given this extensive code reuse in Java programs, it is important for the interfaces of reusable classes to be well documented. An interface is well documented if it satisfies the following requirements: (1) the documentation completely describes how to use the interface; (2) the documentation is clear; (3) the documentation is unambiguous; and (4) any deviation between the documentation and the code is machine detectable. Unfortunately, documentation in natural language, which is the norm, does not satisfy the above requirements. Formal specifications can satisfy them but they are difficult to develop, requiring significant effort on the part of programmers. To address the practical difficulties with formal specifications, we describe and evaluate a tool to help programmers write and debug algebraic specifications. Given an algebraic specification of a class, our interpreter generates a prototype that can be used within an application like a regular Java class. When running an application that uses the prototype, the interpreter prints error messages that tell the developer in which way the specification is incomplete or inconsistent with a hand-coded implementation of the class. We use case studies to demonstrate the usefulness of our system. Johannes Henkel, Christoph Reichenbach, Amer Diwan |
ACM Trans. Softw. Eng. Methodol. | 1 |
| 2008 | Errata for "Discovering Documentation for Java Container Classes"abstractIn the above titled paper (ibid., vol. 33, no. 8, pp. 526-543, Aug 07), there were several mistakes. The corrections are presented here. Johannes Henkel, Christoph Reichenbach, Amer Diwan |
IEEE Trans. Software Eng. | 1 |
| 2007 | Discovering Documentation for Java Container ClassesabstractModern programs make extensive use of reusable software libraries. For example, we found that 17% to 30% of the classes in a number of large Java applications use the container classes from the java.util package. Given this extensive code reuse in Java programs, it is important for the reusable interfaces to have clear and unambiguous documentation. Unfortunately, most documentation is expressed in English, and therefore does not always satisfy these requirements. Worse yet, there is no way of checking that the documentation is consistent with the associated code. Formal specifications present an alternative which does not suffer from these problems; however, formal specifications are notoriously hard to write. To alleviate this difficulty, we have implemented a tool which automatically derives documentation in the form of formal specifications. Our tool probes Java classes by invoking them on dynamically generated tests and captures the information observed during their execution as algebraic axioms. While the tool is not complete or correct from a formal perspective we demonstrate that it discovers many useful axioms when applied to container classes. These axioms then form an initial formal documentation of the class they describe. Johannes Henkel, Christoph Reichenbach, Amer Diwan |
IEEE Trans. Software Eng. | 1 |
| 2005 | CatchUp!: capturing and replaying refactorings to support API evolutionabstractLibrary developers who have to evolve a library to accommodate changing requirements often face a dilemma: Either they implement a clean, efficient solution but risk breaking client code, or they maintain compatibility with client code, but pay with increased design complexity and thus higher maintenance costs over time.We address this dilemma by presenting a lightweight approach for evolving application programming interfaces (APIs), which does not depend on version control or configuration management systems. Instead, we capture API refactoring actions as a developer evolves an API. Users of the API can then replay the refactorings to bring their client software components up to date.We present catchup!, an implementation of our approach that captures and replays refactoring actions within an integrated development environment semi-automatically. Our experiments suggest that our approach could be valuable in practice. Johannes Henkel, Amer Diwan |
ICSE | 1 |
| 2004 | A Tool for Writing and Debugging Algebraic SpecificationsabstractDespite their benefits, programmers rarely use formal specifications, because they are difficult to write and they require an up front investment in time. To address these issues, we present a tool that helps programmers write and debug algebraic specifications. Given an algebraic specification, our tool instantiates a prototype that can be used just like any regular Java class. The tool can also modify an existing application to use the prototype generated by the interpreter instead of a hand-coded implementation. The tool improves the usability of algebraic specifications in the following ways: (i) A programmer can run an algebraic specification to study its behavior. The tool reports in which way a specification is incomplete for a client application. (ii) The tool can check whether a specification and a hand-coded implementation behave the same for a particular run of a client application. (iii) A prototype can be used when a hand-coded implementation is not yet available. Two case studies demonstrate how to use the tool. Johannes Henkel, Amer Diwan |
ICSE | 1 |
| 2003 | Discovering Algebraic Specifications from Java Classes
Johannes Henkel, Amer Diwan |
ECOOP | 1 |
| 2002 | On the usefulness of type and liveness accuracy for garbage collection and leak detectionabstractThe effectiveness of garbage collectors and leak detectors in identifying dead objects depends on theaccuracyof their reachability traversal. Accuracy has two orthogonal dimensions: (i) whether the reachability traversal can distinguish between pointers and nonpointers (type accuracy), and (ii) whether the reachability traversal can identify memory locations that will be dereferenced in the future (liveness accuracy). This article presents an experimental study of the importance of type and liveness accuracy for reachability traversals. We show that liveness accuracy reduces the reachable heap size by up to 62% for our benchmark programs. However, the simpler liveness schemes (e.g., intraprocedural analysis of local variables) are largely ineffective for our benchmark runs: one must analyze global variables using interprocedural analysis to obtain significant benefits. Type accuracy has an insignificant impact on a garbage collector's ability to find unreachable objects in our benchmark runs. We report results for programs written in C, C++, and Eiffel. Martin Hirzel, Amer Diwan, Johannes Henkel |
ACM Trans. Program. Lang. Syst. | 3 |