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.

4.8 Properties <strong>of</strong> Composites 95<br />

In general, a data object is separable from a process object, because their lifetimes do not<br />

have to coincide completely. After all, a data object may ’live’ shorter than a process that<br />

encapsulates it. Process objects can never be inseparable from a data object, because the<br />

data object cannot be dependent <strong>of</strong> a process object. After all data objects cannot send a<br />

message to a process object. A data object can only send replies to process objects.<br />

Data objects can be separable from each other. Inseparability <strong>of</strong> for instance aggregates<br />

<strong>of</strong> data objects can be specified by the behaviour description <strong>of</strong> the whole object class.<br />

The creation or deletion <strong>of</strong> a whole should lead to a simultaneous respective creation or<br />

deletion <strong>of</strong> a part, so that their ’lifetimes’ coincide.<br />

Data objects that are passed between process objects, are not always separated from<br />

the sender. Recall that these travelling objects are passed by creation <strong>of</strong> a deep copy<br />

at the receiver side. The sender has the freedom to remove the original or not. In<br />

case <strong>of</strong> removal we dissimulate the separation <strong>of</strong> a data object and the travelling <strong>of</strong> this<br />

data object to another process. It is dissimulation because the travelling is achieved by<br />

copying the object to a new identity in another process. So travelling is not a separation<br />

and joining <strong>of</strong> the same identity over different process objects.<br />

Separability in relation to aggregates <strong>of</strong> process objects raises the question whether it is<br />

possible to add or remove parts. The channel structure <strong>of</strong> the aggregate in its environment<br />

is defined by the specification. This channel structure is statically determined at<br />

specification-time. So, it may seem as if parts connected with channels to a whole cannot<br />

be separated. However, not only channels determine the separability <strong>of</strong> a part. Channels<br />

may be shared, and the destination <strong>of</strong> a message may be determined by the identifier<br />

<strong>of</strong> a receiving object. Passing <strong>of</strong> identities <strong>of</strong> a process object between process objects<br />

creates a logical communication topology on top <strong>of</strong> the static channel structure. These<br />

dynamic links can be created or forgotten, thereby respectively linking or separating an<br />

object.<br />

4.8.7 Ownership<br />

An entity owns another entity if the former entity depends on the latter one and if this<br />

latter entity is not shared. The following statements are based on this definition.<br />

an entity does not necessarily have an owner;<br />

an entity can have at most one owner (at any point in time);<br />

an entity can change owner;<br />

a data object can be (but is not necessarily) owned by a process object;<br />

a data object can own another data object;<br />

a data object cannot own a process object;

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

Saved successfully!

Ooh no, something went wrong!