xvi
architecture's critical role
in
software engineering, yet the text does
not
attempt to be
a general software engineering reference.
There
are, for example, many important parts
of software engineering
not
treated
at
all, such
as
source~code
testing strategies, general
project management, and development environments.
THE SCOPE
Of
THE
BOOI{
This book
is
characterized by breadth. Rather
than
focus
on
one method, notation, tool,
or process, the book attempts to widely survey software development from
an
architectural
perspective, putting many
of
these elements
in
context, comparing
and
contrasting
them
withoneanother. A readershould expectto gaina broadappreciationfor
the
role ofsoftware
architecture across
the
wide variety
of
activities
that
characterize
the
development oflarge,
software~intensive
systems.
Our
assumption
is
that
readers seekfundamental insights and knowledge tosupplement
their own experience,
ratherthan
canned
solutions to specific problems (those, if they do
exist,
can
most likely be found else\vhere).
The
text
therefore focuses.
on
overarching
principles, general strategies,
and
broadly applicable techniques.
It
illustrates
them
with
manyspecific examples from various domains.
The
text
does
not
advocate a single approach
and it
is
not
a manual or advertisement for
one-even
the authors' own.
Audiences
The
book attempts
to
address
the
needs ofseveral audiences.
The
instructor
audience
is
supported
by
a detailed
treatment
of a broad spectrum
of
software
architecture~related
topics, from which
diff~rent
subsets
can
be selected for use
in courses with specific foci.
An
instructor will be able
to
tailor
the
materia] provided
in
the
book
to
both
the
length and
the
objective
of
a course. To date,
the
authors have
used this text in
five
quarter~long
(ten~week)
courses and two
semester~long
(fifteen~week)
courses,
at
both
the undergraduate and graduate levels.
The
courses have focused
on
soft~
ware engineering, software architecture, software design, software interoperability, and
distributed systems. Both
semester~
long courses have used the entire text, while the
quarter~
long courses have relied
on
different selections
of
the
chapters.
The
instructor using
the
text will be able to rely
on
a corhprehensive set oflecture slides, solutiuns to
end~of~chapter
exercises, sample exams with solutions, ahd a tool suite
that
will be described below.
The
student audience
is
supported with a presentation
that
is
comprehensive, making
relatively
few
assumptions about background knowledge and experience. We do assume
that
the student
is
generally familiar
with
the
most basic elements
of
software engineering
and programming.
The
order
of
the
text
and the way the material
is
presented makes
the
student the primary audience of
the
book-the
other
audiences will pick
and
choose
material from various parts
of
the text.
The
professional
audience
is
supported with, for example, comprehensive treatment
of
the
major modelingtechniques, architectural description standards,
and
the way they are
directly tied
to
the
implementation
of
software products.
Our
perspective
is
not
confined to
some presumed ivory tower:
The
standards
and
notations include commercial, government,
and
research products.
The
text
also attempts to provide, in the majority
of
chapters, specific
guidance
on
how to achieve various goals, such
as
how to design
to
achieve specific system
properties. References
and
examples draw from a wide range
of
industrial experience.