Architectural Design of Distributed Business Systems Tutorial M3,

advertisement
Architectural Design
of
Distributed Business Systems
Tutorial M3,
TOOLS Europe 2001
13 March 2001
Trygve Reenskaug
Mogul Norway AS, Oslo
http://www.ifi.uio.no/~trygver
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:31:59 AM.
Slide
1
The Autokon system
for the Computer-Aided Design of Ships
1960 - Architecture created
1962 - First deployed
1965 - First international
1997 - Converted to PC
Architecture still valid!!
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:31:59 AM.
Slide
2
The Autokon architecture
Why the long life ?
¤ Shipbuilding essentially unchanged
¤ Luck - random access mass storage
devices enabled database solution
¤ Reality reflected into
Clean, intelligible modular structure
¤ Expressed user needs as symptoms
for required abstractions
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:00 AM.
Slide
3
The Autokon architecture
Was it worth it ?
YES!
¤ System integrity maintained through
major revisions
¤ System reliability maintained through
major revisions
¤ System is comprehensible to
users and maintainers
¤ Architecture spans decades of
development projects
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:00 AM.
Slide
4
Exercise 1: What do WE mean by
System Architecture?
•
•
•
•
•
……………………………………….
……………………………………….
……………………………………….
……………………………………….
……………………………………….
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:01 AM.
Slide
5
Highlights
• Why architecture is important & What it is
• Habitable Architectures created for people
– Enterprise models
– Personal information environments
– System models, the heavy part
• UML Collaboration, a powerful abstraction for
architectural topology
– Collaboration (role model) specify many instances
– CollaborationInstance depicting a concrete topology
• Patterns, a literary style for sharing experience
– Wrap Entity Beans with Session Beans
– Caterpillars Fate: Smooth transition from analysis to design
• Summary and Conclusion
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:01 AM.
Slide
6
WHY ARCHITECTURE?
• Help create habitable systems
• Help create long-lived, robust systems
• i. e., aim for simplicity:
…simple systems are easy to master
…simple systems are easy to build - correctly
…simple systems are easy to maintain
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:01 AM.
Slide
7
Theory X vs. Theory Y
(MacGregor)
Theory Y
Theory X:
•
Authoritarian
Dislike
work
leadership
• Are
• Lack ambition
Inspiring
willing
to work
leadership
• Are capable of selfcontrol
• Are irresponsible
Rigid,
Bored,
• Are
resistant to
controlling
passive
change
environment
workers
• Are
willing to Interested,
accept
Flexible,
responsibility
supportive
creative
environment
workers
• Prefer to be led rather • Are imaginative and
creative
than to lead
• Are capable of selfdirection
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:01 AM.
Slide
9
Vision of Distribution
anno 1973
Mary’s
System
Kari’s
System
Architectural Design of Distributed Systems
Jonas’
System
Yngvar’s
System
Anton’s
System
© Trygve Reenskaug 2001
5/29/2016 3:32:02 AM. Slide
10
The Importance
of the User's Mental Model
• A good conceptual model allows us to predict the
effects of our actions.
• Without a good model we operate by rote, blindly.
• We do operations as we are told; we cannot fully
appreciate why, what effects to expect, or what to do
if things go wrong.
Design
model
USER'S
MODEL
USER
DESIGNER
SYSTEM
Donald A. Norman:
The Design of Everyday Things
Architectural Design of Distributed Systems
System
Image
© Trygve Reenskaug 2001
5/29/2016 3:32:02 AM. Slide
11
Make IT so simple that even a
programmer can understand IT
Edsger Dijkstra:
• Testing can only show the presence of bugs
• Testing can never show the absence of bugs
• so, the number of bugs in the system when you
deliver it is proportional to the number of bugs
found during testing
• The only way to avoid bugs
is not to put them in in the first place
• I.E., Keep It Simple, Stupid (KISS)
60.000 bugs removed from Windows2000 during testing
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:03 AM. Slide
12
Architectural styles
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:03 AM. Slide
13
Architecture Example
First Priority: Make it Habitable!
Second Priority: Make it Buildable!
Third Priority: Make it Cost Effective!
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:03 AM. Slide
14
RATIONAL's Definition of Architecture
"Principles of Architecting Software Systems"
• Software architecture encompasses
the set of significant decisions
about the organization of a software system
– Selection of the structural elements and their interfaces
– Behavior as specified in collaborations among those
elements
– Composition of these structural and behavioral
elements into larger subsystems
– Architectural style that guides this organization
• Software architecture also involves
– Functionality, Usability, Resilience, Performance,
Reuse, Comprehensibility
– Economic and technology constraints and tradeoffs
– Aesthetic concerns
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:03 AM. Slide
15
Highlights
• Why architecture is important & What it is
• Habitable Architectures created for people
– Enterprise models
– Personal information environments
– System models, the heavy part
• UML Collaboration, a powerful abstraction for
architectural topology
– Collaboration (role model) specify many instances
– CollaborationInstance depicting a concrete topology
• Patterns, a literary style for sharing experience
– Wrap Entity Beans with Session Beans
– Caterpillars Fate: Smooth transition from analysis to design
• Summary and Conclusion
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:04 AM. Slide
16
Personal, Integrated
Information Environments
Enterprise level
Work processes
UML Object Model
Personal level
User's mental model
UML Collaboration
System level
Design models
All of UML
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:04 AM. Slide
17
Enterprise level
Example:Travel Expense
Enterprise level
Work processes
UML Object Model
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:05 AM. Slide
18
Two Approaches
to Object Orientation
"East Coast Approach":
Object orientation is a smart programming artifact.
An object is an instance of a class.
Simula; Master complexity;
Classification Theory
"West Coast Approach":
Object Orientation is a powerful modeling paradigm.
An object encapsulates state and behavior so that it can
collaborate with other objects.
Smalltalk; Personal Information Systems;
Computer Augmentation + Lisp + Simula (+ Operating Systems)
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:05 AM. Slide
19
UML Instance Interaction Diagram
Travel Expense Model
Ruth
(President)
4: authorizedExpenseReport
Eve
Douglas
Adam
(Software Manager)
(Marketing manager)
(Chief Accountant)
1: travelPermissionRequest
2: travelPermission
Joyce
Joe
Elsie
(Sales clerk)
(Paymaster)
(Programmer)
3: expenseReport
Bill
(Bookkeeper)
Peter
(Technical author)
Bill
(Dispatcher)
5: paymentRequest
John
(Cashier)
Architectural Design of Distributed Systems
Kim
(Methodologist)
© Trygve Reenskaug 2001
Ann
(Customer consultant)
5/29/2016 3:32:06 AM. Slide
20
UML Collaboration Diagram
Travel Expense Model
Ruth
(President)
Adam
(Chief Accountant)
Eve
(Software Manager)
/ Authorizer
Douglas
(Marketing manager)
Joe
(Paymaster)
/ Paymaster
Elsie
(Programmer)
Joyce
(Sales clerk)
Bill
(Bookkeeper)
/ BookKeeper
Peter
(Technical author)
Bill
(Dispatcher)
John
(Cashier)
Kim
(Methodologist)
Architectural Design of Distributed Systems
/ Traveler
Ann
(Customer consultant)
Objects --> ClassifierRoles
© Trygve Reenskaug 2001
5/29/2016 3:32:07 AM. Slide
21
Behavior: Action-Object Flow Diagram
Travel Expense Model
/ Traveler
/ Authorizer
/ BookKeeper
/ Paymaster
Who
<Plan trip>
<Buy tickets>
Travel perm.
request
Travel
permission
Action
<Travel>
<Write exp.
Report>
A Swimlane What
for each
Object or When
ClassifierRole
<Decide>
Expense
Report
<Check OK>
<Authorize>
Data Object
Authorized
Expense
Report
<Check>
<Bookkeeping>
Payment
Request
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
<Pay out>
5/29/2016 3:32:08 AM. Slide
22
Pipes and Filters:
Travel Expense Model
/ Traveler
/ Authorizer
/ BookKeeper
/ Paymaster
Who
<Plan trip>
<Buy tickets>
TravelRecord
[request]
What
<Decide>
Data Object
changes state
over time
TravelRecord
[permission]
When
<Travel>
<Write exp.
Report>
TravelRecord
[report]
<Check OK>
<Authorize>
TravelRecord
[authorized]
<Check>
<Bookkeeping>
TravelRecord
[pay]
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
<Pay out>
5/29/2016 3:32:09 AM. Slide
23
Personal Information Environment
Personal level
User's mental model
UML Collaboration
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:09 AM. Slide
24
Task: Decide permission
Travel Expense Model
/ Traveler
<Plan trip>
<Buy tickets>
/ Authorizer
Travel perm.
request
/ BookKeeper
/ Paymaster
<Decide>
Travel
permission
<Travel>
<Write exp.
Report>
Expense
Report
<Check OK>
<Authorize>
Authorized
Expense
Report
<Check>
<Bookkeeping>
Payment
Request
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
<Pay out>
5/29/2016 3:32:10 AM. Slide
25
Travel Permission Decision Tool
Travel Expense System
Traveler
Peter
Period
week 11
Planned cost
USD 2000.-
Purpose Attend TOOLS Europe 2001
Current plan for Peter
Budget + commitments
activity 1
activity 2
activity 3
week
Item
Budget Committed
Travel 10,000
4,000
10 11 12 13 14 15
Permit
Architectural Design of Distributed Systems
Reject
© Trygve Reenskaug 2001
5/29/2016 3:32:11 AM. Slide
26
Travel Permission Decision Tool
Required Topology
Traveler
Peter
Period
week 11
Planned cost
USD 2000./ Planning
Service
Purpose Attend TOOLS Europe 2001
/Current
Authorizer
plan for Peter
activity 1
activity 2
activity 3
week
/ Travel
/ DecisionTool
Service
Budget + commitments
Item
Budget Committed
Travel 10,000
10 11 12 13 14 15
Permit
Architectural Design of Distributed Systems
Reject
© Trygve Reenskaug 2001
4,000
/ Accounting
Service
5/29/2016 3:32:15 AM. Slide
27
Architecting Distributed Systems
System level
Design models
All of UML
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:15 AM. Slide
28
Highlights
• Why architecture is important & What it is
• Habitable Architectures created for people
– Enterprise models
– Personal information environments
– System models, the heavy part
• UML Collaboration, a powerful abstraction for
architectural topology
– Collaboration (role model) specify many instances
– CollaborationInstance depicting a concrete topology
• Patterns, a literary style for sharing experience
– Wrap Entity Beans with Session Beans
– Caterpillars Fate: Smooth transition from analysis to design
• Summary and Conclusion
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:16 AM. Slide
29
Enterprise
Production Planning & Control
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:17 AM. Slide
30
UML Use Case Notation
Demo Example
ActivityNetworkDemo
UC 1: Generate test networks
User (Me)
UC 2: Frontload
UC 3: Allocate resource
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:19 AM. Slide
31
Use Case 2: Frontloading
UML Instance Interaction Diagram
fL(t) =
Project
public void
frontLoad (int time )
0
--20
Activity-B
4:fL(10)
7
(4)
10
14
(3)
16
Activity-F
Activity-C
Activity-E
18
(2)
19
7
(7)
13
14
(4)
17
Activity-A
1
(6)
6
Activity-D
Architectural Design of Distributed Systems
6:fL(13)
© Trygve Reenskaug 2001
5/29/2016 3:32:19 AM. Slide
32
The UML Collaboration
and the ClassifierRole
/ RoleName
2: mess2
1: mess1
A collaboration describes how an operation, like a use case, is
realized by a set of classifiers and associations used in a
specific way. The collaboration defines a set of roles to be
played by instances, as well as a set of interactions that define
the communication between the instances when they play the
roles.
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:20 AM. Slide
33
The essence of frontloading
Collaboration with Interaction
/ Predecessor
/ Activity
fL(t1)
*
*
/ Successor
fL(t2)
*
*
"In an instance of a collaboration, each
ClassifierRole maps onto at most one object.”
A many-relation (*) means that
the role represents a typical member of the set
All other members behave correspondingly
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:20 AM. Slide
34
Interfaces in the
Basic scheduling collaboration
The interfaces specify minimal requirements
to receiving classes
/ Predecessor
fL(t1)
/ Activity
fL(t2)
/ Successor
«Interface»
FrontloadIntf
frontLoad(time)
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:20 AM. Slide
35
Interface Definitions
Java
public interface FrontloadIntf {
public void frontLoad (int t);
}
/ Predecessor
fL(t1)
/ Activity
fL(t2)
/ Successor
«Interface»
FrontloadIntf
frontLoad(time)
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:21 AM. Slide
36
The UML Class
playing a role in a Collaboration
:ClassName
2: mess2
1: mess1
An Instance of a given class
playing the specified role at run time
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:21 AM. Slide
37
Assign classes to roles
(Optional)
/ Predecessor
:Activity, :Project
fL(t1)
/ Activity
: Activity
fL(t2)
/ Successor
:Activity, :Project
«Interface»
FrontloadIntf
frontLoad(time)
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:22 AM. Slide
38
Class Definitions
Java
public class Activity
implements FrontloadIntf {
private FrontloadIntf[] successors;
… … …
/ Predecessor
/ Activity
fL(t1)
public
frontload
(int t)fL(t2)
{…}
: Activity,
Project void
: Activity
… … …
}
/ Successor
: Activity, Project
public class Project
implements FrontloadIntf{
private FrontloadIntf[] startActivities;
… … …
«Interface»
«Interface»
public
void frontload (int t) FrontloadIntf
{…}
BackloadIntf
… … …
backload(time)
frontLoad(time)
}
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:22 AM. Slide
39
Highlights
• Why architecture is important & What it is
• Habitable Architectures created for people
– Enterprise models
– Personal information environments
– System models, the heavy part
• UML Collaboration, a powerful abstraction for
architectural topology
– Collaboration (role model) specify many instances
– CollaborationInstance depicting a concrete topology
• Patterns, a literary style for sharing experience
– Wrap Entity Beans with Session Beans
– Caterpillars Fate: Smooth transition from analysis to design
• Summary and Conclusion
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:22 AM. Slide
40
Separate Presentation and Business
Objects
WEB Browser
Button
ActivityGraph
paint();
Tool
BarChart
Project
activity-B
activity-D
activity-A
Activity-F
activity-C
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
activity-E
5/29/2016 3:32:22 AM. Slide
41
An Unrealistic
Implementation
class ActivityGraph extends Canvas {. . .
public void paint(Graphics g) {
. . . // paint frame etc.
Graphics ng = g.create(. . .);
tool.getProject().paintGraph(ng);
}
public class Project {. . .
public void paintGraph(Graphics g) {
// collect ranked activities
Activity[][] bucket = rankedActivities();
// Plot activities in each column.
for (int i=0; i < bucket.length; i++) {
for (int j=0; j < bucket[i].length; j++) {
bucket[i][j].paintSymbol(g, new Point (…), grid);
}
}
// draw connections . . .
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:22 AM. Slide
42
Java RMI
Remote Method Invocation
WEB Browser
Button
ActivityGraph
Client
paint();
Server
Tool
BarChart
Project
activity-B
activity-D
activity-A
Activity-F
activity-C
activity-E
Exercise 3:
Suggest an implementation for this system
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:23 AM. Slide
43
The UML Subsystem
playing a role in a Collaboration
2: mess2
1: mess1
SubsystemName
A subsystem is a grouping of model elements that represents a
behavioral unit in a physical system.
A subsystem offers interfaces and has operations.
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:23 AM. Slide
44
High level Collaboration
with Subsystems
WEB Browser
Button
Tool
paint();
Applet
ActivityGraph
BarChart
Project
PlanningService
activity-B
activity-D
activity-A
Activity-F
activity-C
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
activity-E
5/29/2016 3:32:24 AM. Slide
45
The UML Component
playing a role in a Collaboration
1: mess1
ComponentName
2: mess2
A Component represents a modular, deployable, and
replaceable part of a system that encapsulates implementation
and exposes a set of interfaces.
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:24 AM. Slide
46
High level Collaboration
with UML Components
WEB Browser
Button
paint();
Tool
Responsibility
Applet
ActivityGraph
BarChart
«Interface»
Project
?
Architectural Design of Distributed Systems
Project
PlanningService
Responsibility
activity-B
activity-D
activity-A
Activity-F
activity-C
© Trygve Reenskaug 2001
activity-E
5/29/2016 3:32:24 AM. Slide
47
Assign Components
to Physical Nodes
PC
Tool
Application Server
Planning
Service
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:24 AM. Slide
48
Some UML Definitions
• A Collaboration describes how an operation, like a use case, is realized
by a set of classifiers and associations used in a specific way. The
collaboration defines a set of roles to be played by Instances, as well as
a set of interactions that define the communication between the
instances when they play the roles.
• The Instance is encapsulated. It has identity, interface and state.
• An instance of a given Class can play one or more roles at run time.
A ClassifierRole can be implemented by many ways.
• A Subsystem is a grouping of model elements that represents a
behavioral unit in a physical system. A subsystem offers interfaces and
has operations.
• A Component represents a modular, deployable, and replaceable part of
a system that encapsulates implementation and exposes a set of
interfaces.
• A Node is a run-time physical object that represents a computational
resource,
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:25 AM. Slide
49
UML Diagrams
(Architecturally Significant)
# Build-time Diagrams (Code and Code Management)
* Class Diagrams
* Deployment Diagrams
* Component Diagrams
# Run-time Diagrams
* Use Case Diagrams
* Collaboration Diagrams
(Objects, ClassifierRoles, Subsystems, Components)
* Interaction & Sequence Diagrams
* Object Diagrams
* Statechart Diagrams
* Activity Diagrams / Action-Object Flow Diagrams
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:25 AM. Slide
50
Highlights
• Why architecture is important & What it is
• Habitable Architectures created for people
– Enterprise models
– Personal information environments
– System models, the heavy part
• UML Collaboration, a powerful abstraction for
architectural topology
– Collaboration (role model) specify many instances
– CollaborationInstance depicting a concrete topology
• Patterns, a literary style for sharing experience
– Wrap Entity Beans with Session Beans
– Caterpillars Fate: Smooth transition from analysis to design
• Summary and Conclusion
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:25 AM. Slide
51
Design Patterns
ChristopherAlexander, Architect:
Each pattern describes a problem that occurs over and
over again in our environment and then describes the
core of the solution to that problem in such a way that
you can use this solution a million times over without
ever doing it the same way twice.
Jim Coplien and Doug Schmidt, Software Engineers:
• A clear statement of a problem and its context.
• Offering a concrete solution addressing the problem
• A clear statement of the forces that motivate the solution.
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:25 AM. Slide
52
Highlights
• Why architecture is important & What it is
• Habitable Architectures created for people
– Enterprise models
– Personal information environments
– System models, the heavy part
• UML Collaboration, a powerful abstraction for
architectural topology
– Collaboration (role model) specify many instances
– CollaborationInstance depicting a concrete topology
• Patterns, a literary style for sharing experience
– Wrap Entity Beans with Session Beans
– Caterpillars Fate: Smooth transition from analysis to design
• Summary and Conclusion
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:25 AM. Slide
53
Wrap Entity Beans with Session Beans-1
Ed Roman, TheServerside.com, August, 2000
"Artist's Impression"
S
JDBC
Business API
Business Logic
S
E
Architectural Design of Distributed Systems
E
Persistent Data
Data Logic
© Trygve Reenskaug 2001
5/29/2016 3:32:25 AM. Slide
54
A Real Example Application
Execution Architecture
Web
Browser
Data
Storage
Web
Server
UI
UIControl
«web
pages»
«JavaServer
Page»
1
Data
base
1
Application
Server
1
Activity
Task
«Stateful
SessionBean»
«Stateless
SessionBean»
*
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
Mapper
1
«EntityBean»
5/29/2016 3:32:26 AM. Slide
55
Highlights
• Why architecture is important & What it is
• Habitable Architectures created for people
– Enterprise models
– Personal information environments
– System models, the heavy part
• UML Collaboration, a powerful abstraction for
architectural topology
– Collaboration (role model) specify many instances
– CollaborationInstance depicting a concrete topology
• Patterns, a literary style for sharing experience
– Wrap Entity Beans with Session Beans
– Caterpillars Fate: Smooth transition from analysis to design
• Summary and Conclusion
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:26 AM. Slide
56
Caterpillar's Fate - 1
Norman Kerth, Coplien's book
2.
Synchronization
of Concurrent Threads
3.
1.
Concurrent
Collaborative
Work Packets
Threads of Execution
9.
Shape of Program
The main patterns
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:26 AM. Slide
57
Highlights
• Why architecture is important & What it is
• Habitable Architectures created for people
– Enterprise models
– Personal information environments
– System models, the heavy part
• UML Collaboration, a powerful abstraction for
architectural topology
– Collaboration (role model) specify many instances
– CollaborationInstance depicting a concrete topology
• Patterns, a literary style for sharing experience
– Wrap Entity Beans with Session Beans
– Caterpillars Fate: Smooth transition from analysis to design
• Summary and Conclusion
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:26 AM. Slide
58
Personal, Integrated
Information Environments
#
#
#
Habitable Systems
Theory X for inspiring organizations
Explicit Users' Mental Models
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:26 AM. Slide
59
Control Components through their
Responsibilities and Interfaces
Tool
Responsibility
«Interface»
Project
?
Architectural Design of Distributed Systems
PlanningService
Responsibility
© Trygve Reenskaug 2001
5/29/2016 3:32:29 AM. Slide
60
Plan Behavior
Who - What - When
/ Traveler
/ Authorizer
<Plan trip>
TravelRecord
[request]
<Buy tickets>
TravelRecord
[permission]
/ BookKeeper
/ Paymaster
<Decide>
<Travel>
<Write exp.
Report>
TravelRecord
[report]
<Check OK>
<Authorize>
TravelRecord
[authorized]
<Check>
<Bookkeeping>
TravelRecord
[pay]
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
<Pay out>
5/29/2016 3:32:29 AM. Slide
61
Instruct implementors and maintainers
Objects
Collaboration links
Backplane
(Container)
Operating
System
Net
Hardware
Architectural Design of Distributed Systems
Thanks to Øystein Myhre for this illustration
© Trygve Reenskaug 2001
5/29/2016 3:32:29 AM. Slide
62
Questions ?
Comments ?
Architectural Design of Distributed Systems
© Trygve Reenskaug 2001
5/29/2016 3:32:30 AM. Slide
63
More details ….
• http://www.ifi.uio.no/~trygver
• trygve.reenskaug@ifi.uio.no
• Coplien, James O. and Douglas C. Schmidt, ed. Pattern Languages of Program Design, Addison-Wesley, 1995.
• Reenskaug, Wold, Lehne: Working With Objects. Manning/Prentice Hall 1996. ISBN 0-13-452930-8
The reference work. This book is out of print. A .pdf version kan be downloaded free from above website.
• Theory: Egil P. Andersen: Conceptual Modeling of Objects. A Role Modeling Approach. Dr Scient thesis. Dept. of
Informatics, University of Oslo. 4 November 1997.
The theory of role modeling
ftp://ftp.nr.no/pub/egil/ConceptualModelingOO.ps.gz
• Unified Modeling Language (UML). Object Management Group. UML Draft Specification v. 1.4. UML Draft
Specification v. 1.4. OMG DOC#: ad/01-02-13. http://cgi.omg.org/cgi-bin/doc?ad/01-02-13
• Donald A. Norman: "The Design of Everyday Things." Doubleday/Currency 1990. ISBN 0-385-26774-6.
• Douglas MacGregor: “Human Side of Enterprise : 25th Anniversary Printing” McGraw-Hill 1985; ISBN:
0070450986
• Alexander, Christopher, et al. A Pattern Language, Oxford University Press, New York, 1977.
• http://www.c2.com/cgi/wiki?WelcomeVisitors
• http://hillside.net/patterns/
• http://theserverside.com/patterns/
• http://www.c2.com/cgi/wiki?EjbRoadmap
• Frank Buschmann: Pattern-Oriented Software Architecture. Wiley 1996; ISBN: 0471958697
• IBM WebSphere: http://www.redbooks.ibm.com/abstracts/sg246161.html
© Trygve Reenskaug 2001
Architectural Design of Distributed Systems
5/29/2016 3:32:30 AM. Slide
64
Download