Extending JML for modular specification and verification of multi-threaded programs

  • Authors:
  • Edwin Rodríguez;Matthew Dwyer;Cormac Flanagan;John Hatcliff;Gary T. Leavens; Robby

  • Affiliations:
  • Department of Computing and Information Sciences, Kansas State University;Department of Computer Science and Engineering, University of Nebraska-Lincoln;Computer Science Department, University of California, Santa Cruz;Department of Computing and Information Sciences, Kansas State University;Department of Computer Science, Iowa State University;Department of Computing and Information Sciences, Kansas State University

  • Venue:
  • ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
  • Year:
  • 2005

Quantified Score

Hi-index 0.00

Visualization

Abstract

The Java Modeling Language (JML) is a formal specification language for Java that allows developers to specify rich software contracts for interfaces and classes, using pre- and postconditions and invariants. Although JML has been widely studied and has robust tool support based on a variety of automated verification technologies, it shares a problem with many similar object-oriented specification languages—it currently only deals with sequential programs. In this paper, we extend JML to allow for effective specification of multi-threaded Java programs. The new constructs rely on the non-interference notion of method atomicity, and allow developers to specify locking and other non-interference properties of methods. Atomicity enables effective specification of method pre- and postconditions and supports Hoare-style modular reasoning about methods. Thus the new constructs mesh well with JML's existing features. We validate the specification language design by specifying the behavior of a number of complex Java classes designed for use in multi-threaded programs. We also demonstrate that it is amenable to automated verification using model checking technology.