Enhancing spark's contract checking facilities using symbolic execution

  • Authors:
  • Jason Belt;John Hatcliff; Robby;Patrice Chalin;David Hardin;Xianghua Deng

  • Affiliations:
  • Kansas State University, Manhattan, KS, USA;Kansas State University, Manhattan, KS, USA;Kansas State University, Manhattan, KS, USA;Concordia University, Montreal, PQ, Canada;Rockwell Collins Advanced Technology Center, Cedar Rapids, IA, USA;Google Inc., Mountain View, CA, USA

  • Venue:
  • SIGAda '11 Proceedings of the 2011 ACM annual international conference on Special interest group on the ada programming language
  • Year:
  • 2011

Quantified Score

Hi-index 0.00

Visualization

Abstract

Spark, a subset of Ada for engineering safety and security-critical systems, is one of the best commercially available frameworks for formal-methods-supported development of critical software. Spark is designed for verification and includes a software contract language for specifying functional properties of procedures. Even though Spark and its static analysis components are beneficial and easy to use, its contract language is rarely used for stating properties beyond simple constraints on scalar values due to the burdens the associated tool support imposes on developers. Symbolic execution (SymExe) techniques have made significant strides in automating reasoning about deep semantic properties of source code. However, most work on SymExe has focused on bug-finding and test case generation as opposed to tasks that are more verification-oriented such as contract checking. In previous work we have presented: (a) SymExe techniques for checking software contracts in embedded critical systems, and (b) Bakar Kiasan, a tool that implements these techniques in an integrated development environment for Spark. In this paper, we give a detailed walk-through of Bakar Kiasan as it is applied to an industrial code base for an embedded security device. We illustrate how Bakar Kiasan provides significant increases in automation, usability, and functionality over existing Spark contract checking tools, and we present results from performance evaluations of its application to industrial examples.