Reactive Systems: Modelling, Specification and Verification - Cs.ioc.ee
Reactive Systems: Modelling, Specification and Verification - Cs.ioc.ee
Reactive Systems: Modelling, Specification and Verification - Cs.ioc.ee
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
8 CHAPTER 1. INTRODUCTION<br />
prototype specification languages for reactive systems. They evolved from the insights<br />
of many outst<strong>and</strong>ing researchers over the last thirty years, <strong>and</strong> a brief history<br />
of the evolution of the original ideas that led to their development may be found<br />
in (Baeten, 2005). (For an accessible, but more advanced, discussion of the role that<br />
algebra plays in process theory you may consult the survey paper (Luttik, 2006).)<br />
A crucial initial observation that is at the heart of the notion of process algebra<br />
is due to Milner, who noticed that concurrent processes have an algebraic structure.<br />
For example, once we have built two processes P <strong>and</strong> Q, we can form a<br />
new process by combining P <strong>and</strong> Q sequentially or in parallel. The result of these<br />
combinations will be a new process whose behaviour depends on that of P <strong>and</strong> Q<br />
<strong>and</strong> on the operation that we have used to compose them. This is the first sense<br />
in which these description languages are algebraic: they consist of a collection of<br />
operations for building new process descriptions from existing ones.<br />
Since these languages aim at specifying parallel processes that may interact<br />
with one another, a key issue that n<strong>ee</strong>ds to be addressed is how to describe communication/interaction<br />
betw<strong>ee</strong>n processes running at the same time. Communication<br />
amounts to information exchange betw<strong>ee</strong>n a process that produces the information<br />
(the sender), <strong>and</strong> a process that consumes it (the receiver). We often think of<br />
this communication of information as taking place via some medium that connects<br />
the sender <strong>and</strong> the receiver. If we are to develop a theory of communicating systems<br />
based on this view, it looks as if we have to decide upon the communication<br />
medium used in inter-process communication. Several possible choices immediately<br />
come to mind. Processes may communicate via, e.g., (un)bounded buffers,<br />
shared variables, some unspecified ether, or the tuple spaces used by Linda-like<br />
languages (Gelernter, 1985). Which one do we choose? The answer is not at all<br />
clear, <strong>and</strong> each specific choice may in fact reduce the applicability of our language<br />
<strong>and</strong> the models that support it. A language that can properly describe processes that<br />
communicate via, say, FIFO buffers may not readily allow us to specify situations<br />
in which processes interact via shared variables, say.<br />
The solution to this riddle is both conceptually simple <strong>and</strong> general. One of the<br />
crucial original insights of figures like Hoare <strong>and</strong> Milner is that we n<strong>ee</strong>d not distinguish<br />
betw<strong>ee</strong>n active components like senders <strong>and</strong> receivers, <strong>and</strong> passive ones like<br />
the aforementioned kinds of communication media. All of these may be viewed as<br />
processes—that is, as systems that exhibit behaviour. All of these processes can interact<br />
via message-passing modelled as synchronized communication, which is the<br />
only basic mode of interaction. This is the key idea underlying Hoare’s Communicating<br />
Sequential Processes (CSP) (Hoare, 1978; Hoare, 1985), a highly influential<br />
proposal for a programming language for parallel programs, <strong>and</strong> Milner’s Calculus<br />
of Communicating <strong>Systems</strong> (CCS) (Milner, 1989), the paradigmatic process<br />
algebra.