112 Chapter 5. Description of Software Architectures
5.1 THE VISUAL NOTATION
A description of software architecture must enable us to answer questions such as:
• What are the components in the architecture? What are the main features of a
component? In particular, is it a process, or a file, a database or just a variable
whose value is stored in the memory? What does a component do? How does it
behave? What other components does it rely on?
• What are the relationships between the components? Do they mean ‘send data
to’, ‘sends control to’, ‘calls’, ‘is a part of’, some combination of these, or
something else? What are the mechanisms used to fulfil these relations?
Although a number of software architecture description languages have been
proposed in the literature, to date, architectures have largely been represented by
box-and-line drawings in which the nature of the components, their properties, and
the semantics of the connections and the behaviour of the system are represented
by visual notations. Such visual notations improve the visibility of software design,
but the use of such notations suffers from informal definition of their semantics.
The notation used in this book is based on Software Architecture Visual
Notation, which comes from a recent book on software architecture by Bass,
Clements and Kazman [
1]. The visual notation not only supports the description of
software architecture, but also other aspects related to software architectural design
such as system architecture, reference models and development processes. In this
book, we only use the software architectural part of the visual language.
5.1.1 Active and passive elements
In the visual notation, architectural elements (i.e. components) are represented as
nodes and relationships (i.e. connectors) between the architectural elements are
represented as arrows between the nodes. Architectural elements of different
natures are depicted using different kinds of nodes in the visual notation. There are
three kinds of node:
• square corner rectangles: they represents hardware components;
• round corner rectangles: they represent software components that are not