|
T
oday's
most widely accepted and discussed processes for software development are
Rational's Unified Process (RUP) and Extreme Programming (XP). What both
have in common is that they cover the whole process of software development
from the early vision of a system to its maintenance cycles.
The
methods and ideas presented in
Applied Software Architecture
are
different. Authors Christine Hofmeister, Robert Nord, and Dilip Soni concentrate
exclusively on the development of the software architecture, which is a
distinct design phase. They define it as "the bridge between the system
requirements and implementation. This design phase comes after the domain
analysis, requirement analysis, and risk analysis, and before detailed
design, coding, integration, and testing." All of these development phases
can overlap or reoccur cyclically in the above listed order when development
is incremental. The result of the software architecture development phase,
the authors contend, is "a structural plan that describes the elements
of the system, how they fit together, and how they work together to fulfill
the system's requirements."
In
describing this phase, the authors clash with the more established process
models because they define their own independent, alternative methods and
results. In one sense, this book completes the established process models
because it discusses the software architecture development phase in greater
detail than you'll find anywhere else.
Applied
Software Architecture
is based on a study of system architectures by
the authors at Siemens Corporate Research in Princeton, New Jersey. They
examined the development of large, complex software systems. As the authors
put it: "The purpose of the study was first to understand the architectural
issues facing designers, then to understand current practices, including
best practices. We were looking for commonalties across domains and for
underlying principles that lead to good and useful software architectures."
The
result of this study is an approach to find the correct software architecture
for a system by developing four loosely coupled views, in which each view
concentrates on a certain aspect of the system:
-
Code
view
describes the structure of the organization of the source code
into object code, libraries, versions, and build times
-
Module
view
shows the decomposition of the system into modules and the partitioning
of modules into layers (i.e., large-grain abstractions) and the interfaces
between them
-
Execution
view
describes the dynamic elements of the system and how they interact
in the flow of control and data
-
Conceptual
view
is the most high-level view; closely tied to the application domain,
it shows how the overall architecture maps to the vision of the system
Applied
Software Architecture
explains these views, the relationship between
them, and how to develop them (in 170-page detail), together with four
case studies (each about 40 to 50 pages):
-
Digital
I&C systems for nuclear power plants
-
Embedded
real-time patient monitoring system
-
Central
patient monitoring station
-
Product
line of computer-controlled digital switching systems
Although
these four systems had not been designed with the authors' suggested approach,
these case studies are used to demonstrate what would go into each view,
which engineering concerns would be addressed by each view, and how the
notations (based on UML) can be used to describe it.
As
you can probably see from this review, the model presented in
Applied
Software Architecture
is a highly formal approach best suited to the
development of large-scale systems. For this reason, the book might be
an interesting inspiration for people interested in the process of software
development for large systems, or how architecture of a large software
system can be designed and described.
Angelika
Langer
develops and teaches classes on Java, C++, multithreading, and
internationalization. She is an internationally recognized speaker and
served on the ANSI/ISO C++ Committee from 1993 to 1998.
Klaus Kreft
is a software architect and senior consultant with 15+ years of experience
in industrial software development. He currently works for Siemens Business
Services in Germany. Langer and Kreft are authors of "Standard C++ IOStreams
and Locales" (Addison-Wesley, 2000) and are columnists for the C/C++ Users
Journal.
|