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.

92 Abstraction <strong>of</strong> a Problem Domain<br />

Subordinate Temporal Visibility<br />

An object can send a message to an acquaintance without being an acquaintance <strong>of</strong><br />

that object. In other words the receiver does not necessarily know the identifier <strong>of</strong> the<br />

sender. The receiver is visible for the sender but not vice versa. If a reply is required<br />

the sender has to report its identifier to the receiver. Process objects can include their<br />

identifier in the message when a reply is expected. When the receiver stores and uses<br />

this information only temporarily, the sender has a subordinate temporal visibility for the<br />

receiver. Data objects have a hidden mechanism that performs this automatically for<br />

their inter-communication. The receiver cannot take initiative for the communication.<br />

A receiver must give a reply on reception <strong>of</strong> a request and is therefore subordinate to<br />

the sender. We will use the term ’subordinate temporal visibility’ in full, when we refer<br />

to the concept described here. The single term ’visibility’ will always refer to stronger<br />

forms <strong>of</strong> visibility that imply longer term temporal or static visibility.<br />

Inward Visibility<br />

A cluster is inward transparent if inside process objects can be used as direct communication<br />

partners by process objects outside. Process objects with known identifiers are<br />

visible from the outside. A clustered aggregate limits the inward visibility to the aggregate<br />

object. Communication with parts can only be done via the aggregate object and not<br />

directly. The cluster <strong>of</strong>fers a message interface that represents that part <strong>of</strong> the message<br />

interface <strong>of</strong> the aggregate object that is visible from outside. Although an identifier <strong>of</strong> a<br />

part object can be passed via the aggregate object this does not lead to visibility <strong>of</strong> that<br />

part. After all, visibility requires that direct communication is possible.<br />

Outward Visibility<br />

A cluster is outward transparent if its internal process objects can directly communicate<br />

with process objects outside it. If a composite in a cluster is an aggregate, its parts are<br />

not allowed to communicate with entities outside the cluster. The entities outside the<br />

cluster are thus invisible to the part objects.<br />

4.8.4 Independence<br />

Civello [Civ93] elaborates on visibility by defining the concepts <strong>of</strong> whole independence,<br />

<strong>of</strong> peer independence and <strong>of</strong> separate part based on visibility. For example: ’a whole<br />

independent part has no visibility to its whole’ [Civ93]. Relating visibility to independence<br />

is not appropriate for our purposes. In our point <strong>of</strong> view dependence on parts from<br />

wholes is determined by ’who needs who’. Complex tasks are performed by composites.<br />

A request to a composite is always received by some object in the composite. In general,<br />

this object will delegate at least a part <strong>of</strong> the task to be performed to other objects in the<br />

composite. So there is a (mutual) dependency for performing the tasks <strong>of</strong> the composite.<br />

An entity is dependent <strong>of</strong> another entity when it needs the services <strong>of</strong> this latter entity to<br />

be able to perform its own tasks. Dependency reveals itself by the need to send a request<br />

for a service (a delegated task). Such a request may be simply a command.

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

Saved successfully!

Ooh no, something went wrong!