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.

4.4 Data Objects and Process Objects 77<br />

4.4.5 Travelling Objects<br />

A complex system is modelled as statically interconnected communicating processes.<br />

During the lifetime <strong>of</strong> a system its static channel interconnect structure does not change.<br />

Communication requires that some data can move or flow from one process object to<br />

another. Very <strong>of</strong>ten, data must be transformed in a process and must then be passed to a<br />

next process for further transformation. We use data objects to model such data. A data<br />

object that is applied this way is called a travelling object. The idea <strong>of</strong> travelling objects is<br />

introduced by Verschueren [Ver92]. (He proposes passive and active travelling objects.<br />

We exclusively support passive travelling objects. For details we refer to [Ver92]).<br />

Intuitively a travelling object between processes must be an identity that disappears at<br />

its point <strong>of</strong> departure, travels via a channel, and appears at its destination. However<br />

the choices we made in the semantics <strong>of</strong> data objects and process objects prevents that<br />

the semantics <strong>of</strong> this travelling does not match precisely with the intuitive meaning<br />

<strong>of</strong> travelling. In fact travelling is ’simulated’ by ’sending’ a copy instead <strong>of</strong> the real<br />

data object. For this reason a more precise name would be travelling clones, instead <strong>of</strong><br />

travelling objects. They are copies (clones). There is no real travelling. The original <strong>of</strong><br />

the copy may even persist in the sender. It is a matter <strong>of</strong> specification (a design decision)<br />

whether the original at the sender side is removed or kept. By leaving this open a sender<br />

can keep the data without further special operations. Note, that the data objects that are<br />

sent are new identities.<br />

Data to be sent may have a complex structure. Complex data structures are modelled<br />

as a composite <strong>of</strong> data objects, linked by references. The precise semantics <strong>of</strong> the copy<br />

action are that a deep copy (see Paragraph 4.4.2.6) <strong>of</strong> the data object to be sent is created<br />

at the receiver side. By making a deep copy, complex data structures can be transported<br />

by simply specifying the sending <strong>of</strong> the object that holds the references to the rest <strong>of</strong> the<br />

structure.<br />

The background for this artificial way <strong>of</strong> ’travelling’ is that data objects should not be<br />

passed by simply passing references. If a process can receive a reference to a data object<br />

contained in another process object, the former process can communicate with this data<br />

object directly. In this way we would allow processes to exchange information without<br />

the use <strong>of</strong> their channels.<br />

4.4.6 Separation <strong>of</strong> Data and Processes in other Methods<br />

The design decision to distinguish data objects from process objects <strong>of</strong>fers a very specific<br />

expressive power. In Subsection 9.7.3 we explain how this decision strongly influences<br />

the semantics POOSL, which is divided into two layers <strong>of</strong> semantics. There are many<br />

other aspects. A short comparison with other methods shows that we had to decide<br />

between many alternative approaches.<br />

Most object-oriented specification methods [R 91, C 94, CY91a, CY91b, J 92, SM88,<br />

Boo91, BW95, Rob92] do not distinguish data objects from process objects, as we do.

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

Saved successfully!

Ooh no, something went wrong!