Software Architecture

advertisement
Software Engineering
Natallia Kokash
email: nkokash@liacs.nl
N. Kokash, Software Engineering
1
Software Engineering
Agenda

Software Architecture
 Definition
 Architecture
Design
 Viewpoints and view models
 Architectural styles
 Architecture assessment

Software Design
 Principles
 Methods
N. Kokash, Software Engineering
2
Software Engineering
Architecture around us
Differences:




Scale
Process
Cost
Schedule
N. Kokash, Software Engineering




Skills and development teams
Materials and technologies
Stakeholders
Risks
3
Software Engineering
The Winchester “Mystery” House



Built by Sarah Winchester, widow of gun magnate
Started in 1884, finished on September 5, 1922: 38
years of construction, 147 builders, 0 architects
160 rooms: 40 bedrooms, 6 kitchens, 2 ball rooms,
950 doors, 10000 window panes, 17 chimneys


N. Kokash, Software Engineering
$5.5 million in 1922 ≈
$71 million in 2010
65 doors to blank walls,
24 skylights in floors, 13
staircases abandoned
4
Software Engineering
Complex structures without
architecture

The result is at best baroque.
 Clumsiness,
inelegance, discord in
the structures
 Duplication, redundancy, wasted
effort, rework, gaps
 Poor integration, inconsistency,
mismatch

N. Kokash, Software Engineering
We simply cannot imagine
building a skyscraper without an
architecture!
5
Software Engineering
The beginning of Software
Architecture

1968/69 NATO conferences:
“I think we have something
in addition to software
engineering [..] This is the
subject of software
architecture. Architecture
is different from
engineering”
N. Kokash, Software Engineering
6
Software Engineering
Understanding architecture (1)
“The architecture of a
software system defines
that system in terms of
computational
components and
interactions among those
components.”
Shaw & Garlan,
Software Architecture: Perspectives on
an Emerging Discipline, 1996
N. Kokash, Software Engineering
7
Software Engineering
Understanding architecture (2)
“The software architecture of
a system is the structure or
structures of the system,
which comprise software
elements, the externally visible
properties of those elements,
and the relationships among
them.”
Bass, Clements & Kazman,
Software Architecture in Practice, 2003
N. Kokash, Software Engineering
8
Software Engineering
Understanding
architecture
statement

procedure
 multiple
system structures;
 externally visible (observable)
properties of components.
module

(design)
pattern
architecture
N. Kokash, Software Engineering
Important issues raised:
This definition does not
include:
 process
 rules
and guidelines
 architectural styles
9
Software Engineering
Understanding architecture:
popular views

Architecture is high-level design
 Architecture
≈ Global design
 Architect ≈ Designer



Architecture is components and connectors
Architecture is overall structure of the system
Architecture is the structure, including the
principles and guidelines governing their
design and evolution over time
N. Kokash, Software Engineering
10
Software Engineering
Understanding architecture:
common elements
Defines major components
 Defines component relationships (structures)
and interactions
 Omits content information about components
that does not pertain to their interactions
 Defines the rationale behind the components
and the structure

N. Kokash, Software Engineering
11
Software Engineering
Definition
1471-2000
Software Architecture
is the fundamental organization
of a system embodied in its
components, their relationships
to each other and to the
environment and the principles
guiding its design and evolution.
IEEE Standard on the Recommended
Practice for Architectural Descriptions,
2000
N. Kokash, Software Engineering
12
Software Engineering
Architectural structures:









N. Kokash, Software Engineering
Module structure
Conceptual, or logical structure
Process, or coordination
structure
Physical structure
Usage structure
Calls structure
Data flow
Control flow
Class structure
13
Software Engineering
Software architecture: example
N. Kokash, Software Engineering
14
Software Engineering
Architecture in IT

Business architecture
 Business

model as it relates to an automated solution.
Technical architecture
 Specific
to technology and the use of this technology:
.NET, J2EE, hardware

Enterprise architecture
 Set
of principles, policies and technical choices to
achieve standardization and integration requirements.
 Concerns cross project/solution and communication



Solutions architecture
Product-line architecture
…
N. Kokash, Software Engineering
15
Software Engineering
Architecture vs. Design


Architecture: where non-functional decisions are cast, and
functional requirements are partitioned
Design: where functional requirements are accomplished
non-functional
requirements
functional
requirements
N. Kokash, Software Engineering
architecture
design
16
Software Engineering
Architecture starts early

