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.

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

Independently to the conceptual domain classes, objects can be ’classified’ into sorts<br />

related to specific roles they play and specific properties they have. Objects may be<br />

dependent or independent (autonomous), they can take initiative or wait for requests.<br />

They may be statically or dynamically created, and ’live’ short or long. They may<br />

have a supervisor task or a servant task in the system. These latter properties have<br />

a more constructive style. Based on these properties objects and object classes can be<br />

classified as ’sorts’ that are useful to discuss the design <strong>of</strong> an object model. Functional,<br />

imperative, and active objects [Weg90] are the first three sorts discussed, and interpreted<br />

for our method:<br />

Functional objects are degenerate objects that do not have attributes. Their operations<br />

are therefore side-effect-free. Data objects as well as process objects may<br />

be built this way. Notice that this sort <strong>of</strong> object is relative primitive in the sense<br />

that they cannot have a state, which lets them react differently in different circumstances.<br />

Imperative objects have attributes shared by operations. An imperative object is<br />

activated on reception <strong>of</strong> a message, it is passive otherwise [Weg90]. Data objects<br />

are imperative objects. Process objects may be imperative objects. The internal<br />

behaviour description consists <strong>of</strong> ’imperative’ (commanding) statements.<br />

Active objects may already be active when receiving a message, so that incoming<br />

messages must synchronise with ongoing activities in the object. Process objects<br />

are in general <strong>of</strong> this sort.<br />

Although the above ’classification’ is useful the naming <strong>of</strong> the sorts is not precise enough.<br />

The property ’passive’ is not necessarily connected to imperative behaviour description<br />

in our point <strong>of</strong> view. Active objects may be described as imperative. The notion ’active’<br />

is also less precise because imperative objects will be active temporarily. Therefore we<br />

define passive and autonomous object sorts as alternative:<br />

Passive objects are passive unless activated by a message. (This definition causes<br />

functional objects to become a special sort <strong>of</strong> passive object). Data objects are<br />

always passive, process objects may be passive.<br />

Autonomous objects determine themselves in what order what messages will be<br />

accepted. This sort <strong>of</strong> object may actively or independently take initiative to<br />

communicate with other objects. Only process objects can be autonomous.<br />

In addition to these sorts we defined travelling objects and multiple objects:<br />

Travelling objects are data objects that can be deep copied or transferred from one<br />

process object to another. The receiving process object always gets a copy <strong>of</strong> this<br />

’travelling object’ with a new identity.<br />

Multiple objects. A multiple is a collection <strong>of</strong> process objects from one class, with<br />

all objects <strong>of</strong> the multiple connected to the same channels. Individual objects may<br />

have a different state.

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

Saved successfully!

Ooh no, something went wrong!