James C. Corbett

dblp:42/5495 · DBLP profile ↗
← Back
27ranked-venue papers
15as first author
0since 2021 · last 2013
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 19 · 12 first-authorSystems, architecture and hardware · 3 · 1 first-authorTheory of computation · 3 · 1 first-authorDatabases, data management, data science and information retrieval · 2Applied, interdisciplinary, general and emerging computing · 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.

Computer architecture, parallel and distributed computing, and storage systems
9 papers
Distributed systems · 84% Embedded and real-time systems · 8% Cloud and datacenter computing · 5%
Software engineering, system software, and programming languages
14 papers
Program verification · 54% Program analysis · 25% Concurrent programming · 14%

Topics — the 30 heaviest of 36, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Distributed systems
distributed database
0.322013
Spanner: Google's Globally Distributed Database · ACM Trans. Comput. Syst. 2013
Spanner: Google's Globally-Distributed Database · OSDI 2012
Distributed systems
consensus
0.212013
Spanner: Google's Globally Distributed Database · ACM Trans. Comput. Syst. 2013
Distributed systems
replication
0.212013
Spanner: Google's Globally Distributed Database · ACM Trans. Comput. Syst. 2013
Distributed systems › replication › update propagation
synchronous replication
0.212013
Spanner: Google's Globally Distributed Database · ACM Trans. Comput. Syst. 2013
Program verification
model checking
0.172000
Using shape analysis to reduce finite-state models of concurrent Java programs · ACM Trans. Softw. Eng. Methodol. 2000
Bandera: a source-level interface for model checking Java programs · ICSE 2000
Bandera: extracting finite-state models from Java source code · ICSE 2000
Embedded and real-time systems
real-time system analysis
0.131998
Analyzing Partially-Implemented Real-Time Systems · IEEE Trans. Software Eng. 1998
Analyzing Partially-Implemented Real-Time Systems · ICSE 1997
Automated Derivation of Time Bounds in Uniprocessor Concurrent Systems · IEEE Trans. Software Eng. 1994
Program analysis › specification mining
finite-state automaton inference
0.022000
Bandera: extracting finite-state models from Java source code · ICSE 2000
Constructing Compact Models of Concurrent Java Programs · ISSTA 1998
Distributed systems › distributed coordination and fault tolerance
consensus and replication
0.012012
Spanner: Google's Globally-Distributed Database · OSDI 2012
Program verification › model checking
state space reduction
0.022000
Using shape analysis to reduce finite-state models of concurrent Java programs · ACM Trans. Softw. Eng. Methodol. 2000
Evaluating Deadlock Detection Methods for Concurrent Software · IEEE Trans. Software Eng. 1996
Program analysis
static analysis
0.022000
Using shape analysis to reduce finite-state models of concurrent Java programs · ACM Trans. Softw. Eng. Methodol. 2000
Evaluating Deadlock Detection Methods for Concurrent Software · IEEE Trans. Software Eng. 1996
Electronic design automation
timing analysis
0.031996
Timing Analysis of Ada Tasking Programs · IEEE Trans. Software Eng. 1996
A Practical Technique for Bounding the Time Between Events in Concurrent Real-Time Systems · ISSTA 1993
Automated Derivation of Time Bounds in Uniprocessor Concurrent Systems · IEEE Trans. Software Eng. 1994
Program analysis › static analysis › pointer analysis
shape analysis
0.012000
Using shape analysis to reduce finite-state models of concurrent Java programs · ACM Trans. Softw. Eng. Methodol. 2000
Program verification › model checking
finite-state verification
0.011999
Patterns in Property Specifications for Finite-State Verification · ICSE 1999
Requirements engineering and software design › specification
specification patterns
0.011999
Patterns in Property Specifications for Finite-State Verification · ICSE 1999
Automated reasoning and model checking
temporal logic specification
0.011999
Patterns in Property Specifications for Finite-State Verification · ICSE 1999
Programming languages and type systems › concurrent programming languages
ada tasking
0.011996
Timing Analysis of Ada Tasking Programs · IEEE Trans. Software Eng. 1996
Concurrent programming
deadlock detection
0.011996
Evaluating Deadlock Detection Methods for Concurrent Software · IEEE Trans. Software Eng. 1996
Program verification › model checking
partial order reduction
0.011996
Evaluating Deadlock Detection Methods for Concurrent Software · IEEE Trans. Software Eng. 1996
Program verification › model checking
symbolic model checking
0.011996
Evaluating Deadlock Detection Methods for Concurrent Software · IEEE Trans. Software Eng. 1996
Concurrent programming
concurrency analysis
0.011994
Towards Scalable Compositional Analysis · SIGSOFT FSE 1994
Concurrent programming › concurrency bugs › deadlock
deadlock analysis
0.011994
An Empirical Evaluation of Three Methods for Deadlock Analysis of Ada Tasking Programs · ISSTA 1994
Program verification
modular verification
0.011994
Towards Scalable Compositional Analysis · SIGSOFT FSE 1994
Program verification › model checking
state space exploration
0.011994
Modeling and Analysis of Real-Time Ada Tasking Programs · RTSS 1994
Concurrent programming › concurrency semantics
trace equivalence
0.011994
Towards Scalable Compositional Analysis · SIGSOFT FSE 1994
Embedded and real-time systems › real-time analysis
real-time program analysis
0.011994
Modeling and Analysis of Real-Time Ada Tasking Programs · RTSS 1994
Embedded and real-time systems
real-time scheduling
0.011993
A Practical Technique for Bounding the Time Between Events in Concurrent Real-Time Systems · ISSTA 1993
Concurrent programming
concurrency bugs
0.012000
Using shape analysis to reduce finite-state models of concurrent Java programs · ACM Trans. Softw. Eng. Methodol. 2000
Program verification › concurrent program verification
multithreaded program verification
0.012000
Bandera: a source-level interface for model checking Java programs · ICSE 2000
Program analysis
source code analysis
0.012000
Bandera: extracting finite-state models from Java source code · ICSE 2000
Program analysis
concurrent system analysis
0.011991
Automated Analysis of Concurrent Systems With the Constrained Expression Toolset · IEEE Trans. Software Eng. 1991

