The architecture of a software system is defined as its static structure, regarding packages, modules, and classes and the relationships among them. In the software development process, the architecture is the output of the design phase (Programming in the large), and is the specification for the implementation (Programming in the small).
The best way to specify the architecture of software system is to use a graphical notation which shows the relations between the numerous units of the system. There are various standardized notations, such as OMT (Object Modeling Technique ) after Rumbaugh [RBP+91], the Booch Method [Boo94], and the Jacobson method [Jac95], which have recently merged into UML (Universal Modeling Language ) [Sof97].
When examining the applicability of these modeling languages to analysis and design of the spectral envelope library and the VIEWENV program, several shortcomings are apparent:
For these reasons, I decided to use an adapted notation which is very close to the standard notations mentioned above. It has two types of classes (data classes and functional module classes), two relations between classes of the same type (the inheritance relation and the ``uses'' relation), and data flows between functional modules which are typed by a data class.
Figure 7.4 shows the inheritance relation between functional classes and a data flow (always via an intermediate data class which specifies the type of the data flow). Figure 7.5 shows the inheritance relation between data classes and data flow which is transformed by a functional class. Figure 7.6, finally, demonstrates the usage relationship which expresses either a reference being held by the using class or an aggregation, i.e. the using class actually contains an object of the used class.8.1
Note that the data flows in the diagrams are on class level, not on object level. That is, e.g. the diagram in figure 7.11, page , does not say that there are three Sound Data objects (Partials, Spectrum, Signal) that are eventually combined into one Sampled Spectral Env object, but it does simply show the possible data flows between the classes.