Architecture represents the set
of earliest design decisions
 Hardest
to change
 Most critical to get right



Architecture is the first design
artifact where a system’s quality
attributes are addressed
Some qualities are observable via execution:
performance, security, availability, functionality, usability
And some are not observable via execution: modifiability,
portability, reusability, integrability, testability
N. Kokash, Software Engineering
17
Software Engineering
System attributes




Performance
Availability
Usability
Security

End user’s
view







Maintainability
Portability
Reusability
Testability
N. Kokash, Software Engineering

Developer’s
view
Time to market
Cost and benefits
Projected life time
Targeted market
Integration with legacy
systems
Business community
view
18
Software Engineering
The role of software architect
requirements
client,
user
assess
solutions
architect
developers
creates
assess
prescribe
visualize
appearance,
behavior
N. Kokash, Software Engineering
architectural design
construction,
cooperation
19
Software Engineering
Adding architecture: easy way
stakeholders
(few)
requirements
architecture
quality
agreement
detailed design
implementation
N. Kokash, Software Engineering
development
20
Software Engineering
Architecture in the lifecycle



Iteration on both
functional and quality
requirements
Many stakeholders
involved
Balancing of
functional and quality
requirements
stakeholders
(many)
requirements
quality
architecture
agreement
development
N. Kokash, Software Engineering
21
Software Engineering
Why software architecture is
important?
Manifests the early set of design decisions
 The vehicle for stakeholder communication:

 Architect,
requirements engineers, designers
(also of other systems), programmers, testers,
integrators, maintainers, managers, quality
assurance people…

Transferable abstraction of a system
 Product lines share a common architecture
 Allows for template-based development
 Basis for training
N. Kokash, Software Engineering
22
Software Engineering
Global workflow in
architecture design
assets
architecture
ideas
synthesis
backlog
evaluation
constraints
significant
requirements
N. Kokash, Software Engineering
evaluation results
23
Software Engineering
Architecture design

Attribute-Driven Design
 Choose module to decompose
 Refine this module:
 choose architectural drivers (quality is driving force)
 choose pattern that satisfies drivers
 apply pattern
 Repeat

Example:
 Top-level:
 usability  separate user interface  three tier architecture
 Lower-level, within user interface:
 security  authenticate users
 Lower-level, within data layer:
 availability  active redundancy
N. Kokash, Software Engineering
24
Software Engineering
Taking decisions
Design
problem
Sub-problem
Decision =
best option
Design
option
Design
option
Problem
space
Decision
space
Sub-problem
Design
option
Design
option
Decision =
best option
Alternative
solutions
N. Kokash, Software Engineering
Alternative
solutions
25
Software Engineering
Decision space
The space of possible designs that can be
achieved by choosing different sets of
alternatives.
fat-client
client
style
client-server
client in a
separate
user interface
layer
Programmed in Java
Programmed in Visual Basic
thin-client
Programmed in C++
monolithic
N. Kokash, Software Engineering
no separate
user interface
layer
26
Software Engineering
Types of decisions

Implicit, undocumented
 Unaware,
tacit, of course
knowledge

Explicit, undocumented
 Vaporizes

Explicit, explicitly
undocumented
 Tactical,

over time
personal reasons
Explicit, documented
 Preferred
N. Kokash, Software Engineering

Document your decisions

Prevents repeating steps

Explains why this is a
good architecture

Emphasizes qualities and
criticality for requirements

Provides context and
background
27
Software Engineering
Elements of a design decision
Issues: design issues being addressed
 Decision: detailed description of the decision
 Status: e.g., pending, approved
 Assumptions: underlying assumptions
 Alternatives: what are other options?
 Rationale: the why of the decision taken
 Implications: e.g. need for further decisions

N. Kokash, Software Engineering
28
Software Engineering
Architecture presentation

Building
 Overall picture of
building (client)
 Front view (client,
“beauty” committee)
 Water supply plan
(plumber)
 Electrical wiring plan
(electrician)
N. Kokash, Software Engineering

Software
 Powerpoint
slides
(managers, users,
consultants)
 UML diagrams,
models in specialized
languages (ADLs)
(technicians)
29
Software Engineering
Some more examples…
N. Kokash, Software Engineering
30
Software Engineering
N. Kokash, Software Engineering
31
Software Engineering
N. Kokash, Software Engineering
32
Software Engineering
N. Kokash, Software Engineering
33
Software Engineering
Model for architecture
description
N. Kokash, Software Engineering
34
Software Engineering
Viewpoint specification



