Beruflich Dokumente
Kultur Dokumente
Part One:
Envisioning Architecture
2nd Ed.
Len Bass, Paul Clements, Rick Kazman
Ch 1: The Architecture Business Cycle
Quick Exercise :
What is the relationship of a systems software
architecture to the environment in which the system
will be constructed and exist?
Architecture Business Cycle (ABC)
Answer:
Software architecture is a result of technical, business,
and social influences.
In turn, it affects each of these environments.
Where do Architectures Come From?
How do you
Design one?
Build one?
Modify one?
Architectural Activities
Creating the Business Case for the System
Understanding the Requirements
Creating or Selecting the Architecture
Communicating the Architecture
Analyzing or Evaluating the Architecture
Implementing Based on the Architecture
Ensuring Conformance to an Architecture
What makes a Good Architecture?
No such thing as an inherently good or bad
architecture.
Architectures are more or less fit for some stated
purpose.
Architectures can be evaluated - one of the great
benefits of paying attention to them - but only in
the context of specific goals.
Rules of Thumb: process & product (structural)
recommendations
Rules of Thumb (pp 15 & 16)
Process Recommendations:
include functional requirements and a prioritized list of quality
attributes the system must satisfy
analyze & formally evaluate before it is too late to change
Product Recommendations:
well-defined modules using principles of information hiding &
separation of concerns
separate modules that produce data from those that consume data to
increase modifiability & staged upgrades
write tasks or processes to allow easy reallocation, perhaps at
runtime
Ch 2: What is Software Architecture?
Control
Process
(CP)
Figure 2.1
Whats Missing?
What is the nature of the elements?
What are the responsibilities of the elements?
What is the significance of the connections?
What is the significance of the layout?
Reference Model
Reference Software
Architecture Architecture
Architectural
Pattern
Figure 2.2
Architectural Patterns
The architecture:
defines constraints on implementation
dictates organizational structure
inhibits or enables a systems quality attributes
some details on next slide, more on p. 30
studying it can predict system qualities
easier to reason about and manage change
helps in evolutionary prototyping
enables more accurate cost & schedule estimates
Quality Attributes
High performance Manage the time-based behavior
of elements; the frequency &
volume of inter-element
communication
Scalability Carefully localize the use of
resources to facilitate the
introduction of high-capacity
replacements
Deliver incremental subsets Carefully manage inter-
component usage
Re-usable elements Restrict inter-element couplings
so an extraction doesnt have too
many environment attachments
to be useful
Architecture: a Transferable, Reusable Model
Module structures
units of implementation with assigned areas of
functionality - usually static
Component-and-connector structures
runtime components (principal units of computation)
and connectors (communication vehicles)
Allocation structures
show relationships between software elements &
external environments (creation or execution)
Three Types of Structures
Correspond to the three broad types of decisions
that architectural design involves:
How is the system to be structured as a set of code units
(modules?)
How is the system to be structured as a set of elements
that have runtime behavior (components) and
interactions (connectors)?
How is the system to relate to non-software structures in
its environment (i.e., CPUs, file systems, networks,
development teams, etc. - allocation)?
Figure 2-3
Non-functional Properties
Each structure provides a method for reasoning
about some of the relevant quality attributes, for
example:
the uses structure, must be engineered to build a system
that can be easily extended or contracted
the process structure is engineered to eliminate
deadlock and reduce bottlenecks
the module decomposition structure is engineered to
produce modifiable systems, etc.
Value of Structures
Each structure provides the architect with a
different view into the system & a different
leverage point for design.
Table 2.1 on page 39-40 should be useful in your
class project...
Relating Structures to Each Other
Information hiding:
Also foundation to OO design,
Except information hiding modules are derived
by identifying expected changes over the
systems lifecycle
A module may have submodules
Specific goals