4. 4
31/03/03
Thales Air Traffic Management
31/03/03
CORBA use case
Can we use CORBA in Large Distributed Control
System ?
What do We want !
Complex System Seamless Integration
Why CORBA ?
Object Software Bus
Design for changes
Change example : Printer
CORBA distributed polymorphism example
CORBA and Distributed Design pattern example
Procedural design versus Object design
Designing Distributed Object
Normalisation processes
7. 7
31/03/03
Thales Air Traffic Management
Complex system : ATC center
Flight Plan
ProcessingFlight Plan
Processing
Supervisory
ControlSupervisory
Control
Simulator
Simulator
Recording
ReplayRecording
Replay
controller
Working
Position
controller
Working
Position
Radar Data
ProcessingRadar Data
Processing
Radar Front
ProcessingRadar Front
Processing
LAN
AFTN/CIDIN
ATFM
ADJACENT
FIR'S/TWR'S
MET Centres
Voice control
and
communications
Voice control
and
communications
• Intercom
• Priority
• Public
• RADIO A/G
controller
Working
Position
controller
Working
Position
4 56
9. 9
31/03/03
Thales Air Traffic Management
31/03/03
CORBA use case
Can we use CORBA in Large Distributed Control
System ?
What do We want !
Complex System Seamless Integration
Why CORBA ?
Object Software Bus
Design for changes
Change example : Printer
CORBA distributed polymorphism example
CORBA and Distributed Design pattern example
Procedural design versus Object design
Designing Distributed Object
Normalisation processes
15. 15
31/03/03
Thales Air Traffic Management
31/03/03
CORBA use case
Can we use CORBA in Large Distributed Control
System ?
What do We want !
Complex System Seamless Integration
Why CORBA ?
Object Software Bus
Design for changes
Change example : Printer
CORBA distributed polymorphism example
CORBA and Distributed Design pattern example
Procedural design versus Object design
Designing Distributed Object
Normalisation processes
22. 22
31/03/03
Thales Air Traffic Management
31/03/03
CORBA use case
Can we use CORBA in Large Distributed Control
System ?
What do We want !
Complex System Seamless Integration
Why CORBA ?
Object Software Bus
Design for changes
Change example : Printer
CORBA distributed polymorphism example
CORBA and Distributed Design pattern example
Procedural design versus Object design
Designing Distributed Object
Normalisation processes
25. 25
31/03/03
Thales Air Traffic Management
Object Software Component Integration Bus
"
) "
#
99:; (
!$ # #
Distributed
Polymorphism
Software Components
Evolution
And Replacement
26. 26
31/03/03
Thales Air Traffic Management
31/03/03
CORBA use case
Can we use CORBA in Large Distributed Control
System ?
What do We want !
Complex System Seamless Integration
Why CORBA ?
Object Software Bus
Design for changes
Change example : Printer
CORBA distributed polymorphism example
CORBA and Distributed Design pattern example
Procedural design versus Object design
Designing Distributed Object
Normalisation processes
27. 27
31/03/03
Thales Air Traffic Management
Polymorphism
1 < '
) " " # " *
( !
"
0 ! ! "
=
*GoF stand for Gang of Four. It refers to the pattern seminal book of John Vlissides, Erich Gamma,
Richard Helm, Ralph Johnson:
Design Patterns: Elements of Reusable Object-Oriented Software.
30. 30
31/03/03
Thales Air Traffic Management
Procedural versus Object
Procedural Design Object Design
Before Object After Object
31. 31
31/03/03
Thales Air Traffic Management
31/03/03
CORBA use case
Can we use CORBA in Large Distributed Control
System ?
What do We want !
Complex System Seamless Integration
Why CORBA ?
Object Software Bus
Design for changes
Change example : Printer
CORBA distributed polymorphism example
CORBA and Distributed Design pattern example
Procedural design versus Object design
Designing Distributed Object
Normalisation processes
46. 46
31/03/03
Thales Air Traffic Management
Pervasive Change = Spaghetti Plate
+ #
After Several Changes Replace and Reused
47. 47
31/03/03
Thales Air Traffic Management
Procedural versus Object
Without OOD With OOD
Design For Changes
Evolutionary System
Design for no Changes
Stationary System
51. 51
31/03/03
Thales Air Traffic Management
31/03/03
CORBA use case
Can we use CORBA in Large Distributed Control
System ?
What do We want !
Complex System Seamless Integration
Why CORBA ?
Object Software Bus
Design for changes
Change example : Printer
CORBA distributed polymorphism example
CORBA and Distributed Design pattern example
Procedural design versus Object design
Designing Distributed Object
Normalisation processes
52. 52
31/03/03
Thales Air Traffic Management
Changes example : the printer
Client Printing Server
From The CORBA Bible
Michi Henning
Steve Vinoski
Advanced CORBA
Programming with C++
62. 62
31/03/03
Thales Air Traffic Management
31/03/03
CORBA use case
Can we use CORBA in Large Distributed Control
System ?
What do We want !
Complex System Seamless Integration
Why CORBA ?
Object Software Bus
Design for changes
Change example : Printer
CORBA distributed polymorphism example
CORBA and Distributed Design pattern example
Procedural design versus Object design
Designing Distributed Object
Normalisation processes
70. 70
31/03/03
Thales Air Traffic Management
Objet Reference and Naming
Client Naming
Service
Server
Server exports
IOR
Client lookup
for Interface IOR
Client submits
request to server
75. 75
31/03/03
Thales Air Traffic Management
31/03/03
CORBA use case
Can we use CORBA in Large Distributed Control
System ?
What do We want !
Complex System Seamless Integration
Why CORBA ?
Object Software Bus
Design for changes
Change example : Printer
CORBA distributed polymorphism example
CORBA and Distributed Design pattern example
Procedural design versus Object design
Designing Distributed Object
Normalisation processes
78. 78
31/03/03
Thales Air Traffic Management
The GOF Abstract Factory Design Pattern
*GoF stand for Gang of Four. It refers to the famous books of John Vlissides, Erich Gamma, Richard Helm,
Ralph Johnson. Design Patterns: Elements of Reusable Object-Oriented Software.
80. 80
31/03/03
Thales Air Traffic Management
Life cycle
Printer FactoryClient Printer
Create Printer
Create Printer
Request
Printer IOR
81. 81
31/03/03
Thales Air Traffic Management
FACTOY PATTERN (from OOC training)
" " ! (
' " # ! #
+ "
A client is required to provide security information before the
factory object will allow the client to have access to another
object.
$ * " #
The factory object manages a pool of objects, often
representing some limited resource, and assigns them to
clients based on some utilization algorithm.
A factory object enables the use of polymorphism by returning
object references to different implementations depending on
the criteria specified by a client.
85. 85
31/03/03
Thales Air Traffic Management
Factory And Code Generation
Printer
+print()
&OLHQW
Black & White
+ print()
Colour
+ print()
86. 86
31/03/03
Thales Air Traffic Management
Factory And Code Generation
Printer
+print()
Black & White
+ print()
&OLHQW
Colour
+ print()
FAX
+ print()
87. 87
31/03/03
Thales Air Traffic Management
Factory And Code Generation
Printer
+print()
Black & White
+ print()
&OLHQW
Colour
+ print()
FAX
+ print()
Strip
+ print()
88. 88
31/03/03
Thales Air Traffic Management
Factory And Code Generation
<<Interface>>
Printer
+print()
Black & White
+ print()
&OLHQW
Colour
+ print()
FAX
+ print()
Strip
+ print()
89. 89
31/03/03
Thales Air Traffic Management
Factory And Code Generation
<<Interface>>
Printer Factory
Black & White
Factory
&OLHQW
1 "
Colour
Factory
FAX
Factory
Strip
Factory
90. 90
31/03/03
Thales Air Traffic Management
31/03/03
CORBA use case
Can we use CORBA in Large Distributed Control
System ?
What do We want !
Complex System Seamless Integration
Why CORBA ?
Object Software Bus
Design for changes
Change example : Printer
CORBA distributed polymorphism example
CORBA and Distributed Design pattern example
Procedural design versus Object design
Designing Distributed Object
Normalisation processes
95. 95
31/03/03
Thales Air Traffic Management
Example 3: The problem is in the User Input
Exit Coordination State
A: NIL_EXIT_STATE,
B: FLIGHT_ACTIVATION_PROPOSAL,
C: FLIGHT_ACTIVATION_ALARM,
D: FLIGHT_ACTIVATION_CONFIRMED,
E: HANDOVER_TRANSFERED,
F: COORDINATION_TERMINATED,
G: UNKNOWN_EXIT_STATE
Enter Exit Coordination State =>
96. 96
31/03/03
Thales Air Traffic Management
Replace case and enum by object .
enum ExitCoordinationState {
NIL_EXIT_STATE,
FLIGHT_ACTIVATION_PROPOSAL,
FLIGHT_ACTIVATION_ALARM,
FLIGHT_ACTIVATION_CONFIRMED,
HANDOVER_TRANSFERED,
COORDINATION_TERMINATED,
UNKNOWN_EXIT_STATE
}
110. 110
31/03/03
Thales Air Traffic Management
Factory pseudo code
static Status create(int status) {
switch(status) {
case NIL_EXIT_STATE :
return status = new nil_exit_state();
break;
case FLIGHT_ACTIVATION_PROPOSAL:
return status = new flight_activation_proposal();
break;
case FLIGHT_ACTIVATION_ALARM:
return status = new flight_activation_alarm();
break;
case FLIGHT_ACTIVATION_CONFIRMED:
return status = new flight_activation_confirmed();
break;
case HANDOVER_TRANSFERED,
return status = new handover_transfered();
break;
case COORDINATION_TERMINATED,
return status = new coordination_terminated();
break;
case UNKNOWN_EXIT_STATE
return status = new unknown_exit_state();
}
}
New Object
111. 111
31/03/03
Thales Air Traffic Management
Polymorphism and changes
Status
+print()
NIL_EXIT
_STATE
+ print()
&OLHQW
FLIGHT_ACTIVATION
_PROPOSAL
+ print()
FLIGHT_ACTIVATION
_ALARM
+ print()
UNKNOWN_EXIT
_STATE
+ print()
NEW_STATE
+ print()
No Changes
113. 113
31/03/03
Thales Air Traffic Management
State Pattern (from the GoF)
GoF stand for Gang of Four. It refers to the famous books of Vlisside and Co.
Design Patterns: Elements of Reusable Object-Oriented Software.
119. 119
31/03/03
Thales Air Traffic Management
On line coordination with CORBA Objects
Air Traffic Control Centre
Status
Status
Status
Status
120. 120
31/03/03
Thales Air Traffic Management
31/03/03
CORBA use case
Can we use CORBA in Large Distributed Control
System ?
What do We want !
Complex System Seamless Integration
Why CORBA ?
Object Software Bus
Design for changes
Change example : Printer
CORBA distributed polymorphism example
CORBA and Distributed Design pattern example
Procedural design versus Object design
Designing Distributed Object
Normalisation processes
121. 121
31/03/03
Thales Air Traffic Management
CORBA = Coarse Grain Object
Remote ObjectLocal Object
Operation1()
Operation2()
Operation3()
Operation4()
Fine Grain Object
NO
124. 124
31/03/03
Thales Air Traffic Management
Object By Value
Local Object
Operation1()
Operation2()
Operation3()
Remote Object
OBV
Event Factory
new
Event Type
$ " ) "
125. 125
31/03/03
Thales Air Traffic Management
31/03/03
CORBA use case
Can we use CORBA in Large Distributed Control
System ?
What do We want !
Complex System Seamless Integration
Why CORBA ?
Object Software Bus
Design for changes
Change example : Printer
CORBA distributed polymorphism example
CORBA and Distributed Design pattern example
Procedural design versus Object design
Designing Distributed Object
Normalisation processes
126. 126
31/03/03
Thales Air Traffic Management
Separation Of Concern
Fault
Tolerance
Printer
Load
Balancing
Printer
Transaction
Printer
Security
Printer