next up previous contents index
Next: 8.3 General Considerations for Up: 8. Implementation Previous: 8.1 Some Words about

Subsections

   
8.2 The Architecture Notation

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].

Shortcomings of Existing Notations

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:

The Adapted Notation

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: Inheritance relation between functional module classes (left), and data flow between a reader and a writer functional module (right)
\begin{figure}\centerline{\epsfbox{pics/legend-classes.eps}} \end{figure}


  
Figure 7.5: Inheritance relation between data classes (left), and data flow through a functional module (right)
\begin{figure}\centerline{\epsfbox{pics/legend-data.eps}} \end{figure}


  
Figure 7.6: Usage relation for functional module classes (left), and data classes (right)
\begin{figure}\centerline{\epsfbox{pics/legend-uses.eps}} \end{figure}

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.


next up previous contents index
Next: 8.3 General Considerations for Up: 8. Implementation Previous: 8.1 Some Words about
Diemo Schwarz
1998-09-07