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.6 Aggregates 85<br />

An old philosophical question is, whether a whole is more than its parts. Is there a<br />

need for an aggregate object, when parts can be composed into an aggregate. When their<br />

joining is the whole, there is no need for a separate additional object. This intuitive<br />

reasoning may seem to hold, when a system is integrated by composing its parts to a<br />

whole. However a model <strong>of</strong> an aggregate shows an aggregate object that seems to add<br />

something to the parts. This can be understood by observing that the parts are only<br />

models. They are abstractions. The properties modelled in its class are defined such<br />

that the objects are generic reusable entities. Instances <strong>of</strong> such a class may be parts <strong>of</strong><br />

completely different composites, or may be completely independent entities. Possible<br />

properties <strong>of</strong> a whole are not distributed to parts. Therefore the joined parts cannot be an<br />

adequate abstraction <strong>of</strong> an aggregate. An aggregate object is an abstraction <strong>of</strong> a whole.<br />

Specific properties that characterise solely the whole are modelled in the aggregate object<br />

class. The properties that are encapsulated in the parts do not have to be modelled in<br />

the aggregate object’s class again.<br />

A concrete disagreement on aggregates appears in statements about properties. Rumbaugh<br />

et al. state that ’The most significant property <strong>of</strong> aggregation is transitivity, that is if<br />

A is part <strong>of</strong> B and B is part <strong>of</strong> C, then A is part <strong>of</strong> C. Aggregation is also antisymmetric, that<br />

is, if A is part <strong>of</strong> B, then B is not part <strong>of</strong> A’ [R<br />

91]. Others state that aggregations are not<br />

transitive [Mor94]. Aggregations are not transitive when the semantics <strong>of</strong> the aggregation<br />

relations differ over the hierarchical levels. Various combinations <strong>of</strong> properties, that<br />

aggregates can have, show that there are different sorts <strong>of</strong> whole-part relations.<br />

Coad and Yourdon distinguish three sorts <strong>of</strong> aggregation [CY91a]:<br />

Assembly-Parts (example: An aircraft is an assembly with four engines).<br />

Container-Contents (example: An aircraft contains a pilot, the pilot is not a part <strong>of</strong> the<br />

aircraft).<br />

Collection-Members (and their different varieties). (Example: A flight plan is an ordered<br />

collection <strong>of</strong> flight segments.)<br />

Moreira [MC93] distinguishes two main sorts <strong>of</strong> aggregation:<br />

Non-shared aggregation (object components are not shared by aggregate objects).<br />

Shared aggregation (object components are shared by aggregate objects)<br />

Besides that she allows aggregates to have a static or dynamic number <strong>of</strong> components.<br />

Rumbaugh et al. [R<br />

<strong>of</strong> view:<br />

91] mention sorts <strong>of</strong> aggregation from a completely different point<br />

Fixed aggregate (a fixed structure; number and type <strong>of</strong> parts are predefined).<br />

Variable aggregate (finite number <strong>of</strong> levels, but the number <strong>of</strong> parts may vary).

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

Saved successfully!

Ooh no, something went wrong!