Chapter 3. A-7E Avionics System: A Case Study in Utilizing Architectural Structures
An object-oriented program's runtime structure often bears little resemblance to its code structure. The code structure is frozen at compile-time; it consists of classes in fixed inheritance relationships. A program's runtime structure consists of rapidly changing networks of communicating objects. In fact, the two structures are largely independent. Trying to [understand] one from the other is like trying to understand the dynamism of living ecosystems from the static taxonomy of plants and animals, and vice versa.
-E. Gamma, R. Helms, R. Johnson, and J. Vlissides [Gamma 95]
In Chapter 2, we stated that software architecture describes elements of a system and the relations among them. We also emphasized that every system has many kinds of elements and that different architectural structures are useful, even necessary, to present a complete picture of the architecture of a system. Each structure concentrates on one aspect of the architecture.
This chapter will present a case study of an architecture designed by engineering and specifying three specific architectural structures: module decomposition, uses, and process. We will see how these structures complement each other to provide a complete picture of how the system works, and we will see how certain qualities of the system are affected by each one. Table 3.1 summarizes the three structures we will discuss.
Table 3.1. The A-7E's Architecural Structures
Module Decomposition
|
Modules (implementation units)
|
Is a submodule of; shares a secret with
|
Ease of change
|
Uses
|
Procedures
|
Requires the correct presence of
|
Ability to field subsets and develop incrementally
|
Process
|
Processes; thread of procedures
|
Synchronizes with; shares CPU with; excludes
|
Schedulability; achieving performance goals through parallelism
|
|