23.08.2013 Views

Specification of Reactive Hardware/Software Systems - Electronic ...

Specification of Reactive Hardware/Software Systems - Electronic ...

Specification of Reactive Hardware/Software Systems - Electronic ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

232 Introduction to the Semantics <strong>of</strong> POOSL<br />

structure <strong>of</strong> modules that hide their internal structure. The constituents <strong>of</strong> a cluster<br />

are composed by parallel composition, channel hiding and channel renaming. These<br />

combinators are based upon similar combinators originally used in CCS [Mil80, Mil89].<br />

Message Interfaces<br />

Every process and cluster has a message interface describing which messages can be<br />

sent and received on the specified channels. The set <strong>of</strong> message interfaces <strong>of</strong> a behaviour<br />

description determines which instances can possibly communicate through which channels.<br />

It does not state when possible communications take place.<br />

Process and Cluster Classes<br />

Processes and clusters are grouped in classes. A class <strong>of</strong> a process (a process class)<br />

specifies the behaviour <strong>of</strong> a collection <strong>of</strong> similar processes objects. A class <strong>of</strong> a cluster<br />

(a cluster class) specifies the behaviour and internal structure <strong>of</strong> a collection <strong>of</strong> similar<br />

clusters. Processes <strong>of</strong> process classes and clusters <strong>of</strong> cluster classes are called instances.<br />

All classes are parameterised by so-called expression parameters. Expression parameters<br />

refer to data objects and are used to initialise an instance <strong>of</strong> a process class or an<br />

instance <strong>of</strong> a cluster class.<br />

Data Objects<br />

Besides processes and clusters, POOSL supports data objects, also called travelling objects.<br />

Data objects are comparable to objects in sequential object-oriented programming<br />

languages such as Smalltalk [GR89], C++ [Str92], Eiffel [Mey88], and SPOOL [AB90]. A<br />

data object consists <strong>of</strong> some private data and has the ability to perform operations on<br />

this data. Data is stored in instance variables, which contain (references to) other objects<br />

or to the object which owns the variables. The variables <strong>of</strong> an object are encapsulated;<br />

they cannot be accessed directly by any other object. They can only be read and changed<br />

by the object itself.<br />

Communication Between Data Objects<br />

Data objects can interact by sending messages to each other. A message consists <strong>of</strong> a<br />

message name, and zero or more parameters. A message can be seen as a request to<br />

carry out one <strong>of</strong> the object’s services. An object explicitly states to which object it wants<br />

to send a message. When an object sends a message, its activities are suspended until<br />

the result <strong>of</strong> the message arrives. An object that receives a message will execute a socalled<br />

method. The name and the parameters <strong>of</strong> this method correspond in a one-to-one<br />

fashion to the name and the parameters <strong>of</strong> the received message. A method implements<br />

one <strong>of</strong> the object’s services. It can access all instance variables <strong>of</strong> its corresponding<br />

object. In addition, a method may have local variables <strong>of</strong> its own. The result <strong>of</strong> a<br />

method execution is returned to the sender.<br />

Data Classes<br />

Data objects are grouped into data classes. A data class describes a set <strong>of</strong> objects that<br />

have the same functionality. The individual objects in a class are called instances.

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

Saved successfully!

Ooh no, something went wrong!