Design Structures for Object-Based Systems

Temporal logic has been used with great success since [Pnueli, 1977] as a formalism for supporting the specification of the behaviour of concurrent, reactive systems. However, it is not enough to have a convenient formalism in which to specify and verify the properties of systems. In order to make the specification effort manageable, we need ways of modularising it. That is, we need formal building blocks out of which complex systems may be built, formal mechanisms for interconnecting previously specified components, as well as disciplines for decomposing and organising specifications in terms of such building blocks and interconnection mechanisms. For instance, when specifying a producer-consumer-buffer system, we should be able to start from separate specifications of each of these components, possibly “reusing” existing specifications, and interconnect them in such a way that the whole system behaves as intended.