Architectural specifications impose structure on implementations, whereas specification-building operations only structure the text of specifications.
As explained in the previous chapters, the specification of a complex system may be fairly large and should be structured into coherent, easy to grasp, pieces. Casl provides a number of specification-building operations to achieve this, as detailed in Chap. 6. Moreover, generic specifications, described in Chap. 7, provide pieces of specification that are easy to reuse in different contexts, where they can be adapted as desired by instantiating them.
Specification-building operations and generic specifications are useful to structure the text of the specification of the system under consideration. However, the models of a structured specification have no more structure than do those of a flat, unstructured, specification. Indeed, most examples given in the previous chapters could have been structured differently, with the same meaning (i.e., with the same models). Structured specifications are usually adequate at the requirements stage, where the focus is on the expected overall properties of the system under consideration.
In contrast, the aim of architectural specifications is to prescribe the intended architecture of the implementation of the system. Architectural specifications provide the means for specifying the various components from which the system will be built, and describing how these components are to be assembled to provide an implementation of the system of interest. At the same time, they allow the task of implementing a system to be split into independent, clearly-specified sub-tasks. Thus, architectural specifications are essential at the design stage, where the focus is on how to factor the implementation of the system into components.
The aim of this chapter is to discuss and illustrate both the role of architectural specifications and how to express them in Casl.