3. The open issue :
$ #
+ quot;
quot; + ,
,
31/03/03
Thales Air Traffic Management
3
4. 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
31/03/03
Normalisation processes
Thales Air Traffic Management
4
7. Complex system : ATC center
AFTN/CIDIN
ATFM
ADJACENT
FIR'S/TWR'S
MET Centres
Supervisory Recording
Radar Front Radar Data Flight Plan Simulator
Control
Supervisory Replay
Processing Processing Recording
Processing
Radar Front Radar Data Flight Plan Simulator
Control Replay
Processing Processing Processing
LAN
Voice control
controller controller controller
controller and
Voice control
Working Working Working
Working communications
and
Position Position Position
Position communications
• Intercom
• Priority
• Public
4 56
31/03/03
• RADIO A/G
Thales Air Traffic Management
7
9. 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
31/03/03
Normalisation processes
Thales Air Traffic Management
9
10. What Do We Want
&+ + #
quot;
# quot; #
31/03/03
Thales Air Traffic Management
10
11. What Do We Want !
quot; #
+ +
Operator
Display
Supervision
31/03/03
System
Thales Air Traffic Management
11
12. What DO We Want !
quot; #
quot; #
#
#
+ +
+ +
Operator
Display
Supervision
31/03/03
System
Thales Air Traffic Management
12
13. What DO We Want !
quot; #
#
#
+ +
Operator
Display
Supervision
31/03/03
System
Thales Air Traffic Management
13
14. We want to Increase Integrated software quality
31/03/03
Thales Air Traffic Management
14
15. 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
31/03/03
Normalisation processes
Thales Air Traffic Management
15
16. What We expect ?
0 !
quot; #
#
#
+ +
Operator
Display
Supervision
31/03/03
System
Thales Air Traffic Management
16
17. What We expect ?
8
+ #
31/03/03
Thales Air Traffic Management
17
18. What We May Have :
+ (quot;
+ (quot;
+ (quot;
+ (quot;
+ (quot; 2
31/03/03
Thales Air Traffic Management
18
22. 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
31/03/03
Normalisation processes
Thales Air Traffic Management
22
25. Object Software Component Integration Bus
# $ # # !
Distributed
)quot; 99:; ( Polymorphism
quot;
Software Components
Evolution
And Replacement
31/03/03
Thales Air Traffic Management
25
26. 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
31/03/03
Normalisation processes
Thales Air Traffic Management
26
27. Polymorphism
1 < '
)quot; quot; # quot; *
( !
quot;
0 ! ! quot;
=
*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.
31/03/03
Thales Air Traffic Management
27
28. Object Software Component Integration Bus
Object Software BUS
31/03/03
Thales Air Traffic Management
28
29. Object Software Component Integration Bus
8!
Object Software BUS
31/03/03
Thales Air Traffic Management
29
30. Procedural versus Object
Procedural Design Object Design
After Object
Before Object
31/03/03
Thales Air Traffic Management
30
31. 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
31/03/03
Normalisation processes
Thales Air Traffic Management
31
35. Without OOD
Without OOD
Design for no Changes
Stationary System
31/03/03
Thales Air Traffic Management
35
36. Change management before OOD
#( quot;
(
quot; # quot;
Caller called
31/03/03
Thales Air Traffic Management
36
37. Change management before OOD
0 ! quot; quot; quot;
( quot; # quot; quot; #
!quot; quot;
No changes
Caller called
31/03/03
Thales Air Traffic Management
37
38. Change management before OOD
! '! quot; quot;
quot; # quot; quot; quot; #
!quot;
Changes
31/03/03
Caller called
Thales Air Traffic Management
38
39. Change management and code reuse before OO
! '! quot; quot;
quot; # quot; quot; quot; #
!quot;
Caller called
31/03/03
Thales Air Traffic Management
39
40. System Integration is a specific change case
+ # quot; quot; #quot;
quot;# quot; !quot;
0 !quot; #
-(
!quot; quot; # quot;
quot; quot; quot;
Caller
Called
Caller Called
31/03/03
Thales Air Traffic Management
40
41. Integration case
+ # quot; quot; #quot;
quot;# quot; !quot;
0 !quot; #
-(
!quot; quot; # quot;
quot; quot; quot;
Old New
Old
New
Code Code
Code
Code
Caller
Called Called
Caller
31/03/03
Thales Air Traffic Management
41
45. Pervasive Change
Several Changes Replace and Reused
31/03/03
Thales Air Traffic Management
45
46. Pervasive Change = Spaghetti Plate
After Several Changes Replace and Reused
+ #
31/03/03
Thales Air Traffic Management
46
47. Procedural versus Object
Without OOD With OOD
Design for no Changes Design For Changes
Stationary System Evolutionary System
31/03/03
Thales Air Traffic Management
47
48. Change management with OO reuse
0 % ! quot; quot;
quot; !quot; quot;
OOD
Caller called
31/03/03
Thales Air Traffic Management
48
49. Change management with OO reuse
0 % ! quot; quot;
quot; !quot; quot;
No changes
Caller called
OOD
31/03/03
Thales Air Traffic Management
49
50. With OOD : Software Bus
31/03/03
Thales Air Traffic Management
50
51. 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
31/03/03
Normalisation processes
Thales Air Traffic Management
51
52. Changes example : the printer
Client Printing Server
From The CORBA Bible
Michi Henning
Steve Vinoski
Advanced CORBA
Programming with C++
31/03/03
Thales Air Traffic Management
52
62. 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
31/03/03
Normalisation processes
Thales Air Traffic Management
62
63. CORBA Distributed Polymorphism examples
2&
! +8 # (quot;
2& C
# +$ quot;
quot; quot; .1 /
2& D
#
31/03/03
Thales Air Traffic Management
63
64. Example UML Diagram
Print
Strip Printer
1
Strip : string
Print()
Print()
From The CORBA Bible
Michi Henning
Steve Vinoski ColorPrinter
Advanced CORBA
Programming with C++
Setcolor()
31/03/03
Thales Air Traffic Management
64
70. Objet Reference and Naming
Client Naming Server
Service
Client lookup
Server exports
for Interface IOR
IOR
Client submits
request to server
31/03/03
Thales Air Traffic Management
70
75. 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
31/03/03
Normalisation processes
Thales Air Traffic Management
75
78. 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,
31/03/03
Ralph Johnson. Design Patterns: Elements of Reusable Object-Oriented Software.
Thales Air Traffic Management
78
80. Life cycle
Printer Factory
Client Printer
Create Printer
Create Printer
Printer IOR
Request
31/03/03
Thales Air Traffic Management
80
81. FACTOY PATTERN (from OOC training)
quot; quot; ! (
'quot; # !#
+quot;
A client is required to provide security information before the
factory object will allow the client to have access to another
object.
$ * quot;#
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
31/03/03
the criteria specified by a client.
Thales Air Traffic Management
81
84. Factory And Code Generation
&OLHQW Printer
+print()
Black & White
+ print()
31/03/03
Thales Air Traffic Management
84
85. Factory And Code Generation
&OLHQW Printer
+print()
Black & White Colour
+ print() + print()
31/03/03
Thales Air Traffic Management
85
86. Factory And Code Generation
&OLHQW Printer
+print()
Black & White Colour FAX
+ print() + print() + print()
31/03/03
Thales Air Traffic Management
86
87. Factory And Code Generation
&OLHQW Printer
+print()
Strip
Black & White Colour FAX
+ print()
+ print() + print() + print()
31/03/03
Thales Air Traffic Management
87
88. Factory And Code Generation
<<Interface>>
&OLHQW
Printer
+print()
Strip
Black & White Colour FAX
+ print()
+ print() + print() + print()
31/03/03
Thales Air Traffic Management
88
89. Factory And Code Generation
<<Interface>>
&OLHQW
Printer Factory
Strip
Black & White Colour FAX
Factory
Factory Factory Factory
1 quot;
31/03/03
Thales Air Traffic Management
89
90. 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
31/03/03
Normalisation processes
Thales Air Traffic Management
90
91. Why is procedural design expensive to change ?
quot; quot; quot;
#
quot; quot;
+ ! quot; # quot;
quot; #
31/03/03
Thales Air Traffic Management
91
92. Why is OOD easy to change ?
quot; )quot; #
quot; quot;
2quot; )quot;
quot; #
)quot;
)quot;
quot; quot;
31/03/03
Thales Air Traffic Management
92
95. 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 =>
31/03/03
Thales Air Traffic Management
95
96. 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
}
31/03/03
Thales Air Traffic Management
96
110. Factory pseudo code
static Status create(int status) {
New Object
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();
31/03/03
}
}
Thales Air Traffic Management
110
111. Polymorphism and changes
&OLHQW Status
+print()
No Changes
UNKNOWN_EXIT
NIL_EXIT FLIGHT_ACTIVATION FLIGHT_ACTIVATION
_STATE _PROPOSAL _ALARM _STATE
+ print()
+ print() + print() + print()
NEW_STATE
31/03/03
+ print()
Thales Air Traffic Management
111
113. State Pattern (from the GoF)
31/03/03
GoF stand for Gang of Four. It refers to the famous books of Vlisside and Co.
Design Patterns: Elements of Reusable Object-Oriented Software.
Thales Air Traffic Management
113
114. Object Programming
Stat1
2& + F
State2 State4
State5
G
+ #
31/03/03
Thales Air Traffic Management
114
119. On line coordination with CORBA Objects
Status
Status
Status
Status
31/03/03
Air Traffic Control Centre
Thales Air Traffic Management
119
120. 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
31/03/03
Normalisation processes
Thales Air Traffic Management
120
121. CORBA = Coarse Grain Object
Local Object Remote Object
NO
Operation1()
Operation2()
Fine Grain Object
Operation3()
Operation4()
31/03/03
Thales Air Traffic Management
121
122. CORBA = Coarse Grain Object
Local Object Remote Object
GroupOperation()
YES
31/03/03
Thales Air Traffic Management
122
123. Distributed Object Patterns
Façade Remote Object
Local Object
GetRemoteObject()
H
Operation1() $quot; quot;
Operation2()
Operation3()
31/03/03
Thales Air Traffic Management
123
124. Object By Value
Event Factory
Local Object Remote Object
$quot; )quot;
OBV
new
Event Type
Operation1()
Operation2()
Operation3()
31/03/03
Thales Air Traffic Management
124
125. 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
31/03/03
Normalisation processes
Thales Air Traffic Management
125
126. Separation Of Concern
Security Fault Load Transaction
Tolerance Balancing
Printer Printer Printer
Printer
31/03/03
Thales Air Traffic Management
126