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



Relation among Elements

Has Influence Over

Module Decomposition

Modules (implementation units)

Is a submodule of; shares a secret with

Ease of change



Requires the correct presence of

Ability to field subsets and develop incrementally


Processes; thread of procedures

Synchronizes with; shares CPU with; excludes

Schedulability; achieving performance goals through parallelism

    Part Two: Creating an Architecture
    Part Four: Moving From One System to Many