Checking Asynchronously Communicating Components Using Symbolic Transition Systems
Lecture Notes in Computer Science
Explicit behavioural interface description languages (BIDLs, protocols) are now recognized as a mandatory feature of component languages in order to address component reuse, coordination, adaptation and verification issues. Such protocol languages often deal with synchronous communication. However, in the context of distributed systems, components communicating asynchronously through mailboxes are much more relevant. In this paper, we advocate for the use of Symbolic Transition Systems as a
... ocol language which may deal also with this kind of communication. We then present how this generic formalism, specialized with different mailbox protocols, may be used to address verification issues related to the component mailboxes. this kind of communication is also known to yield difficult issues. In this paper we have demonstrated how Symbolic Transition Systems may take into account asynchronous communication and then may be used to address verification issues related to mailbox boundedness. Our STS are symbolic transition systems related to an abstract description of a data type. It provides a uniform and general framework to reason and compare different but related state machines. This may be used to express different mailbox policies for components. In this paper this property has been used to related boundedness decidability results between fifo and dico mailbox policies. Often designing architectures needs guards and parameters to code complex communications between several instances of the same component type, for instance controller systems with several clients or telephony systems. One future work is to study specific communication checking to help the design and analysis of such systems. We have yet some preliminary results about deadlock checking for STS. We have to prove these results and to compare them with model-checking techniques. One last work is to continue the development of our Java library to integrate some already known algorithms, for instance some results of [29, 15, 2, 31] .