Software Architecture

13.4.4 Software Architecture

WebRef

Software architecture alludes to “the overall structure of the software and the ways in The STARS Software

which that structure provides conceptual integrity for a system” [SHA95a]. In its sim- Architecture Technology

Guide provides in-depth plest form, architecture is the hierarchical structure of program components (mod- information and resources

ules), the manner in which these components interact and the structure of data that at

are used by the components. In a broader sense, however, components can be gen-

www-ast.tds-gn. eralized to represent major system elements and their interactions. lmco.com/arch/ 3 guide.html

One goal of software design is to derive an architectural rendering of a system. This rendering serves as a framework from which more detailed design activities are conducted. A set of architectural patterns enable a software engineer to reuse design- level concepts.

Shaw and Garlan [SHA95a] describe a set of properties that should be specified as “A software

part of an architectural design: architecture is the

Structural properties. This aspect of the architectural design representation defines the

development work product that gives components of a system (e.g., modules, objects, filters) and the manner in which those com-

the highest return on

ponents are packaged and interact with one another. For example, objects are packaged to

investment with

encapsulate both data and the processing that manipulates the data and interact via the

respect to quality,

invocation of methods.

schedule and cost.”

Extra-functional properties. The architectural design description should address how

Len Bass et al.

the design architecture achieves requirements for performance, capacity, reliability, secu- rity, adaptability, and other system characteristics. Families of related systems. The architectural design should draw upon repeatable pat- terns that are commonly encountered in the design of families of similar systems. In essence, the design should have the ability to reuse architectural building blocks.

Given the specification of these properties, the architectural design can be repre- sented using one or more of a number of different models [GAR95]. Structural mod- els represent architecture as an organized collection of program components.

Five different types of Framework models increase the level of design abstraction by attempting to identify models are used to

repeatable architectural design frameworks (patterns) that are encountered in simi- represent the

lar types of applications. Dynamic models address the behavioral aspects of the pro- architectural design. gram architecture, indicating how the structure or system configuration may change

as a function of external events. Process models focus on the design of the business

3 For example, the architectural components of a client/server system are represented at a differ- ent level of abstraction. See Chapter 28 for details.

CHAPTER 13

DESIGN CONCEPTS AND PRINCIPLES

F I G U R E 13.3

for a call and return archi-

tectural style Depth

pq Fan-in

Width

or technical process that the system must accommodate. Finally, functional models can be used to represent the functional hierarchy of a system.

A number of different architectural description languages (ADLs) have been devel- oped to represent these models [SHA95b]. Although many different ADLs have been proposed, the majority provide mechanisms for describing system components and the manner in which they are connected to one another.