As its name suggests, CSP allows us to describe systems as a number of components (processes) which operate independently and communicate with each other solely over well-defined channels. To give the archetypal CSP example; an abstract representation of a chocolate machine might be able to carry out two different events, 'coin' and 'choc' which represent the insertion of payment and the delivery of a chocolate respectively. A machine which demanded payment before offering a chocolate could be written as:
coin -> choc -> STOP
A person who might choice to use a coin or card could be modelled as:
(coin -> STOP) [] (card -> STOP)
These two processes can be put in parallel, the resulting processes depending on the events they must syncronise on. If this was both "coin" and "card", the resulting process would be:
coin -> choc -> STOP
whereas if synchronization was only required on "coin", the resulting process would be:
(coin -> choc -> STOP) [] (card ->STOP)
Events can be abstracted in CSP by various mechanisms such as hiding events and renaming events. If we hide the "coin" and "card" events from the second of the combined processes, we get the nondeterministic process:
(choc -> STOP) |~| STOP
This is a process which either offers a "choc" event and then stops, or just stops. In other words, if we treat the abstraction as an external view of the system (eg. someone who does not see the decision reached by the person), a nondeterminism has been introduced.
Table of contents |
2 References 3 External links |
See also
References
External links
site contains some information about CSP and useful links.