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. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Johannes Henkel

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

TopicWeightPapersLastEvidence papers
Requirements engineering and software design › specification
specification debugging
0.122008
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.112008
Developing and debugging algebraic specifications for Java classes · ACM Trans. Softw. Eng. Methodol. 2008
Requirements engineering and software design › specification
specification comprehension
0.112008
Developing and debugging algebraic specifications for Java classes · ACM Trans. Softw. Eng. Methodol. 2008
Program analysis
dynamic analysis
0.112007
Discovering Documentation for Java Container Classes · IEEE Trans. Software Eng. 2007
Software maintenance and evolution
software documentation
0.112007
Discovering Documentation for Java Container Classes · IEEE Trans. Software Eng. 2007
Program analysis
specification mining
0.112007
Discovering Documentation for Java Container Classes · IEEE Trans. Software Eng. 2007
Software maintenance and evolution › software evolution
API evolution
0.112005
CatchUp!: capturing and replaying refactorings to support API evolution · ICSE 2005
Programming languages and type systems › specification language
algebraic specification
0.012004
A Tool for Writing and Debugging Algebraic Specifications · ICSE 2004
Requirements engineering and software design
requirements specification
0.012004
A Tool for Writing and Debugging Algebraic Specifications · ICSE 2004
Software testing
specification-based testing
0.012004
A Tool for Writing and Debugging Algebraic Specifications · ICSE 2004
Runtime systems and virtual machines
garbage collection
0.012002
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.012002
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.012002
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.012002
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.012008
Developing and debugging algebraic specifications for Java classes · ACM Trans. Softw. Eng. Methodol. 2008
Software maintenance and evolution
refactoring
0.012005
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
YearPublicationVenuePosition
2008 Developing and debugging algebraic specifications for Java classes
abstract
Modern 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"
abstract
In 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 Classes
abstract
Modern 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 evolution
abstract
Library 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
ICSE1
2004 A Tool for Writing and Debugging Algebraic Specifications
abstract
Despite 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
ICSE1
2003 Discovering Algebraic Specifications from Java Classes
Johannes Henkel, Amer Diwan
ECOOP1
2002 On the usefulness of type and liveness accuracy for garbage collection and leak detection
abstract
The 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