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.

122 Concepts for the Integration <strong>of</strong> <strong>Specification</strong> and Design<br />

to respect and show its structure. By allowing architecture representation, structural<br />

aspects <strong>of</strong> a conceptual solution can be visualised, and communicated in the project<br />

team. In practice we always saw a design project starting with discussions around block<br />

schemes. Notice that this is a completely different approach than most object-oriented<br />

methods recommend. They recommend starting with finding objects, by considering all<br />

nouns in the Initial Requirements Description as possible classes <strong>of</strong> objects. Blocks in a<br />

block scheme do not necessarily become objects. We recommend to study and compare<br />

alternative conceptual solutions before starting the creation <strong>of</strong> Object Class Models and<br />

Object Instance Models.<br />

5.3.2 Awareness<br />

Does this mean that we prefer to introduce a lot <strong>of</strong> ’implementation thinking’ into the<br />

specification process? This would imply a big danger. From our own experience we<br />

know how important, but also how difficult, it is to educate people to stop this way<br />

<strong>of</strong> thinking. Of course a specification must pay a lot <strong>of</strong> attention to ’what’ must be<br />

designed and not ’how’ it must be realised in lower level implementation technology.<br />

Like most methods we also do endorse separation <strong>of</strong> essence and implementation.<br />

However we disapprove the sequential approach <strong>of</strong> deriving an essential model before<br />

an implementation model.<br />

The mental transformation necessary to prevent designers from rushing into implementation<br />

has led to a confusion about implementation dependence. The need <strong>of</strong><br />

implementation independence in a specification is overemphasised. Every piece <strong>of</strong> a<br />

model created, leads to structure which guides to implementation constraints. So there<br />

is no such thing as implementation independence. Any problem that is big enough<br />

requires structuring beforehand to make it manageable. And whether we like it or not,<br />

this structuring will influence the implementation till the end.<br />

A keyword in our approach is awareness. We recommend to work simultaneously in<br />

an appropriate collection <strong>of</strong> views on the system to be designed. When working on<br />

the behaviour view <strong>of</strong> the model one must be aware <strong>of</strong> the fact that the focus is on<br />

what the system must do. This requires an attitude <strong>of</strong> abstraction, generalisation, and<br />

implementation independence.<br />

Working on an architecture model requires the awareness that it should survive as<br />

long as possible. This requires an attitude <strong>of</strong> observing the real world, looking for<br />

natural structure in a conceptual solution. Awareness can lead to separation <strong>of</strong> concerns.<br />

Appropriate activities can be performed in the appropriate view, without bothering<br />

about all kinds <strong>of</strong> details in other views. This means that one is aware <strong>of</strong> a local<br />

task. Of course there must also be moments <strong>of</strong> reflection about the entwining <strong>of</strong> the<br />

views. The behaviour model must be influenced by relevant parts <strong>of</strong> all views, and<br />

unify all relevant constraints into a POOSL description. For the architecture view this<br />

is performed by laying down clusters and processes that correspond to the modules<br />

in the architecture view. Besides the behaviour view and the architecture views there<br />

usually are test views, maintenance views, safety views, etcetera (see also 5.7 about

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

Saved successfully!

Ooh no, something went wrong!