Methods — techniques the papers use, named apart from their topics

truetime · 0.2regular expressions · 0.1graphical interval logic · 0.1pattern-based specification · 0.0ada · 0.0model construction · 0.0schedulability analysis · 0.0shape analysis · 0.0finite-state model extraction · 0.0static pointer analysis · 0.0timing property verification · 0.0mathematical modeling · 0.0inequality-necessary conditions · 0.0semi-decision procedure · 0.0linear programming · 0.0
YearPublicationVenuePosition
2013 Spanner: Google's Globally Distributed Database
abstract
Spanner is Google’s scalable, multiversion, globally distributed, and synchronously replicated database. It is the first system to distribute data at global scale and support externally-consistent distributed transactions. This article describes how Spanner is structured, its feature set, the rationale underlying various design decisions, and a novel time API that exposes clock uncertainty. This API and its implementation are critical to supporting external consistency and a variety of powerful features: nonblocking reads in the past, lock-free snapshot transactions, and atomic schema changes, across all of Spanner.
James C. Corbett, Jeffrey Dean, Michael Epstein, Andrew Fikes, Christopher Frost 0001, J. J. Furman, Sanjay Ghemawat, Andrey Gubarev, Christopher Heiser, Peter Hochschild, Wilson C. Hsieh, Sebastian Kanthak, Eugene Kogan, Alexander Lloyd, Sergey Melnik 0001, David Mwaura, David Nagle, Sean Quinlan, Rajesh Rao, Lindsay Rolig, Yasushi Saito, Michal Szymaniak, Ruth Wang, Dale Woodford
ACM Trans. Comput. Syst.1
2012 Spanner: Google's Globally-Distributed Database
James C. Corbett, Jeffrey Dean, Michael Epstein, Andrew Fikes, Christopher Frost 0001, J. J. Furman, Sanjay Ghemawat, Andrey Gubarev, Christopher Heiser, Peter Hochschild, Wilson C. Hsieh, Sebastian Kanthak, Eugene Kogan, Alexander Lloyd, Sergey Melnik 0001, David Mwaura, David Nagle, Sean Quinlan, Rajesh Rao, Lindsay Rolig, Yasushi Saito, Michal Szymaniak, Ruth Wang, Dale Woodford
OSDI1
2011 Megastore: Providing Scalable, Highly Available Storage for Interactive Services
Jason Baker, Chris Bond, James C. Corbett, J. J. Furman, Andrey Khorlin, James Larson, Jean-Michel Leon, Alexander Lloyd, Vadim Yushprakh
CIDR3
2002 Expressing checkable properties of dynamic systems: the Bandera Specification Language
James C. Corbett, Matthew B. Dwyer, John Hatcliff, Robby
Int. J. Softw. Tools Technol. Transf.1
2000 Bandera: extracting finite-state models from Java source code
abstract
Finite-state verification techniques, such as model checking, have shown promise as a cost-effective means for finding defects in hardware designs. To date, the application of these techniques to software has been hindered by several obstacles. Chief among these is the problem of constructing a finite-state model that approximates the executable behavior of the software system of interest. Current best-practice involves hand-construction of models which is expensive (prohibitive for all but the smallest systems), prone to errors (which can result in misleading verification results), and difficult to optimize (which is necessary to combat the exponential complexity of verification algorithms).
James C. Corbett, Matthew B. Dwyer, John Hatcliff, Shawn Laubach, Corina Pasareanu, Robby, Hongjun Zheng
ICSE1
2000 Bandera: a source-level interface for model checking Java programs
abstract
Despite emerging tool support for assertion-checking and testing of object-oriented programs, providing convincing evidence of program correctness remains a difficult challenge. This is especially true for multi-threaded programs. Techniques for reasoning about finite-state systems have been developing rapidly over the past decade and have the potential to form the basis of powerful software validation theologies.We have developed the Bandera toolset [1] to harness the power of existing model checking tools to apply them to reason about correctness requirements of Java programs. Bandera provides tool support for defining and managing collections of requirements for a program, for extracting compact finite-state models of the program to enable tractable analysis, and for displaying analysis results to the user through a debugger-like interface. This paper describes and illustrates the use of Bandera's source-level user interface for model checking Java programs.
James C. Corbett, Matthew B. Dwyer, John Hatcliff, Robby
ICSE1
2000 Benchmarking Finite-State Verifiers
George S. Avrunin, James C. Corbett, Matthew B. Dwyer
Int. J. Softw. Tools Technol. Transf.2
2000 Using shape analysis to reduce finite-state models of concurrent Java programs
abstract
Finite-state verification (e.g., model checking) provides a powerful means to detect concurrency errors, which are often subtle and difficult to reproduce. Nevertheless, widespread use of this technology by developers is unlikely until tools provide automated support for extracting the required finite-state models directly from program source. Unfortunately, the dynamic features of modern languages such as Java complicate the construction of compact finite-state models for verification. In this article, we show how shape analysis, which has traditionally been used for computing alias information in optimizers, can be used to greatly reduce the size of finite-state models of concurrent Java programs by determining which heap-allocated variables are accessible only by a single thread, and which shared variables are protected by locks. We also provide several other state-space reductions based on the semantics of Java monitors. A prototype of the reductions demonstrates their effectiveness.
James C. Corbett
ACM Trans. Softw. Eng. Methodol.1
1999 Patterns in Property Specifications for Finite-State Verification
abstract
Article Patterns in property specifications for finite-state verification Share on Authors: Matthew B. Dwyer Kansas State University, Department of Computing and Information Sciences, Manhattan, KS Kansas State University, Department of Computing and Information Sciences, Manhattan, KSView Profile , George S. Avrunin University of Massachusetts, Department of Mathematics and Statistics, Amherst, MA University of Massachusetts, Department of Mathematics and Statistics, Amherst, MAView Profile , James C. Corbett University of Hawai'i, Department of Information and Computer Science, Honolulu, HI University of Hawai'i, Department of Information and Computer Science, Honolulu, HIView Profile Authors Info & Claims ICSE '99: Proceedings of the 21st international conference on Software engineeringMay 1999 Pages 411–420https://doi.org/10.1145/302405.302672Online:16 May 1999Publication History 956citation2,118DownloadsMetricsTotal Citations956Total Downloads2,118Last 12 Months172Last 6 weeks21 Get Citation AlertsNew Citation Alert added!This alert has been successfully added and will be sent to:You will be notified whenever a record that you have chosen has been cited.To manage your alert preferences, click on the button below.Manage my AlertsNew Citation Alert!Please log in to your account Save to BinderSave to BinderCreate a New BinderNameCancelCreateExport CitationPublisher SiteGet Access
Matthew B. Dwyer, George S. Avrunin, James C. Corbett
ICSE3
1999 A Formal Study of Slicing for Multi-threaded Programs with JVM Concurrency Primitives
John Hatcliff, James C. Corbett, Matthew B. Dwyer, Stefan Sokolowski, Hongjun Zheng
SAS2
1998 Constructing Compact Models of Concurrent Java Programs
abstract
Finite-state verification technology (e.g., model checking) provides a powerful means to detect concurrency errors, which are often subtle and difficult to reproduce. Nevertheless, widespread use of this technology by developers is unlikely until tools provide automated support for extracting the required finite-state models directly from program source. In this paper, we explore the extraction of compact concurrency models from Java code. In particular, we show how static pointer analysis, which has traditionally been used for computing alias information in optimizers, can be used to greatly reduce the size of finite-state models of concurrent Java programs.
James C. Corbett
ISSTA1
1998 Analyzing Partially-Implemented Real-Time Systems
abstract
Most analysis methods for real-time systems assume that all the components of the system are at roughly the same stage of development and can be expressed in a single notation, such as a specification or programming language. There are, however, many situations in which developers would benefit from tools that could analyze partially-implemented systems: those for which some components are given only as high-level specifications while others are fully implemented in a programming language. In this paper, we propose a method for analyzing such partially-implemented real-time systems. We consider real-time concurrent systems for which some components are implemented in Ada and some are partially specified using regular expressions and graphical interval logic (GIL), a real-time temporal logic. We show how to construct models of the partially-implemented systems that account for such properties as run-time overhead and scheduling of processes, yet support tractable analysis of nontrivial programs. The approach can be fully automated, and we illustrate it by analyzing a small example.
George S. Avrunin, James C. Corbett, Laura K. Dillon
IEEE Trans. Software Eng.2
1997 Analyzing Partially-Implemented Real-Time Systems
abstract
We propose a method for analyzing partially-implemented real-time systems.Here we consider real-time concurrent systems for which some components are implemented in Ada and some are partially specified using regular expressions and Graphical Interval Logic (GIL), a real-time temporal logic.We show how to construct models of the partiallyimplemented systems that account for such properties as run-time overhead and scheduling of processes, yet support tractable analysis of nontrivial programs.The approach can be fully automated, and we illustrate it by analyzing a small example.
George S. Avrunin, James C. Corbett, Laura K. Dillon
ICSE2
1996 Constructing Abstract Models of Concurrent Real-Time Software
abstract
Concurrent real-time software is used in many safety-critical applications. Assuring the quality of such software requires the use of formal methods. Before a program can be analyzed formally, however, we must construct a mathematical model that captures the aspects of the program we want to verify. In this paper, we show how to construct mathematical models of concurrent real-time software that are suitable for analyzing the program's timing properties. Our approach differs from schedulability analysis in that we do not assume that the software has a highly restricted structure (e.g., a set of periodic tasks). Also, unlike most more abstract models of real-time systems, we account for essential properties of real implementations, such as resource constraints and run-time overhead.
James C. Corbett
ISSTA1
1996 Evaluating Deadlock Detection Methods for Concurrent Software
abstract
Static analysis of concurrent programs has been hindered by the well-known state explosion problem. Although many different techniques have been proposed to combat this state explosion, there is little empirical data comparing the performance of the methods. This information is essential for assessing the practical value of a technique and for choosing the best method for a particular problem. In this paper, we carry out an evaluation of three techniques for combating the state explosion problem in deadlock detection: reachability searching with a partial-order state-space reduction, symbolic model checking and inequality-necessary conditions. We justify the method used for the comparison, and carefully analyze several sources of potential bias. The results of our evaluation provide valuable data on the kinds of programs to which each technique might best be applied. Furthermore, we believe that the methodological issues we discuss are of general significance in comparison of analysis techniques.
James C. Corbett
IEEE Trans. Software Eng.1
1996 Timing Analysis of Ada Tasking Programs
abstract
Concurrent real-time software is increasingly used in safety-critical embedded systems. Assuring the quality of such software requires the rigor of formal methods. In order to analyze a program formally, we must first construct a mathematical model of its behavior. In this paper, we consider the problem of constructing such models for concurrent real-time software. In particular, we provide a method for building mathematical models of real-time Ada tasking programs that are accurate enough to verify interesting timing properties, and yet abstract enough to yield a tractable analysis on nontrivial programs. Our approach differs from schedulability analysis in that we do not assume that the software has a highly restricted structure (e.g. a set of periodic tasks). Also, unlike most abstract models of real-time systems, we account for essential properties of real implementations, such as resource constraints and run-time overhead.
James C. Corbett
IEEE Trans. Software Eng.1
1995 Using Integer Programming to Verify General Safety and Liveness Properties
James C. Corbett, George S. Avrunin
Formal Methods Syst. Des.1
1994 An Empirical Evaluation of Three Methods for Deadlock Analysis of Ada Tasking Programs
abstract
Static analysis of Ada tasking programs has been hindered by the well known state explosion problem that arises in the verification of concurrent systems. Many different techniques have been proposed to combat this state explosion. All proposed methods excel on certain kinds of systems, but there is little empirical data comparing the performance of the methods. In this paper, we select one representative from each of three very different approaches to the state explosion problem: partial-orders (representing state-space reductions), symbolic model checking (representing OBDD-based approaches), and inequality necessary conditions (representing integer programming-based approaches). We apply the methods to several scalable concurrency examples from the literature and to one real Ada tasking program. The results of these experiments are presented and their significance is discussed.
James C. Corbett
ISSTA1
1994 Modeling and Analysis of Real-Time Ada Tasking Programs
abstract
Proposes a model for real-time Ada tasking programs that naturally represents such features as processor sharing, priority preemption, and process suspension. We describe a semi-decision procedure for proving properties of the model that uses linear programming to determine the feasibility of paths explored during a state-space search of the program. We demonstrate the feasibility of this procedure by applying a prototype analyzer to several examples.>
James C. Corbett
RTSS1
1994 Towards Scalable Compositional Analysis
abstract
Due to the state explosion problem, analysis of large concurrent programs will undoubtedly require compositional techniques. Existing compositional techniques are based on the idea of replacing complex subsystems with simpler processes with the same interfaces to their environments, and using the simpler processes to analyze the full system. Most algorithms for proving equivalence between two processes, however, require enumerating the states of both processes. When part of a concurrent system consists of many highly coupled processes, it may not be possible to decompose the system into components that are both small enough to enumerate and have simple interfaces with their environments. In such cases, analysis of the systems by standard methods will be infeasible. In this paper, we describe a technique for proving trace equivalence of deterministic and divergence-free systems without enumerating their states. (For deterministic systems, essentially all the standard notions of process...
James C. Corbett, George S. Avrunin
SIGSOFT FSE1
1994 Practical Algorithms for Online Routing on Fixed and Reconfigurable Meshes
Martin C. Herbordt, James C. Corbett, Charles C. Weems, John Spalding
J. Parallel Distributed Comput.2
1994 Automated Derivation of Time Bounds in Uniprocessor Concurrent Systems
abstract
The successful development of complex real-time systems depends on analysis techniques that can accurately assess the timing properties of those systems. This paper describes a technique for deriving upper and lower bounds on the time that can elapse between two given events in an execution of a concurrent software system running on a single processor under arbitrary scheduling. The technique involves generating linear inequalities expressing conditions that must be satisfied by all executions of such a system and using integer programming methods to find appropriate solutions to the inequalities. The technique does not require construction of the state space of the system and its feasibility has been demonstrated by using an extended version of the constrained expression toolset to analyze the timing properties of some concurrent systems with very large state spaces.>
George S. Avrunin, James C. Corbett, Laura K. Dillon, Jack C. Wileden
IEEE Trans. Software Eng.2
1993 A Practical Technique for Bounding the Time Between Events in Concurrent Real-Time Systems
abstract
Showing that concurrent systems satisfy timing constraints on their behavior is difficult, but may be essential for critical applications. Most methods are based on some form of reachability analysis and require construction of a state space of size that is, in general, exponential in the number of components in the concurrent system. In an earlier paper with L. K. Dillon and J. E. Wileden, we described a technique for finding bounds on the time between events without enumerating the state space, but the technique applies chiefly to the case of logically concurrent systems executing on a uniprocessor, in which events do not overlap in time. In this paper, we extend that technique to obtain upper bounds on the time between events in maximally parallel concurrent systems. Our method does not require construction of the state space and the results of preliminary experiments show that, for at least some systems with large state spaces, it is quite tractable. We also briefly describe the application of our method to the case in which there are multiple processors, but several processes run on each processor.
James C. Corbett, George S. Avrunin
ISSTA1
1991 A Note on Some Languages in Uniform ACC0
David A. Mix Barrington, James C. Corbett
Theor. Comput. Sci.2
1991 Automated Analysis of Concurrent Systems With the Constrained Expression Toolset
abstract
The constrained expression approach to analysis of concurrent software systems can be used with a variety of design and programming languages and does not require a complete enumeration of the set of reachable states of the concurrent system. The construction of a toolset automating the main constrained expression analysis techniques and the results of experiments with that toolset are reported. The toolset is capable of carrying out completely automated analyses of a variety of concurrent systems, starting from source code in an Ada-like design language and producing system traces displaying the properties represented bv the analysts queries. The strengths and weaknesses of the toolset and the approach are assessed on both theoretical and empirical grounds.>
George S. Avrunin, Ugo A. Buy, James C. Corbett, Laura K. Dillon, Jack C. Wileden
IEEE Trans. Software Eng.3
1990 Message-Passing Algorithms for a SIMD Torus with Coteries
abstract
This paper describes the results of an investigation into routing algorithms to be used when programming the CAAPP (Content Addressable Array Parallel Processor) [19], a SIMD mesh-connected array processor enhanced with the coterie network, a mechanism similar to reconfigurable buses. We will show that the coterie network gives the CAAPP a capability far beyond solely meshconnected processors; in fact, the performance of routing on many classes of permutations is more comparable to the Connection Machine which has a dedicated hypercube routing network. Most of the current routing algorithms for meshconnected array processors (with N PEs in an n \\Theta n
Martin C. Herbordt, Charles C. Weems, James C. Corbett
SPAA3
1989 On the Relative Complexity of Some Languages in NC
David A. Mix Barrington, James C. Corbett
Inf. Process. Lett.2