Chapter 5: Platform-Independent Design
This chapter describes techniques for the refinement of analysis models towards platform-independent designs, by model transformation. It also describes platform-independent design structuring techniques such as design patterns and module specifications.
5.1 The Design Process
Design is concerned with constructing components and organising their interactions in order to achieve the system requirements. This involves:
-
Identifying subsystems and modules which have a coherent and well-defined purpose and functional cohesion.
-
Identifying the dependencies between modules, and specifying their interfaces and responsibilities (eg, in terms of a set of constraints that they are responsible for).
In a completed design each requirement use case and constraint must be carried out/maintained by some class/module, or by a combination of classes and modules. For example, in the Scrabble system, the 'make move' use case discussed in Section 2.2 will be primarily implemented in the PlayerGUI module, which manages all the GUI interaction for constructing a move. The validation and score calculation of the move will be the responsibility of the Move module.
Some constraints will be satisfied by the design of an individual module or class, for example the postconditions
post : | squareLetter | = | {} | => | result | = | false |
post : | squareLetter | / = | {} | => | result | = | true |
on operation isOccupied() : Boolean of Square can be directly implemented as conditional statements in pseudocode in the definition of this operation.
Other constraints, such as the property C5 that all occupied squares on the board must be reachable from...