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.

6.6 Dynamic Behaviour 203<br />

processes in s<strong>of</strong>tware are in general mutually asynchronous.<br />

Currently accepted object-oriented methods [CY91a, CY91b, J 92, Boo91, SM88] model<br />

dynamic behaviour with the use <strong>of</strong> conventional state machine models that are similar<br />

to the older structured analysis and structured design techniques [WM85, HP88].<br />

OMT [R 91] is explicitly based on Statecharts [Har87]. However, the designers <strong>of</strong><br />

OMT seem to have neglected the incompatibility <strong>of</strong> object-orientation and Statecharts.<br />

In OMT dynamic behaviour is modelled by assigning a state diagram to each object<br />

class. Although this seems to <strong>of</strong>fer modularity and encapsulation, it permits objects to<br />

communicate by direct monitoring <strong>of</strong> each other states, thereby violating encapsulation.<br />

That this monitoring is allowed is confirmed by the following citation [R 91]: ’Guarded<br />

transitions for one object can depend on another object that is in a given state.’ OMT does<br />

not <strong>of</strong>fer any decent primitive for inter-machine communication [HC91] and hence the<br />

support for concurrency is doubtful.<br />

Alternative approaches<br />

After having observed the above problems we set the goal to find a way <strong>of</strong> dynamic<br />

modelling that blends with object-orientation. There are various interesting approaches<br />

for the modelling <strong>of</strong> dynamic behaviour. The methods we studied are LOTOS [Tur93,<br />

Pir92, Mor94], SDL [Tur93, BH93], Estelle [Tur93, D<br />

89] and ROOM [SGW94]. We only<br />

mention some aspects briefly, since most aspects have been described already at other<br />

places in this thesis.<br />

The above methods use autonomous, independent, encapsulated concurrent entities<br />

that are connected in a static topology <strong>of</strong> channels. They communicate using welldefined<br />

interaction primitives. Communication in SDL, Estelle and ROOM is buffered<br />

asynchronously. A sender can always send a message without knowing the readiness <strong>of</strong><br />

the receiver. Messages are either buffered or discarded. Buffered asynchronous message<br />

passing is certainly a valid alternative for synchronous message passing. Recall however<br />

that asynchronous message passing can be expressed with a synchronous primitive.<br />

Expressing synchronous communication with an asynchronous primitive is a lot more<br />

complex.<br />

Comparison with our approach<br />

Our process objects use synchronous message passing for the specification <strong>of</strong> reactive<br />

hardware/s<strong>of</strong>tware systems, because <strong>of</strong> the efficient abstract modelling power. The<br />

dynamic interaction but especially the synchronisation <strong>of</strong> the independent system components<br />

is modelled very elegantly with synchronous message passing. Synchronous<br />

interaction is also <strong>of</strong>fered in LOTOS by a basic primitive for undirected (multi-way)<br />

action synchronisation. This primitive can be used to express directed message passing<br />

[Mor94], but in a less natural way.<br />

The behaviour <strong>of</strong> our process objects can be aborted or interrupted. The LOTOS language<br />

supports an abort, but not an interrupt construct. ROOM supports both aborts and<br />

interrupts. SDL and Estelle do not have interrupt facilities. The grain <strong>of</strong> concurrency in

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

Saved successfully!

Ooh no, something went wrong!