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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

9.3 Formal Syntax 263<br />

In almost any complex reactive hardware/s<strong>of</strong>tware system messages or conditions can<br />

be identified that interfere with the normal course <strong>of</strong> behaviour. In general, these<br />

messages or conditions have to be dealt with immediately, no matter what other activities<br />

are currently being carried out. To specify such complex behaviour, POOSL provides<br />

an abort statement and an interrupt statement. The difference between an abort and an<br />

interrupt is that the former aborts the current course <strong>of</strong> behaviour whereas the latter only<br />

temporarily interrupts the current course <strong>of</strong> behaviour. The abort operator is similar to<br />

the disabling operator <strong>of</strong> LOTOS [vEVD89].<br />

Processes contain internal data in the form <strong>of</strong> data objects (also called travelling objects)<br />

which are stored in instance variables. Data objects are private to the owning process, i.e.,<br />

process objects have no shared variables or shared data. A process can interact with its<br />

data objects by sending messages to them. When a process sends a message to one <strong>of</strong><br />

its data objects, its activities are suspended until the result <strong>of</strong> the message arrives. Data<br />

objects themselves cannot send messages (except for replies) to a process object.<br />

When two processes communicate, a message and a (possibly empty) set <strong>of</strong> parameters<br />

is passed from one process to another. The parameters refer to objects which are private<br />

to the sending process. Because processes do not have any data in common, it does not<br />

suffice just to pass a set <strong>of</strong> references to the data objects, as in traditional object-oriented<br />

languages. Instead, the objects themselves have to be passed (whence the term travelling<br />

object). This means that a new set <strong>of</strong> objects has to be created within the environment <strong>of</strong><br />

the receiving process. These objects are deepCopies <strong>of</strong> the data objects involved in the<br />

rendezvous. The concept <strong>of</strong> travelling object was first introduced in [Ver92].<br />

Next to processes, POOSL supports clusters. A cluster is hierarchically built from processes<br />

and other clusters and acts as an abstraction <strong>of</strong> these. The constituents <strong>of</strong> a cluster<br />

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

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

Processes and clusters are grouped in classes, just as data objects. Members <strong>of</strong> classes<br />

are called instances. A process is an instance <strong>of</strong> a process class, and a cluster is an instance<br />

<strong>of</strong> a cluster class. Each class can be parameterised. Parameters refer to data objects and<br />

are used to initialise an instance <strong>of</strong> a class.<br />

9.3 Formal Syntax<br />

This section describes the formal abstract syntax <strong>of</strong> POOSL. It is based on the language<br />

<strong>of</strong> data objects <strong>of</strong> the previous chapter. We assume that the following sets <strong>of</strong> syntactic<br />

elements are given:<br />

CName p process class names C p ¥¡ ¡ ¡<br />

CName c cluster class names C c ¥¡ ¡ ¡<br />

Chan communication channels ch¥¡ ¡ ¡<br />

EPar expression parameters P¥¡ ¡ ¡

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

Saved successfully!

Ooh no, something went wrong!