Bandera: extracting finite-state models from Java source code

  • Authors:
  • James C. Corbett;Matthew B. Dwyer;John Hatcliff;Shawn Laubach;Corina S. Păsăreanu; Robby;Hongjun Zheng

  • Affiliations:
  • University of Hawai'i, Department of Information and Computer Science, Honolulu, HI;Kansas State University, Department of Computing and Information Sciences, Manhattan, KS;Kansas State University, Department of Computing and Information Sciences, Manhattan, KS;Kansas State University, Department of Computing and Information Sciences, Manhattan, KS;Kansas State University, Department of Computing and Information Sciences, Manhattan, KS;Kansas State University, Department of Computing and Information Sciences, Manhattan, KS;Kansas State University, Department of Computing and Information Sciences, Manhattan, KS

  • Venue:
  • Proceedings of the 22nd international conference on Software engineering
  • Year:
  • 2000

Quantified Score

Hi-index 0.02

Visualization

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).In this paper, we describe an integrated collection of program analysis and transformation components, called Bandera, that enables the automatic extraction of safe, compact finite-state models from program source code. Bandera takes as input Java source code and generates a program model in the input language of one of several existing verification tools; Bandera also maps verifier outputs back to the original source code. We discuss the major components of Bandera and give an overview of how it can be used to model check correctness properties of Java programs.