EDBT 2026 Demo / reviewers in the wild / expert
Jeff H. Perkins
dblp:24/972
· DBLP profile ↗
12ranked-venue papers
5as first author
0since 2021 · last 2020
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 9 · 3 first-authorSecurity and privacy · 3 · 2 first-authorSystems, architecture and hardware · 1 · 1 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
8 papers |
Program analysis · 32% Software testing · 26% Debugging and program repair · 22% | |
| Network and information security
3 papers |
Systems and software security · 59% Web and mobile security · 41% |
Topics — the 21 heaviest of 23, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Web and mobile security › mobile security
android application analysis |
0.2 | 1 | 2015 | Information Flow Analysis of Android Applications in DroidSafe · NDSS 2015 |
Systems and software security › information flow control
information flow analysis |
0.2 | 1 | 2015 | Information Flow Analysis of Android Applications in DroidSafe · NDSS 2015 |
Program analysis
static analysis |
0.1 | 2 | 2015 | Practical pluggable types for java · ISSTA 2008 Information Flow Analysis of Android Applications in DroidSafe · NDSS 2015 |
Software testing
test generation |
0.1 | 1 | 2011 | Scaling up automated test generation: Automatically generating maintainable regression unit tests for programs · ASE 2011 |
Program analysis
dynamic analysis |
0.1 | 2 | 2006 | Dynamic inference of abstract types · ISSTA 2006 Efficient incremental algorithms for dynamic detection of likely invariants · SIGSOFT FSE 2004 |
Systems and software security
vulnerability discovery |
0.1 | 1 | 2009 | Automatically patching errors in deployed software · SOSP 2009 |
Debugging and program repair
automated program repair |
0.1 | 1 | 2009 | Automatically patching errors in deployed software · SOSP 2009 |
Debugging and program repair › automated program repair
patch generation |
0.1 | 1 | 2009 | Automatically patching errors in deployed software · SOSP 2009 |
Programming languages and type systems › type systems › static typing
pluggable type systems |
0.1 | 1 | 2008 | Practical pluggable types for java · ISSTA 2008 |
Programming languages and type systems
type checking |
0.1 | 1 | 2008 | Practical pluggable types for java · ISSTA 2008 |
Programming languages and type systems › type systems › refinement types
type qualifiers |
0.1 | 1 | 2008 | Practical pluggable types for java · ISSTA 2008 |
Debugging and program repair › program repair
data structure repair |
0.1 | 1 | 2006 | Inference and enforcement of data structure consistency specifications · ISSTA 2006 |
Program analysis › specification mining
invariant detection |
0.1 | 1 | 2006 | Inference and enforcement of data structure consistency specifications · ISSTA 2006 |
Debugging and program repair
program repair |
0.1 | 1 | 2006 | Inference and enforcement of data structure consistency specifications · ISSTA 2006 |
Program analysis › static analysis › constraint-based analysis
unification-based analysis |
0.1 | 1 | 2006 | Dynamic inference of abstract types · ISSTA 2006 |
Software testing › test infrastructure
mock generation |
0.1 | 1 | 2005 | Automatic test factoring for java · ASE 2005 |
Program analysis › static analysis
incremental analysis |
0.0 | 1 | 2004 | Efficient incremental algorithms for dynamic detection of likely invariants · SIGSOFT FSE 2004 |
Software testing › test coverage
code coverage |
0.0 | 1 | 2011 | Scaling up automated test generation: Automatically generating maintainable regression unit tests for programs · ASE 2011 |
Program analysis
error detection |
0.0 | 1 | 2008 | Practical pluggable types for java · ISSTA 2008 |
Software testing
system testing |
0.0 | 1 | 2005 | Automatic test factoring for java · ASE 2005 |
Software testing › test generation
unit test generation |
0.0 | 1 | 2005 | Automatic test factoring for java · ASE 2005 |
Methods — techniques the papers use, named apart from their topics
static information flow analysis · 0.4automated test generation · 0.1daikon invariant detection · 0.1compiler plug-in · 0.1backward-compatible type system extension · 0.1run-time interaction analysis · 0.1dynamic unification · 0.1record and replay · 0.1dynamic analysis · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2020 | Comprehensive Java Metadata Tracking for Attack Detection and RepairabstractWe present ClearTrack, a system that tracks meta-data for each primitive value in Java programs to detect and nullify a range of vulnerabilities such as integer overflow/underflow and SQL/command injection vulnerabilities. Contributions include new techniques for eliminating false positives associated with benign integer overflows and underflows, new metadata-aware techniques for detecting and nullifying SQL/command command injection attacks, and results from an independent evaluation team. These results show that 1) ClearTrack operates successfully on Java programs comprising hundreds of thousands of lines of code (including instrumented jar files and Java system libraries, the majority of the applications comprise over 3 million lines of code), 2) because of computations such as cryptography and hash table calculations, these applications perform millions of benign integer overflows and underflows, and 3) ClearTrack successfully detects and nullifies all tested integer overflow and underflow and SQL/command injection vulnerabilities in the benchmark applications. Jeff H. Perkins, Jordan Eikenberry, Alessandro Coglio, Martin C. Rinard |
DSN | 1 |
| 2016 | AutoRand: Automatic Keyword Randomization to Prevent Injection Attacks
Jeff H. Perkins, Jordan Eikenberry, Alessandro Coglio, Daniel Willenson, Stelios Sidiroglou-Douskos, Martin C. Rinard |
DIMVA | 1 |
| 2015 | Information Flow Analysis of Android Applications in DroidSafe
Michael I. Gordon, Deokhwan Kim, Jeff H. Perkins, Limei Gilham, Nguyen Nguyen 0002, Martin C. Rinard |
NDSS | 3 |
| 2011 | Scaling up automated test generation: Automatically generating maintainable regression unit tests for programsabstractThis paper presents an automatic technique for generating maintainable regression unit tests for programs. We found previous test generation techniques inadequate for two main reasons. First. they were designed for and evaluated upon libraries rather than applications. Second, they were designed to find bugs rather than to create maintainable regression test suites: the test suites that they generated were brittle and hard to understand. This paper presents a suite of techniques that address these problems by enhancing an existing unit test generation system. In experiments using an industrial system, the generated tests achieved good coverage and mutation kill score, were readable by the product's developers, and required few edits as the system under test evolved. While our evaluation is in the context of one test generator, we are aware of many research systems that suffer similar limitations, so our approach and observations are more generally relevant. Brian Robinson, Michael D. Ernst, Jeff H. Perkins, Vinay Augustine |
ASE | 3 |
| 2009 | Automatically patching errors in deployed softwareabstractWe present ClearView, a system for automatically patching errors in deployed software. ClearView works on stripped Windows x86 binaries without any need for source code, debugging information, or other external information, and without human intervention. Jeff H. Perkins, Sunghun Kim 0001, Samuel Larsen, Saman P. Amarasinghe, Jonathan Bachrach, Michael Carbin, Carlos Pacheco, Frank Sherwood, Stelios Sidiroglou-Douskos, Gregory T. Sullivan, Weng-Fai Wong, Yoav Zibin, Michael D. Ernst, Martin C. Rinard |
SOSP | 1 |
| 2008 | Practical pluggable types for javaabstractThis paper introduces the Checker Framework, which supports adding pluggable type systems to the Java language in a backward-compatible way. A type system designer defines type qualifiers and their semantics, and a compiler plug-in enforces the semantics. Programmers can write the type qualifiers in their programs and use the plug-in to detect or prevent errors. The Checker Framework is useful both to programmers who wish to write error-free code, and to type system designers who wish to evaluate and deploy their type systems. Matthew M. Papi, Mahmood Ali, Telmo Luis Correa Jr., Jeff H. Perkins, Michael D. Ernst |
ISSTA | 4 |
| 2007 | The Daikon system for dynamic detection of likely invariants
Michael D. Ernst, Jeff H. Perkins, Philip J. Guo, Stephen McCamant, Carlos Pacheco, Matthew S. Tschantz, Chen Xiao |
Sci. Comput. Program. | 2 |
| 2006 | Inference and enforcement of data structure consistency specificationsabstractCorrupt data structures are an important cause of unacceptable program execution. Data structure repair (which eliminates inconsistencies by updating corrupt data structures to conform to consistency constraints) promises to enable many programs to continue to execute acceptably in the face of otherwise fatal data structure corruption errors. A key issue is obtaining an accurate and comprehensive data structure consistency specification. We present a new technique for obtaining data structure consistency specifications for data structure repair. Instead of requiring the developer to manually generate such specifications, our approach automatically generates candidate data structure consistency properties using the Daikon invariant detection tool. The developer then reviews these properties, potentially rejecting or generalizing overly specific properties to obtain a specification suitable for automatic enforcement via data structure repair. We have implemented this approach and applied it to three sizable benchmark programs: CTAS (an air-traffic control system), BIND (a widely-used Internet name server) and Freeciv (an interactive game). Our results indicate that (1) automatic constraint generation produces constraints that enable programs to execute successfully through data structure consistency errors, (2) compared to manual specification, automatic generation can produce more comprehensive sets of constraints that cover a larger range of data structure consistency properties, and (3) reviewing the properties is relatively straightforward and requires substantially less programmer effort than manual generation, primarily because it reduces the need to examine the program text to understand its operation and extract the relevant consistency constraints. Moreover, when evaluated by a hostile third party "Red Team" contracted to evaluate the effectiveness of the technique, our data structure inference and enforcement tools successfully prevented several otherwise fatal attacks. Brian Demsky, Michael D. Ernst, Philip J. Guo, Stephen McCamant, Jeff H. Perkins, Martin C. Rinard |
ISSTA | 5 |
| 2006 | Dynamic inference of abstract typesabstractAn abstract type groups variables that are used for related purposes in a program. We describe a dynamic unification-based analysis for inferring abstract types. Initially, each run-time value gets a unique abstract type. A run-time interaction among values indicates that they have the same abstract type, so their abstract types are unified. Also at run time, abstract types for variables are accumulated from abstract types for values. The notion of interaction may be customized, permitting the analysis to compute finer or coarser abstract types; these different notions of abstract type are useful for different tasks. We have implemented the analysis for compiled x86 binaries and for Java bytecodes. Our experiments indicate that the inferred abstract types are useful for program comprehension, improve both the results and the run time of a follow-on program analysis, and are more precise than the output of a comparable static analysis, without suffering from overfitting. Philip J. Guo, Jeff H. Perkins, Stephen McCamant, Michael D. Ernst |
ISSTA | 2 |
| 2005 | Automatic test factoring for javaabstractTest factoring creates fast, focused unit tests from slow system-widetests; each new unit test exercises only a subset of the functionalityexercised by the system test. Augmenting a test suite with factoredunit tests should catch errors earlier in a test run.One way to factor a test is to introduce 'mock' objects. If a testexercises a component T, which interacts with another component E (the'environment'), the implementation of E can be replaced by a mock.The mock checks that T's calls to E are as expected, and it simulatesE's behavior in response. We introduce an automatic technique fortest factoring. Given a system test for T and E, and a record of T'sand E's behavior when the system test is run, test factoring generatesunit tests for T in which E is mocked. The factored tests can isolatebugs in T from bugs in E and, if E is slow or expensive, improve testperformance or cost.We have built an implementation of automatic dynamic test factoring for theJava language. Our experimental data indicates that it can reduce therunning time of a system test suite by up to an order of magnitude. David Saff, Shay Artzi, Jeff H. Perkins, Michael D. Ernst |
ASE | 3 |
| 2005 | Automatically generating refactorings to support API evolutionabstractWhen library APIs change, client code should change in response, in order to avoid erroneous behavior, compilation failures, or warnings. Previous research has introduced techniques for generating such client refactorings. This paper improves on the previous work by proposing a novel, lightweight technique that takes advantage of information that programmers can insert in the code rather than forcing them to use a different tool to re-express it. The key idea is to replace calls to deprecated methods by their bodies, where those bodies consist of the appropriate replacement code. This approach has several benefits. It requires no change in library development practice, since programmers already adjust method bodies and/or write example code, and there are no new tools or languages to learn. It does not require distribution of new artifacts, and a tool to apply it can be lightweight. We evaluated the applicability of our approach on a number of libraries and found it to to be applicable in more than 75% of the cases. Jeff H. Perkins |
PASTE | 1 |
| 2004 | Efficient incremental algorithms for dynamic detection of likely invariantsabstractDynamic detection of likely invariants is a program analysis that generalizes over observed values to hypothesize program properties. The reported program properties are a set of likely invariants over the program, also known as an operational abstraction. Operational abstractions are useful in testing, verification, bug detection, refactoring, comparing behavior, and many other tasks. Jeff H. Perkins, Michael D. Ernst |
SIGSOFT FSE | 1 |