Heuristics for the State Space Division

All model checkers suffer from the state space explosion. The distribution of the task among several machines is a technique which adresses this problem. The key issue of a distributed checker are the rules for assigning the states to the participating machines. The task of the checker is to visit all states of the system, which usually arise from the composition of smaller systems. This paper presents ideas how to use information obtained from the state spaces of the particular systems to predict suitable division of the composite state space among the participating machines. Introduction Growth of the computability power in the last years enabled practical use of model checking of software systems. The developer provides a model of the software and a set of properties that are believed to hold. Then the state space of the model is examined to prove that all properties really hold in all states the system can reach. This proof, or the counter example which is provided if some property does not hold, helps the developer to deliver the software sooner and cheaper. Unfortunately, the size of the state space is typically exponential to the size of the model description. This fact is referred as ‘state space explosion’. The state space explosion is a burning problem that limits usage of the model checking to relatively small tasks. One of the approaches that significantly decrease state space of the task are Behavior Protocols [1]. This is achieved by using component paradigm for splitting the model into independent parts. A Behavior Protocol is a regular expression that describes the behavior of a software component. The component implementation details are hidden during the checking of the whole application—what is reduced to the checking whether behavior protocols of used components are compliant. However, even the checking of Behavior Protocols compliance faces the exponential growth of number of states. Here, the distribution can help. As a Behavior Protocol is similar to a regular expression, it can be expressed by a finite state machine—FSM. We are interested in such state spaces that originate from a set of behavior protocols. Such state spaces—composite state spaces (CSS)—resemble the cartesian product of the original protocols’ FSMs—primitive state spaces (PSS). In the following text, the states (resp. edges) of the Composite State Space are refered to as composite states ( resp. edges). If there is no communication between components, the CSS is even equal to the cartesian product of PSSs. Having a system consisting of n components, a state is uniquely identified by an ncomponent vector. Each vector component identifies a state of one protocol. The entire state space can be thus enclosed in an n-dimensional cuboid. One of the key issues of a distributed checker is the set of rules for assigning the states to the participating machines. We can formulate this issue as assigning parts of the n-dimensional cuboid to the available machines. Other approaches are described in [2–5]. There are two requirements for the division. Requirement 1 Number of composite states assigned to each machine must be similar. Requirement 2 Number of composite edges crossing a machine boundary must be minimal. The task of splitting the cuboid can be split into two independent problems. First, split the cuboid into areas, and second, assign the areas to distinct machines. In the following text, the WDS'07 Proceedings of Contributed Papers, Part I, 52–57, 2007. ISBN 978-80-7378-023-4 © MATFYZPRESS