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.

6.2 Concurrency and Synchronisation 151<br />

6.2.2.5 Efficiency<br />

There is a trend towards a growing number <strong>of</strong> features in systems. The improved<br />

performance <strong>of</strong> new generations <strong>of</strong> hardware is used up immediately due to advanced<br />

functionality <strong>of</strong> the s<strong>of</strong>tware. Concurrency is still required in many systems to satisfy<br />

timing requirements, in spite <strong>of</strong> the improved performance.<br />

In a synchronous system all modules must wait at each synchronisation point for the<br />

module with the most time consuming operation. This becomes more inefficient as<br />

the variations in computation time are bigger among the modules. In synchronous<br />

hardware systems we observe an extreme small grain <strong>of</strong> computation. All concurrent<br />

modules are optimised for having a delay path which is as short as possible.<br />

The grain <strong>of</strong> operations determines how synchronous concurrency works out for modelling<br />

s<strong>of</strong>tware or mixed hardware/s<strong>of</strong>tware. A model can be designed to have synchronisation<br />

points on the level <strong>of</strong> statements or collections <strong>of</strong> statements such as procedures.<br />

A particular statement can take very long to execute, for instance if it is recursive. A<br />

synchronous model is then not adequate because it forces all other statements that can<br />

be executed in other modules to be waiting.<br />

The efficiency <strong>of</strong> a system will become poor when all modules must synchronise (wait)<br />

all the time without having a real need for synchronisation. Often these modules are<br />

rather independent. They require synchronisation only when synchronous communication<br />

is required. In such a case synchronisation can be limited to the partners in a<br />

particular communication. Other modules must be allowed to continue their operations<br />

independently. Therefore the modules must be able to operate in an asynchronous<br />

concurrent way.<br />

6.2.2.6 Examples <strong>of</strong> Concurrency in Object-Oriented Analysis Methods<br />

Objects are promoted as a concept for modelling real world entities in most books<br />

about object-oriented analysis. Because entities in a real world usually coexist and<br />

behave concurrently most readers will intuitively think that an object is an entity with<br />

asynchronous concurrent behaviour. Many methods are not very explicit about the<br />

meaning <strong>of</strong> their objects concerning synchronisation and concurrency. Some methods<br />

are not intended for concurrent systems while others only <strong>of</strong>fer synchronous concurrency<br />

instead <strong>of</strong> asynchronous concurrency, or they <strong>of</strong>fer both forms.<br />

A relative new object-oriented method like Fusion [C 94] clearly states its application<br />

area. Fusion is intended to model sequential systems. However, ’although Fusion is a<br />

method for sequential systems, it can be applied to the development <strong>of</strong> concurrent systems because<br />

many applications exhibit very limited form <strong>of</strong> concurrency...’ [C 94]. Many other methods<br />

have the same essential restriction as Fusion, although they are less explicit about their<br />

(in)abilities to describe parallel systems.<br />

A well defined non-object-oriented analysis method that <strong>of</strong>fers synchronous concur-

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

Saved successfully!

Ooh no, something went wrong!