Software Architecture and Practice
Software Architecture and Practice
Software Architecture
in
Practice
Paul C. Clements
Software Engineering Institute
Carnegie MellonInstitute
Software Engineering University
Pittsburgh,
Carnegie MellonPA 15213-3890 USA
University
Pittsburgh, PA 15213-3890
Sponsored by the U.S. Department of Defense
©Sponsored
2002 bybyCarnegie Mellon
the U.S. Department University
of Defense
© 1999 by Carnegie Mellon University
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 2
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 3
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 4
Carnegie Mellon University
Software Engineering Institute
Stakeholders of a System
Development Maintenance
organization’s Marketing End user organization Customer
management stakeholder stakeholder stakeholder stakeholder
stakeholder
Architect
Ohhhhh...
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 5
Carnegie Mellon University
Software Engineering Institute
Development Organization
Concerns
Business issues
• investing in, and then amortizing the infrastructure
• keeping cost of installation low
• investing in, and then utilizing personnel
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 6
Carnegie Mellon University
Software Engineering Institute
Technical Environment
Current trends: today’s information system will likely
employ a
• database management system
• Web browser for delivery and distribution across
platforms
This was not true 10 years ago.
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 7
Carnegie Mellon University
Software Engineering Institute
Architect’s Background
Architects develop their mindset from their past
experiences.
• Prior good experiences will lead to replication of
prior designs.
• Prior bad experiences will be avoided in the new
design.
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 8
Carnegie Mellon University
Software Engineering Institute
Architect’s influences
Stakeholders
Requirements
Architect(s)
Development Architecture
organization
Technical
System
environment
Architect’s
experience
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 9
Carnegie Mellon University
Software Engineering Institute
Customer requirements
Architect’s experience
Technical environment
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 11
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 12
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 13
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 14
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 15
Carnegie Mellon University
Software Engineering Institute
Architect’s influences
Stakeholders
Requirements
Architect(s)
Development Architecture
organization
Technical
System
environment
Architect’s
experience
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 16
Carnegie Mellon University
Software Engineering Institute
ABC Summary
Architecture involves more than just technical
requirements for a system. It also involves non-technical
factors, such as the
• architect’s background
• development environment
• business goals of the sponsoring organization
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 17
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 18
Carnegie Mellon University
Software Engineering Institute
A diagram:
Control
process
(CP)
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 19
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 22
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 23
Carnegie Mellon University
Software Engineering Institute
Architectural Style -1
Architectural style: a description of component and
connector types and a pattern of their runtime control
and/or data transfer [Shaw 96]
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 24
Carnegie Mellon University
Software Engineering Institute
Architectural Style -2
A style may be thought of as
• a set of constraints on an architecture
• an abstraction for a set of related architectures
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 25
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 26
Carnegie Mellon University
Software Engineering Institute
Important of Architecture to a
Development Project
Architecture is important for three primary reasons.
1. It provides a vehicle for communication among
stakeholders.
2. It is the manifestation of the earliest design
decisions about a system.
3. It is a transferable, reusable abstraction of a
system.
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 28
Carnegie Mellon University
Software Engineering Institute
Communication Vehicle
Architecture is a frame of reference in which
competing interests may be exposed, negotiated.
• negotiating requirements with users
• keeping customer informed of progress, cost
• implementing management decisions and
allocations
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 29
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 30
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 31
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 32
Carnegie Mellon University
Software Engineering Institute
Reusable Model
An architecture is an abstraction: a one-to-many
mapping (one architecture, many systems).
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 33
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 34
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 35
Carnegie Mellon University
Software Engineering Institute
Architectural Structures -1
In a house, there are plans for
• rooms
• electrical wiring
• plumbing
• ventilation
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 36
Carnegie Mellon University
Software Engineering Institute
Architectural Structures -2
Which structures are used, and why?
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 37
Carnegie Mellon University
Software Engineering Institute
Module Structure
Components: modules, work assignments
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 38
Carnegie Mellon University
Software Engineering Institute
Process Structure
Components: tasks, processes
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 39
Carnegie Mellon University
Software Engineering Institute
Uses Structure
Components: procedures
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 40
Carnegie Mellon University
Software Engineering Institute
Calls Structure
Components: procedures
Relation: invokes
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 41
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 42
Carnegie Mellon University
Software Engineering Institute
Class Structure
Components: objects
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 43
Carnegie Mellon University
Software Engineering Institute
Physical Structure
Components: tasks, processes, processors
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 44
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 45
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 46
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 47
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 48
Carnegie Mellon University
Software Engineering Institute
Behavior-Hiding Module
Physical
models module
Application
data types mod.
Extended Shared Filter
computer services behavior module
module module
Software
utilities module
System
generation mod.
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 49
Carnegie Mellon University
Software Engineering Institute
Device interfaces
sensor inputs
values
to display calculated
Data banker real-world
values Physical models
computed values stored values
stored sensor
values Shared services
values
computed values
filtered
Function drivers values Filter behaviors
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 50
Carnegie Mellon University
Software Engineering Institute
“Uses” View
Function drivers
Shared services
Device interfaces
Extended computer
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 51
Carnegie Mellon University
Software Engineering Institute
Shared services
Device interfaces
Extended computer
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 52
Carnegie Mellon University
Software Engineering Institute
Lecture Summary -1
Architecture is important because
• it provides a communication vehicle among
stakeholders
• it is the result of the earliest design decisions about a
system
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 54
Carnegie Mellon University
Software Engineering Institute
CelsiusTech Systems
Swedish defense
contractor
• approximately
2000 employees
Long-time
supplier of
naval shipboard
command and
control systems
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 55
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 56
Carnegie Mellon University
Software Engineering Institute
CelsiusTech’s Response
Business strategy
• create a product family
• make the software scaleable over a wide range of
systems
Technical strategy
• create a new generation of system
- hardware, software
- supporting development approach
• configure systems from product family; each new
project was added to the family
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 57
Carnegie Mellon University
Software Engineering Institute
Workstation
Processor
Data Surface to
Gun Radar E/O Torpedo
air missile
processor processor detector director processor
interface
Workstation
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 59
Carnegie Mellon University
Software Engineering Institute
30-70 CPUs
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 60
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 61
Carnegie Mellon University
Software Engineering Institute
Result of Changes:
Shrinking, Predictable Schedules
A
D
Ships
E
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 62
Carnegie Mellon University
Software Engineering Institute
180
160
140
120
100
80
60
40
20
0
1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 63
Carnegie Mellon University
Software Engineering Institute
120
100
80
60
40
20
0
A B C D E
Ships
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 64
Carnegie Mellon University
Software Engineering Institute
Cummins, Inc.
World’s largest
manufacturer of
large diesel engines.
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 65
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 66
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 67
Carnegie Mellon University
Software Engineering Institute
Others followed.
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 68
Carnegie Mellon University
Software Engineering Institute
Cummins’ results
Achieved a product family capability with a breathtaking
capacity for variation, or customization
• 9 basic engine types
• 4-18 cylinders
• 3.9 - 164 liter displacement
• 12 kinds of electronic control modules
• 5 kinds of microprocessors
• 10 kinds of fuel systems
• diesel fuel or natural gas
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 69
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 71
Carnegie Mellon University
Software Engineering Institute
Fuel systems 2 2 3 5 5 10 11
Engines 3 3 5 5 12 16 17
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 72
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 73
Carnegie Mellon University
Software Engineering Institute
Quick
Quick time
time to
to market
market
Effective
Effective use
use of
of limited
limited resources
resources Improved
Product
efficiency
Product alignment
alignment
and
Low
Low cost
cost production
production productivity
Low
Low cost
cost maintenance
maintenance
How?
Mass
Mass customization
customization
Strategic reuse.
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 74
Carnegie Mellon University
Software Engineering Institute
2000’s
1980’s
1990’s Software
1970’s Components
1960’s Modules Objects Product Lines
Subroutines
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 75
Carnegie Mellon University
Software Engineering Institute
Products
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 76
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 77
Carnegie Mellon University
Software Engineering Institute
Product lines
•• take
take economic
economic advantage
advantage of
of commonality
commonality
•• bound
bound variability
variability
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 78
Carnegie Mellon University
Software Engineering Institute
Current
Practice
Number of Products
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 81
Carnegie Mellon University
Software Engineering Institute
Organizational Benefits
Improved productivity
by as much as 10x
Decreased cost
by as much as 60%
Increased quality
by as much as 10X fewer defects
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 82
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 84
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 85
Carnegie Mellon University
Software Engineering Institute
Framework Goals
Identify the foundational concepts underlying the
software product lines and the essential issues to
consider before fielding a product line.
Case studies,
experience reports, Workshops
and pilots
Collaborations
with customers
Surveys on actual product lines
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 87
Carnegie Mellon University
Software Engineering Institute
Practice Areas
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 88
Carnegie Mellon University
Software Engineering Institute
Software Engineering
Practice Areas
Architecture Definition
Architecture Evaluation
Component Development
COTS Utilization
Mining Existing Assets
Requirements Engineering
Software System Integration
Testing
Understanding Relevant Domains
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 89
Carnegie Mellon University
Software Engineering Institute
Technical Management
Practice Areas
Configuration Management
Data Collection, Metrics, and Tracking
Make/Buy/Mine/Commission Analysis
Process Definition
Product Line Scoping
Technical Planning
Technical Risk Management
Tool Support
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 90
Carnegie Mellon University
Software Engineering Institute
Organizational Management
Practice Areas
Achieving the Right Organizational Structure
Building and Communicating a Business Case
Customer Interface Management
Developing and Implementing an Acquisition Strategy
Funding
Launching and Institutionalizing a Product Line
Market Analysis
Operations
Organizational Planning
Organizational Risk Management
Technology Forecasting
Training
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 91
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 93
Carnegie Mellon University
Software Engineering Institute
Adoption strategies
Proactive (predictive)
• Look ahead, define the product line’s scope proactively
• Learn all you can from domain analysis
• Product line adoption is an organization-wide affair
• Cummins and CelsiusTech both took this approach
Reactive
• Start with 1-2 products
• React to new customers as they arrive
Extractive
• Extract commonality from existing products
• Form common asset base from what you already have
• Product line adoption can start in small pockets, spread as
acceptance grows
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 94
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 95
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 96
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 97
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 98
Carnegie Mellon University
Software Engineering Institute
Aspect-Oriented Software
Development (AOSD)
Also called “multi-dimensional separation of
concerns.” Recognition that separation of concerns
may be performed in many ways.
Example:
• Dividing a system into elements based on likely
application-based changes
• Each element still must reflect
- a particular error-handling philosophy
- an architectural packaging decision
- naming conventions
- interaction protocols
- …and many others
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 99
Carnegie Mellon University
Software Engineering Institute
AOSD (cont’d.)
AOSD tools and languages let programmers weave
these separate concerns together in discrete elements,
so that these global design decisions (that have far-
reaching effects) can be changed locally.
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 100
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 101
Carnegie Mellon University
Software Engineering Institute
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 102
Carnegie Mellon University
Software Engineering Institute
PACC -2
Two driving questions:
• Given a set of components with certified quality
attributes, what can you conclude about the qualities
of a system including those component?
• Given a quality attribute need for a system, what must
you be able to certify about its components to know
you’ve satisfied that need?
© 1999 by Carnegie Mellon University Version 1.0 CECOM Course 2, Lecture 1 - page 103