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.