View: a representation of a whole system
from the perspective of a related set of
concerns.
Viewpoint: establishes the purposes and
audience for a view and the techniques or
methods employed in constructing a view.
Viewpoint specification includes:
 Viewpoint name
 Stakeholders addressed
 Concerns addressed
 Language,
N. Kokash, Software Engineering
modeling techniques
35
Software Engineering
Kruchten’s 4+1 view model

Logical viewpoint:



Process viewpoint:



Shows concurrent aspects at runtime
(e.g., threads and processes)
Takes into account non-functional
requirements
Deployment viewpoint:



Supports functional requirements
Typically shows the key abstractions
(e.g., classes)
Maps logical, process, and implementation elements to physical
infrastructure
Takes into account non-functional requirements
Implementation viewpoint:

Shows software packaged in small chunks-program libraries or
subsystems
N. Kokash, Software Engineering
36
Software Engineering
Kruchten’s 4+1 view model

The scenario viewpoint
 Consists
of a small subset of
important scenarios (e.g., use
cases)
 Used to show that the elements of
the four viewpoints work together
seamlessly.

Redundant with the other ones
(hence the "+1"), but it plays
two critical roles:
 acts
as a driver to help designers
discover architectural elements;
 validates and illustrates the
architecture design.
N. Kokash, Software Engineering
37
Software Engineering
Architectural views (Bass et al.)

Module views
 Module is unit of implementation
 Decomposition, uses, layered, class

Component and connector (C & C) views
 Runtime elements
 Process (communication),
concurrency, shared
data (repository), client-server

Allocation views
 Relationship
between software elements and
environment
 Work assignment, deployment, implementation
L. Bass et al, Sofware Architecture in Practice, 2003.
N. Kokash, Software Engineering
38
Software Engineering
Architecture Description
Language (ADL)



Languages and/or conceptual models to
describe and represent system architectures
Graphical syntax
 Some examples:
Hierarchical modeling
 Acme
 AADL
 Rapide
 Darwin
 Wright
N. Kokash, Software Engineering
39
Software Engineering
An ADL Example (in ACME)
System simple_cs = {
Component client = {Port send-request}
Component server = {Port receive-request}
Connector rpc = {Roles {caller, callee}}
Attachments : {client.send-request to
rpc.caller;
server.receive-request to rpc.callee}
}
rpc
client
server
caller
send-request
N. Kokash, Software Engineering
callee
receive-request
40
Software Engineering
ADL: Good and bad
Formal way of representing
architecture
Both human and machine
readable
Permit analysis of architectures –
completeness, consistency,
ambiguity, and performance
Can support automatic generation
of simulations / software systems
N. Kokash, Software Engineering
Representations are relatively
difficult to parse
There is not universal agreement
on what ADLs should represent
Are not supported by commercial
tools
Optimized toward a particular kind
of analysis
41
Software Engineering
Architectural styles

An architectural style is a description of
component and connector types and a pattern
of their runtime control and/or data transfer.

Examples:
 main
program with subroutines
 data abstraction
 implicit invocation
 pipes and filters
 repository (blackboard)
 layers of abstraction
N. Kokash, Software Engineering
42
Software Engineering
Component / connector types
Computational
• does a computation of some sort
• E.g. function, filter
Controller
• governs time sequence
of events
• E.g. control module,
scheduler
Memory
• Maintains a collection of
persistent data
• E.g. data base, file system,
symbol table
Manager
• contains state + operations
• State is retained between
invocations of operations
data flow (e.g. pipes)
procedure call (including RPC)
implicit invocation
instantiation
N. Kokash, Software Engineering
shared data (e.g.
blackboard or
shared data base)
message passing
43
Software Engineering
Alexander’s patterns



High buildings have no genuine
advantage, except in speculative gains.
They are not cheaper, they do not
help to create open space, they make
life difficult for children, they wreck
the open spaces near them.
But quite apart from this, empirical
evidence shows that they can actually
damage people’s minds and feelings.
In any urban area, keep the majority
of buildings four stories high or less.
N. Kokash, Software Engineering
44
Software Engineering
General flavor of a pattern
IF you find yourself in • THEN for some <reasons>, apply
<pattern> to construct a solution
<context>, for
example <examples>, leading to a <new context> and
<other patterns>
with <problem>

Structure of architectural style description
 Problem: type of problem that the style addresses.
 Context: characteristics of the environment that
