Basic Concepts
Software Architecture
Lecture 3
Copyright Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserv
Software Architecture
Foundations, Theory, and Practice
What is Software Architecture?
Definition:
A software systems architecture is the set
of principal design decisions about the
system
Software architecture is the blueprint for a
software systems construction and evolution
Design decisions encompass every facet of the
system under development
Structure
Behavior
Interaction
2
Non-functional properties
Software Architecture
Foundations, Theory, and Practice
What is Principal?
Principal implies a degree of importance that
grants a design decision architectural status
It implies that not all design decisions are
architectural
That is, they do not necessarily impact a
systems architecture
How one defines principal will depend on what
the stakeholders define as the system goals
Software Architecture
Foundations, Theory, and Practice
Other Definitions of Software
Architecture
Perry and Wolf
Software Architecture = { Elements, Form,
Rationale }
what
how
why
Shaw and Garlan
Software architecture [is a level of design that]
involves
the description of elements from which systems
are built,
interactions among those elements,
patterns that guide their composition, and
constraints on these patterns.
Kruchten
Software architecture deals with the design and
4
implementation of the high-level structure
of
software.
Software Architecture
Foundations, Theory, and Practice
Temporal Aspect
Design decisions are and unmade over a systems
lifetime
Architecture has a temporal aspect
At any given point in time the system has only
one architecture
A systems architecture will change over time
Software Architecture
Foundations, Theory, and Practice
Prescriptive vs. Descriptive
Architecture
A systems prescriptive architecture captures the
design decisions made prior to the systems
construction
It is the as-conceived or as-intended
architecture
A systems descriptive architecture describes how
the system has been built
It is the as-implemented or as-realized
architecture
6
Software Architecture
Foundations, Theory, and Practice
As-Designed vs. As-Implemented
Architecture
7
Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; 2008 John Wiley & Sons, Inc. Reprinted with permission.
Software Architecture
Foundations, Theory, and Practice
As-Designed vs. As-Implemented
Architecture
8
Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; 2008 John Wiley & Sons, Inc. Reprinted with permission.
Software Architecture
Foundations, Theory, and Practice
As-Designed vs. As-Implemented
Architecture
Which architecture is correct?
Are the two architectures consistent with
one another?
What criteria are used to establish the
consistency between the two architectures?
On what information is the answer to the
preceding questions based?
9
Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; 2008 John Wiley & Sons, Inc. Reprinted with permission.
Software Architecture
Foundations, Theory, and Practice
Architectural Evolution
When a system evolves, ideally its prescriptive
architecture is modified first
In practice, the system and thus its descriptive
architecture is often directly modified
This happens because of
Developer sloppiness
Perception of short deadlines which prevent
thinking through and documenting
Lack of documented prescriptive architecture
Need or desire for code optimizations
Inadequate techniques or tool support
10
Software Architecture
Foundations, Theory, and Practice
Architectural Degradation
Two related concepts
Architectural drift
Architectural erosion
Architectural drift is introduction of principal
design decisions into a systems descriptive
architecture that
are not included in, encompassed by, or
implied by the prescriptive architecture
but which do not violate any of the
prescriptive architectures design decisions
Architectural erosion is the introduction of
architectural design decisions into a systems
descriptive architecture that violate its
11
prescriptive architecture
Software Architecture
Foundations, Theory, and Practice
Architectural Recovery
If architectural degradation is allowed to occur,
one will be forced to recover the systems
architecture sooner or later
Architectural recovery is the process of
determining a software systems architecture
from its implementation-level artifacts
Implementation-level artifacts can be
Source code
Executable files
Java .class files
12
Software Architecture
Foundations, Theory, and Practice
Implementation-Level View of an
Application
13
Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; 2008 John Wiley & Sons, Inc. Reprinted with permission.
Software Architecture
Foundations, Theory, and Practice
Implementation-Level View of an
Application
Complex and virtually
incomprehensible!
14
Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; 2008 John Wiley & Sons, Inc. Reprinted with permission.
Software Architecture
Foundations, Theory, and Practice
Deployment
A software system cannot fulfill its purpose
until it is deployed
Executable modules are physically placed
on the hardware devices on which they are
supposed to run
The deployment view of an architecture can be
critical in assessing whether the system will be
able to satisfy its requirements
Possible assessment dimensions
Available memory
Power consumption
Required network bandwidth
15
Software Architecture
Foundations, Theory, and Practice
A Systems Deployment Architectural
Perspective
16
Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; 2008 John Wiley & Sons, Inc. Reprinted with permission.
Software Architecture
Foundations, Theory, and Practice
Software Architectures Elements
A software systems architecture typically is not
(and should not be) a uniform monolith
A software systems architecture should be a
composition and interplay of different elements
Processing
Data, also referred as information or state
Interaction
17
Software Architecture
Foundations, Theory, and Practice
Components
Elements that encapsulate processing and data in
a systems architecture are referred to as software
components
Definition
A software component is an architectural entity
that
encapsulates a subset of the systems
functionality and/or data
restricts access to that subset via an
explicitly defined interface
has explicitly defined dependencies on its
required execution context
Components typically provide application-specific
18
services
Software Architecture
Foundations, Theory, and Practice
Connectors
In complex systems interaction may become
more important and challenging than the
functionality of the individual components
Definition
A software connector is an architectural
building block tasked with effecting and
regulating interactions among components
In many software systems connectors are
usually simple procedure calls or shared data
accesses
Much more sophisticated and complex
connectors are possible!
Connectors typically provide application19
independent interaction facilities
Software Architecture
Foundations, Theory, and Practice
Examples of Connectors
Procedure call connectors
Shared memory connectors
Message passing connectors
Streaming connectors
Distribution connectors
Wrapper/adaptor connectors
20
Software Architecture
Foundations, Theory, and Practice
Configurations
Components and connectors are composed in a
specific way in a given systems architecture to
accomplish that systems objective
Definition
An architectural configuration, or topology, is a
set of specific associations between the
components and connectors of a software
systems architecture
21
Software Architecture
Foundations, Theory, and Practice
An Example Configuration
22
Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; 2008 John Wiley & Sons, Inc. Reprinted with permission.
Software Architecture
Foundations, Theory, and Practice
Architectural Styles
Certain design choices regularly result in solutions with
superior properties
Compared to other possible alternatives, solutions such
as this are more elegant, effective, efficient,
dependable, evolvable, scalable, and so on
Definition
An architectural style is a named collection of
architectural design decisions that
are applicable in a given development context
constrain architectural design decisions that are
specific to a particular system within that context
elicit beneficial qualities in each resulting system
23
Software Architecture
Foundations, Theory, and Practice
Architectural Patterns
Definition
An architectural pattern is a set of
architectural design decisions that are
applicable to a recurring design problem,
and parameterized to account for different
software development contexts in which
that problem appears
A widely used pattern in modern distributed
systems is the three-tiered system pattern
Science
Banking
E-commerce
Reservation systems
24
Software Architecture
Foundations, Theory, and Practice
Three-Tiered Pattern
Front Tier
Middle Tier
Contains the user interface functionality to
access the systems services
Contains the applications major functionality
Back Tier
Contains the applications data access and
storage functionality
25
Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; 2008 John Wiley & Sons, Inc. Reprinted with permission.
Software Architecture
Foundations, Theory, and Practice
Architectural Models, Views, and
Visualizations
Architecture Model
An artifact documenting some or all of the
architectural design decisions about a system
Architecture Visualization
A way of depicting some or all of the
architectural design decisions about a system
to a stakeholder
Architecture View
A subset of related architectural design
decisions
26
Software Architecture
Foundations, Theory, and Practice
Architectural Processes
Architectural design
Architecture modeling and visualization
Architecture-driven system analysis
Architecture-driven system implementation
Architecture-driven system deployment, runtime
redeployment, and mobility
Architecture-based design for non-functional
properties, including security and trust
architectural adaptation
27
Software Architecture
Foundations, Theory, and Practice
Stakeholders in a Systems
Architecture
Architects
Developers
Testers
Managers
Customers
Users
Vendors
28