Professional Documents
Culture Documents
What is Architecture?
A high-level model of a thing
What is Software
Architecture?
A software systems blueprint
Its components
Their interactions
Their interconnections
Informal descriptions
From Requirements to
Architecture
From problem definition to requirements specification
Focus of Software
Architectures
Two primary foci
System Structure
Correspondence
between requirements
and implementation
A framework for
understanding systemlevel concerns
theStorag e
aWarehouse
UML-A Generated Association Class:aNavPoint Association (0.5)
(1.0)
aRoute
UM L-A Generated Dependency Class:aRouteCollection Association (0.5)
UML -A Genera ted De pend ency C lass :aRou teCol lectio n Ass ociatio n (0. 25)
theVehicleCollection
UML-A Generated Association Class:aW arehouse Association (1.0)
aVehicle
UML-A Generated Dependency Class:theRouter Dependency (1.0)
UM L-A Generated Dependency Class:theRouter Dependency (0.5)
aTruck
aShip
UM L-AUM
Generated
L-A Generated
Association
Association
Class:aDifficiency
Class:aDifficiency
Association
Association
(1.0) (1.0)
UM L-A
UM
Generated
L-A
Association
Association
Class:aDifficiency
Class:aDifficiency
Association
Association
(1.0)
(1.0)
UMGenerated
L-A
Generated
Association
Class:aDifficiency
Association
(1.0
U ML-A
U ML-A
Gen
UM
erated
Gen
L-A
erated
Asso
Generated
ciatio
Asso
nciatio
Association
Cla
ss:aD
n Cla
ss:aD
ifficie
Class:aDifficiency
ncy
ifficie
A ncy
ssoci
A atio
sso
UML-A
UM
Generated
L-A
Generated
Association
Association
Class:aDiffi
Class
t heRou ter
UM L-A Generated Association Class:aNavPoint Association (0.25)
UM L-A Generated Association Class:aNavPoint Association (0.25)
UM L-A Generated
Association
Class:aW arehouse
(0.5)
UM L-A Generated
Association
Class:aNavPoint
UMAssociation
L-A
Generated
Association
Class:aNavPoint
Association
(0.25) Association (0.25)
UM L-A Generated
Association
Class:aWAssociation
arehouse
(1.0)
UM L-A Generated Dependency Class:theWarehouseCollection Dependency (1.0)
availableVehicleCollection aRouteCollection
UML-A Generated Dependency Class:theRouter Association (1.0)
UM L-A Generated Dependency Class:theRouter Association (0.5)
UM L-A Generated Association Class:theW arehouseCollection Dependency (0.5)
UM L-A Generated
UML-ADependency
Generated Dependency
Class:theRouter
Class:theRouter
Association Association
(1.0)
(1.0)
theCarg oRouter
UML -A Genera ted As socia tion C lass: theWa rehou seCo llectio n De pende ncy ( 0.25)
UML-A Generated Association Class:aRoute Association (0.5)
theAWT
aLocation
UML-A Generated Association Class:theRouter Association (0.25)
UML-A
Generated
Association
Class:aRoute
Association
(0.25)
L-A
Generated
Association
Class:aRoute
Association
(0.25)
UM L-A Generated
Association
Class:aNavPoint
Association
(0.5)
UMUM
L-A
Generated
Association
Class:aRoute
Association
UM L-A Generated
Association
Class:aNavPoint
UML-A
Generated
Association
Association
(0.5) (0.25)
Class:aRoute Association (0.25)
aVehiceDialog
aWarehouseDialog
aPortDialog
aRouterDialog
aNavPoint
Generated
AssociationAssociation
Class:aW arehouse
UM L-A GeneratedUML-A
Association
Class:aNavPoint
(0.5) Association (0.5)
availableGoods
aPort
aSurp lus
aDifficiency
UM L-A Generated Association Class:aW arehouse Association (0.5)
UML-A Generated
UML-A
Association
Generated
Class:availableGoods
Association Class:aW
Association
arehouse(0.5)
Association (0.5)
theGoods
L-A Genera
ted AssociClass:aSu
ation C las
UM L-AUM
Generated
Association
aShip
aAirplane
aLocation
aVehicle
aNavPoint
theVehicleCollection
aRoute
theRouter
RegularStorage
aRouteCollection
theStorage
availableVehicleCollection
aWarehouse
theWarehouseCollection
RefrigeratedStorage
aSurplus
aDeficiency
theGoods
theCargoRouter
theTimeNeeded
aPort
theAWT
aRouterDialog
availableGoods
aPortDialog
aVehiceDialog
aPortCollection
aWarehouseDialog
We have to do better!
Architectural Abstraction
Cl ock :
Cl ock
8: request
Components
Connectors
Events
Cl ockConn
9: notification
Warehouse
10: notification
Del iveryPort
Vehicle
7: request
4: request
1: request
3: request
RouterConn
2: notification
CargoRouter
5: request
GraphicsConn
6: notification
GraphicsBinding :
GraphicsBinding
Definitions of Software
Architecture
Perry and Wolf
Kruchten
Control modelling
A model of the control relationships between the
different parts of the system is established
Modular decomposition
The identified sub-systems are decomposed into
modules
Components
A component is a unit of computation or a data store
Components are loci of computation and state
clients
servers
databases
filters
layers
ADTs
Connectors
A connector is an architectural element that models
interactions among components
rules that govern those interactions
Simple interactions
procedure calls
shared variable access
Configurations/Topologies
An architectural configuration or topology is a
connected graph of components and connectors
that describes architectural structure
proper connectivity
concurrent and distributed properties
adherence to design heuristics and style rules
C1
C
C2
C3
C4
C6
C5
C7
Scope of Software
Architectures
Every system has an architecture.
Details of the architecture are a reflection of system
requirements and trade-offs made to satisfy them
Possible decision factors
Performance
Compatibility with legacy software
Planning for reuse
Distribution profile
Current and Future
Example Architecture
Compiler
Sequential
Lexer
Parallel
Parser
Lexer
Semantor
Parser
Semantor
Internal
Representation
Optimizer
Optimizer
Code
Generator
Code
Generator
Design
translator
Code
generator
Project
repository
Design
analyser
Program
editor
Report
generator
Version management
system
Versionmanagement
Objectmanagement
Databasesystem
Operating
system
Object
identification
system
Arm
controller
Gripper
controller
Packaging
selection
system
Packing
system
Conveyor
controller
Client2
Client3
Client4
Widebandwidthnetwork
Catalogue
server
Video
server
Picture
server
Hypertext
server
Catalogue
Filmclip
files
Digitiz ed
photographs
Hypertext
web
Analogies to Software
Architecture
Hardware architecture
small number of design elements
scale by replication of (canonical) design elements
Network architecture
focus on topology
only a few topologies considered
e.g., star, ring, grid
Building architecture
multiple views
styles
Architectural models
Different architectural models may be
produced during the design process
Each model presents different perspectives on
the architecture
Static structural model that shows the major
system components
Dynamic process model that shows the process
structure of the system
Interface model that defines sub-system interfaces
Deployment model shows the relationship between
system elements and hosts
System structuring
Concerned with decomposing the system
into interacting sub-systems
The architectural design is normally
expressed as a block diagram presenting
an overview of the system structure
More specific models showing how subsystems share data, are distributed, and
interface with each other may also be
developed
Key points
The software architect is responsible
for deriving a structural system
model, a control model and a subsystem decomposition model
Large systems rarely conform to a
single architectural model
Key architectural concepts are
components, connectors, and
configurations
Component-Level Design
Introduction
The software component
Designing class-based components
Designing conventional components
Background
27
Defined
29
Object-oriented View
1)
2)
3)
4)
30
Conventional View
A component is viewed as a functional element (i.e., a
module) of a program that incorporates
The processing logic
The internal data structures that are required to implement the
processing logic
An interface that enables the component to be invoked and
data to be passed to it
31
Conventional View
(continued)
1)
2)
3)
Process-related View
33
Designing Class-Based
Components
Component-level Design
Principles
Open-closed principle
A module or component should be open for extension but closed for modification
The designer should specify the component in a way that allows it to be extended
without the need to make internal code or design modifications to the existing
parts of the component
Many client-specific interfaces are better than one general purpose interface
For a server class, specialized interfaces should be created to serve major
categories of clients
Only those operations that are relevant to a particular category of clients should
be specified in the interface
35
Component Packaging
Principles
Release reuse equivalency principle
The granularity of reuse is the granularity of release
Group the reusable classes into packages that can be managed,
upgraded, and controlled as newer versions are created
36
Component-Level Design
Guidelines
Components
37
Cohesion
Layer
Communicational
All operations that access the same data are defined within
one class
38
Cohesion (continued)
Procedural
Components or operations are grouped in a manner that allows one to
be invoked immediately after the preceding one was invoked, even
when no data passed between them
Temporal
Operations are grouped to perform a specific behavior or establish a
certain state such as program start-up or when an error is detected
Utility
Components, classes, or operations are grouped within the same
category because of similar general functions but are otherwise
unrelated to each other
39
Coupling
40
Coupling (continued)
The kinds of coupling can be ranked in order from lowest (best) to
highest (worst)
Data coupling
Operation A() passes one or more atomic data operands to operation B(); the
less the number of operands, the lower the level of coupling
Stamp coupling
A whole data structure or class instantiation is passed as a parameter to an
operation
Control coupling
Operation A() invokes operation B() and passes a control flag to B that directs
logical flow within B()
Consequently, a change in B() can require a change to be made to the meaning
of the control flag passed by A(), otherwise an error may result
Common coupling
A number of components all make use of a global variable, which can lead to
uncontrolled error propagation and unforeseen side effects
Content coupling
One component secretly modifies data that is stored internally in another
component
41
Coupling (continued)
External coupling
42
Conducting Component-Level
Design
1)
2)
3)
a)
b)
c)
d)
43
Conducting Component-Level
Design (continued)
4)
5)
6)
7)
44