dokumen.pub software-architecture-in-practice-4th-edition-9780136885979-18-22.pdf – requests and many others. We will spend a great deal of time in | Course Hero

requests, and many others. We will spend a great deal of time in this book

exploring the relationship between architecture and

quality attributes

like these.

Thus, the set of architectural structures is neither ±xed nor limited. What is

architectural depends on what is useful to reason about in your context for your

system.

Architecture Is an Abstraction

Since architecture consists of structures, and structures consist of elements

1

and

relations, it follows that an architecture comprises software elements and how

those elements relate to each other. This means that architecture speci±cally and

intentionally omits certain information about elements that is not useful for

reasoning about the system. Thus, an architecture is foremost an

abstraction

of a

system that selects certain details and suppresses others. In all modern systems,

elements interact with each other by means of interfaces that partition details

about an element into public and private parts. Architecture is concerned with the

public side of this division; private details of elements—details having to do solely

with internal implementation—are not architectural. This abstraction is essential

to taming the complexity of an architecture: We simply cannot, and do not want

to, deal with all of the complexity all of the time. We want—and need—the

understanding of a system’s architecture to be many orders of magnitude easier

than understanding every detail about that system. You can’t keep every detail of

a system of even modest size in your head; the point of architecture is to make it

so you don’t have to.

1

In this book we use the term “element” when we mean either a module or a component, and

don’t want to distinguish between the two.

Architecture versus Design

Architecture is design, but not all design is architecture. That is, many design

decisions are left unbound by the architecture—it is, after all, an abstraction—and

depend on the discretion and good judgment of downstream designers and even

implementers.

Every Software System Has a Software Architecture

Every system has an architecture, because every system has elements and

relations. However, it does not follow that the architecture is known to anyone.

Perhaps all of the people who designed the system are long gone, the

documentation has vanished (or was never produced), the source code has been

lost (or was never delivered), and all we have at hand is the executing binary code.