Efficient detection of errors in java components using random environment and restarts

  • Authors:
  • Pavel Parizek;Tomas Kalibera

  • Affiliations:
  • Distributed Systems Research Group, Department of Software Engineering, Faculty of Mathematics and Physics, Charles University in Prague, Prague 1, Czech Republic;Distributed Systems Research Group, Department of Software Engineering, Faculty of Mathematics and Physics, Charles University in Prague, Prague 1, Czech Republic

  • Venue:
  • TACAS'10 Proceedings of the 16th international conference on Tools and Algorithms for the Construction and Analysis of Systems
  • Year:
  • 2010

Quantified Score

Hi-index 0.00

Visualization

Abstract

Software model checkers are being used mostly to discover specific types of errors in the code, since exhaustive verification of complex programs is not possible due to state explosion. Moreover, typical model checkers cannot be directly applied to isolated components such as libraries or individual classes. A common solution is to create an abstract environment for a component to be checked. When no constraints on component's usage are defined by its developers, a natural choice is to use a universal environment that performs all possible sequences of calls of component's methods in several concurrently-running threads. However, model checking of components with a universal environment is prone to state explosion. In this paper we present a method that allows to discover at least some concurrency errors in component's code in reasonable time. The key ideas of our method are (i) use of an abstract environment that performs a random sequence of method calls in each thread, and (ii) restarts of the error detection process according to a specific strategy. We have implemented the method in the context of Java components and the Java PathFinder model checker. We have performed experiments on non-trivial Java components to show that our approach is viable.