constrain the designer
 Solution: in terms of components and connectors
(choice not independent), and control structure (order
of execution of components)
 Variants
 Examples
N. Kokash, Software Engineering
45
Software Engineering
Example: Abstract-data-type



Problem: identify and protect related bodies of
information. Data representations likely to
change.
Context: OO-methods which guide the design,
OO-languages which provide the class-concept
Solution:
 system
model: component has its own local data
 components: managers (servers, objects)
 connectors: procedure call (message)
 control structure: single thread, decentralized

Variants: caused by language facilities
N. Kokash, Software Engineering
46
Software Engineering
More architectural styles
Layern
Layer2
Layer1
Client
Client
Client
Shared
Data
View
n
Controller
n
Implicit-invocation
 Pipes-and-filters
 Layered style
 Repository style
 Model-ViewController (MVC)
…

Model
N. Kokash, Software Engineering
47
Software Engineering
Architecture assessment

Assess whether architecture meets certain
quality goals
 e.g.,
maintainability, modifiability, reliability,
performance

The architecture is assessed, and we hope the
results will hold for a system yet to be built
Software
architecture
Properties
N. Kokash, Software Engineering
implementation
System
properties
Qualities
48
Software Engineering
Assessment techniques

Questioning:
 How
does the system react to various situations?
 Use different types of scenarios


use-cases, likely changes, stress situations, risks, far-intothe-future scenarios...
Measuring:
 Quantitative

measures, metrics, simulation.
Preconditions for successful assessment:
 Clear
goals and requirements for the architecture,
controlled scope, key personnel availability,
competent evaluation team…
N. Kokash, Software Engineering
49
Software Engineering
Architecture Tradeoff Analysis
Method (ATAM)
0: Preparation
1: Evaluation (1)
(evaluation team + decision makers, 1 day)
 Present method, business drivers and architecture
 Identify architectural approaches/styles
 Generate utility tree
 Analyze architectural approaches
2: Evaluation (2)
(evaluation team + decision makers + stakeholders, 2 days)
 Brainstorm and prioritize scenarios
 Analyze architectural approaches
 Present results
3: Follow up (evaluation team + client)
N. Kokash, Software Engineering
50
Software Engineering
ATAM: example of utility tree
Transaction response time (H, M)
Performance
Throughput
150 transactions/sec
Training
Utility
Usability
Normal operations
Maintainability
N. Kokash, Software Engineering
Database vendor releases
new version
51
Software Engineering
Output of ATAM





Concise presentation of the architecture
Articulation of business goals
Quality requirements expressed as set of
scenarios
Architectural decisions mapped to quality
requirements
Set of sensitivity points, tradeoff points and
risks:
 Sensitivity
point: decision/property critical for certain
quality attribute
 Tradeoff point: decision/property that affects more
than one quality attribute
 Risk: decision/property that is a potential problem
N. Kokash, Software Engineering
52
Software Engineering
Software Architecture Analysis
Method (SAAM)
1.
Develop scenarios


2.
3.
Describe architecture(s)
Classify scenarios


4.
5.
for activities the system must support
for anticipated changes
direct – use requires no change,
indirect – use requires change
Evaluate indirect scenarios: changes and cost
Reveal scenario interaction (i.e., scenarious that
require changes in the same component)


6.
Interaction exposes allocation of functionality to the design
Architecture might not be at right level of detail
Overall evaluation
N. Kokash, Software Engineering
53
Software Engineering
SUMMARY
Architectural styles and design
pattern describe (how are
things done) as well as
prescribe (how should things
be done)
 Architecture supports
stakeholder communication,
early evaluation of design,
transferable abstraction

N. Kokash, Software Engineering
54
Software Engineering
Homework
Read chapter 11
 Design the architecture of Image2UML
system

 Use
rup_sad.dot template
N. Kokash, Software Engineering
55
Software Engineering
Software Engineering (3rd Ed.)


















N. Kokash, Software Engineering
1. Introduction
2. Introduction to Software Engineering Management
3. The Software Life Cycle Revisited
4. Configuration Management
5. People Management and Team Organization
6. On Managing Software Quality
7. Cost Estimation
8. Project Planning and Control
9. Requirements Engineering
10. Modeling
11. Software Architecture
12. Software Design
13. Software Testing
14. Software Maintenance
17. Software Reusability
18. Component-Based Software Engineering
19. Service Orientation
20. Global Software Development
56
Download