14.08.2013 Views

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

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!