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.

182 Modelling <strong>of</strong> Concurrent <strong>Reactive</strong> Behaviour<br />

defined identifiers in contrast to data object identifiers that are not user defined names<br />

(see Paragraph 6.3.9.3).<br />

A dynamic link exists when the object that plays the role <strong>of</strong> receiver is an acquaintance<br />

<strong>of</strong> the object that plays the role <strong>of</strong> sender. The relation enables the possibility to use<br />

the identifier as destination specification. Having an acquaintance does not prescribe<br />

to use the identifier <strong>of</strong> the acquaintance for all communication with this acquaintance.<br />

A dynamic link does also not prescribe a dynamic usage <strong>of</strong> the link. If the identifier is<br />

never passed to another object the property <strong>of</strong> being dynamic is not exploited. Notice<br />

that a receiver can also have (or obtain) the name <strong>of</strong> the sender. This means that there is<br />

another dynamic link in the opposite direction.<br />

In Section 4.8 about properties <strong>of</strong> composites we defined visibility and dependency.<br />

These concepts are related to the concept <strong>of</strong> dynamic link. A dynamic link is a sufficient<br />

condition for visibility. An object that is dependent on another object must have a link to<br />

it. This link can be static or dynamic. Having a link does not imply dependency. After<br />

all, having a link does not specify the need for a service.<br />

6.3.9.3 Dynamic Links with Data Objects<br />

Data objects cannot have a static link, because they neither have channels nor can they<br />

execute message-send and message-receive statements. In the previous paragraph we<br />

discussed dynamic links between process objects. These links are based on identifiers<br />

that are user defined. In contrast, data objects have dynamic links that are created<br />

automatically when data objects are created.<br />

Data objects are instantiated from a class, by the execution <strong>of</strong> a new statement by another<br />

object. This other object can be either a process object or a data object. After creation this<br />

other object has a dynamic link to the new data object. This link is created by using an<br />

automatically generated identifier that must be stored in a variable. This variable holds<br />

a reference to the newly created object. This makes the changing <strong>of</strong> communication<br />

links with data objects very flexible. After all, references can be passed as easy as values<br />

between variables.<br />

A process object has usually a collection <strong>of</strong> data objects and hides those objects in its<br />

abstraction boundary. Data objects cannot be shared among process objects. There<br />

cannot be a dynamic link between two data objects in different process objects. If<br />

different processes must perform subsequent operations on a data object, this data<br />

object must be passed. This is why data objects are also called travelling objects (see<br />

Subsection 4.4.5). The transport <strong>of</strong> a data object is simulated by the creation <strong>of</strong> a deep<br />

copy. So instead <strong>of</strong> passing a reference to a data object from the sending process to the<br />

receiving process, a new reference to a new (deep) copy <strong>of</strong> the data object is created at<br />

the receiver side.

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

Saved successfully!

Ooh no, something went wrong!