SlideShare a Scribd company logo
1 of 136
Download to read offline
CORBA for transportation control and command systems tutorial
2
31/03/03
Thales Air Traffic Management
CORBA ATC use case, Note to offline reader.
! " # !
! # " #
$ % # " " ! ! & ' (
) " " # # "
% " & ! ( # #
! & ! * ) " " #
" ! " # ! ! % ! ! !
! " # ! ( % ! #
" " ' # " ( (
" ' " " # #
" " % ! #
3
31/03/03
Thales Air Traffic Management
The open issue :
$ #
+ "
" + ,
,
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
5
31/03/03
Thales Air Traffic Management
Why CORBA ?
) " " # ( " " !
( ( # - "
. /
0 ! ) " " #
( " " # !
( ( # - "
( ) "
6
31/03/03
Thales Air Traffic Management
Practical Use Case
0 # # !
+ + #
1 " + " 2(
! % ,
3 ! ! % ,
0 ( ,
2&
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
8
31/03/03
Thales Air Traffic Management
Object At system level ?
- " ! ) " " #
( ,
! ( " " ! !
) " ,
!
7
( !
# '! ) "
# (
! (
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
10
31/03/03
Thales Air Traffic Management
What Do We Want
& + + #
"
# " #
11
31/03/03
Thales Air Traffic Management
++
" #
What Do We Want !
Supervision
Operator
Display
System
12
31/03/03
Thales Air Traffic Management
#
#
++
" #
" #
++
What DO We Want !
Supervision
Operator
Display
System
13
31/03/03
Thales Air Traffic Management
#
#
" #
++
What DO We Want !
Supervision
Operator
Display
System
14
31/03/03
Thales Air Traffic Management
We want to Increase Integrated software quality
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
16
31/03/03
Thales Air Traffic Management
What We expect ?
0 !
#
#
" #
++
Supervision
Operator
Display
System
17
31/03/03
Thales Air Traffic Management
What We expect ?
8
+ #
18
31/03/03
Thales Air Traffic Management
What We May Have :
+ ( "
+ ( "
+ ( "
+ ( "
+ ( " 2
19
31/03/03
Thales Air Traffic Management
Spaghetti Plate Syndrome
8
"
20
31/03/03
Thales Air Traffic Management
Spaghetti Plate Syndrome
+ #
+ " "
21
31/03/03
Thales Air Traffic Management
Spaghetti Plate Syndrome
+ #
+ #
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
23
31/03/03
Thales Air Traffic Management
Why CORBA
0 !
( ( ! " #
!
) " + !
) " "
#
0 ) " '" #
( ( " "
24
31/03/03
Thales Air Traffic Management
Software Component Integration Bus
Software BUS
25
31/03/03
Thales Air Traffic Management
Object Software Component Integration Bus
"
) "
#
99:; (
!$ # #
Distributed
Polymorphism
Software Components
Evolution
And Replacement
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
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.
28
31/03/03
Thales Air Traffic Management
Object Software Component Integration Bus
Object Software BUS
29
31/03/03
Thales Air Traffic Management
Object Software Component Integration Bus
Object Software BUS
8 !
30
31/03/03
Thales Air Traffic Management
Procedural versus Object
Procedural Design Object Design
Before Object After Object
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
32
31/03/03
Thales Air Traffic Management
Design for changes
0 " > ( ?" # @
0 ( " # #
A ( #
(
0 ( " " #
0 " > A - (
# #
& # " #
# (
" #
33
31/03/03
Thales Air Traffic Management
-
" ( 0 0 #
2 (
" #
" " # 0
+ %
0 $ B 0 " (
# + ;
+ "
8
<. ! /
Changes Sources* During Development
34
31/03/03
Thales Air Traffic Management
Object Oriented Design
# # ! " " # & #
" ! ! "
) " # . / " -
. / " # " # "
! " # # & # "
0
" " " ! " ! " #
0
" " " ! "
35
31/03/03
Thales Air Traffic Management
Without OOD
Without OOD
Design for no Changes
Stationary System
36
31/03/03
Thales Air Traffic Management
Change management before OOD
# ( "
(
" # "
Caller called
37
31/03/03
Thales Air Traffic Management
Change management before OOD
0 ! " " "
( " # " " #
! " "
Caller called
No changes
38
31/03/03
Thales Air Traffic Management
Change management before OOD
! '! " "
" # " " " #
! "
Caller called
Changes
39
31/03/03
Thales Air Traffic Management
Change management and code reuse before OO
! '! " "
" # " " " #
! "
Caller called
40
31/03/03
Thales Air Traffic Management
System Integration is a specific change case
+ # " " # "
" # " ! "
0 ! " #
- (
! " " # "
" " "
Caller Called Caller Called
41
31/03/03
Thales Air Traffic Management
Integration case
+ # " " # "
" # " ! "
0 ! " #
- (
! " " # "
" " "
Caller Called Caller Called
New
Code
Old
Code
Old
Code
New
Code
42
31/03/03
Thales Air Traffic Management
Pervasive Change
Replaced Module (Changed)
43
31/03/03
Thales Air Traffic Management
Pervasive Change
44
31/03/03
Thales Air Traffic Management
Pervasive Change
45
31/03/03
Thales Air Traffic Management
Pervasive Change
Several Changes Replace and Reused
46
31/03/03
Thales Air Traffic Management
Pervasive Change = Spaghetti Plate
+ #
After Several Changes Replace and Reused
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
48
31/03/03
Thales Air Traffic Management
Change management with OO reuse
0 % ! " "
" ! " "
Caller called
OOD
49
31/03/03
Thales Air Traffic Management
Change management with OO reuse
0 % ! " "
" ! " "
Caller called
No changes
OOD
50
31/03/03
Thales Air Traffic Management
With OOD : Software Bus
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
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++
53
31/03/03
Thales Air Traffic Management
Changes example : the printer
3 " " & # " #
( "
# # ! "% !
# ( ' ! " #
( ( ?- "% @ ! " # ! " !
! "
54
31/03/03
Thales Air Traffic Management
Changes example : the printer
Client Printing Server
55
31/03/03
Thales Air Traffic Management
Changes example : the printer
Old Client Printing Server
New Client
56
31/03/03
Thales Air Traffic Management
Change management with OOD reuse
# # ! "% !
Client Printing Server
57
31/03/03
Thales Air Traffic Management
Change management with OOD reuse
3 ! " # ( ( ?- "% @ !
" # ! " ! ! "
Client Printing Server
58
31/03/03
Thales Air Traffic Management
Change management and code reuse before OOD
" " #
" ! ( " " #
59
31/03/03
Thales Air Traffic Management
Change management with OOD reuse
# ? ) " @ " ! "
" # ( "
60
31/03/03
Thales Air Traffic Management
Object properties
? ) " @ ! #
2 "
"
"
2&" #
" "
" ! #
" #
61
31/03/03
Thales Air Traffic Management
CORBA = Distributed Polymorphism
) " # # "
#
0 #
) " + ( " . + /
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
63
31/03/03
Thales Air Traffic Management
CORBA Distributed Polymorphism examples
2&
! + 8 # ( "
2& C
# + $ "
" " .1 /
2& D
#
64
31/03/03
Thales Air Traffic Management
Example UML Diagram
Strip
Strip : string
Print()
Strip : string
Print()
Printer
Print()Print()
Print
1
ColorPrinter
Setcolor()Setcolor()
From The CORBA Bible
Michi Henning
Steve Vinoski
Advanced CORBA
Programming with C++
65
31/03/03
Thales Air Traffic Management
Example Interface Inheritance (IDL)
!!!! """"
Printer
ColorPrinter
# "# "# "# "
66
31/03/03
Thales Air Traffic Management
printer
Printer
print()
&OLHQW
Colour
set_color()
67
31/03/03
Thales Air Traffic Management
printer
Printer
print()
&OLHQW
68
31/03/03
Thales Air Traffic Management
CORBA Distributed Polymorphism example 1
0
- &
8 #
+ ( "
Printer
69
31/03/03
Thales Air Traffic Management
CORBA = Distributed Polymorphism
? # ( " @
" "
# ( " # # " ""
8 # + ( " ( ! " #
! " # ( "
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
71
31/03/03
Thales Air Traffic Management
CORBA = Distributed Polymorphism
%
! ( " " #
"
8 ! " " ! "
! " "
72
31/03/03
Thales Air Traffic Management
CORBA = Distributed Polymorphism
0
- &
8 #
+ ( "
ColorPrinter
Printer+ " ! " #
"% 0
73
31/03/03
Thales Air Traffic Management
CORBA Distributed Polymorphism
0
- &
8 #
+ ( "
ColorPrinter
Printer+ " ! " #
74
31/03/03
Thales Air Traffic Management
printer
Printer
print()
&OLHQW
Colour
set_color()
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
76
31/03/03
Thales Air Traffic Management
We need design patterns
0 (
# " "
- #
#
" " ! " " # ! "
"
! % !
) " # #
77
31/03/03
Thales Air Traffic Management
Distributed Pattern
# # .1 / ) "
+
# ) " + ! # ! "
( " # "
2& " ! " " " ) "
! +
& ! "
+ " & # !
"
& # !
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.
79
31/03/03
Thales Air Traffic Management
Polymorphism and Factory Pattern : example 2
"
80
31/03/03
Thales Air Traffic Management
Life cycle
Printer FactoryClient Printer
Create Printer
Create Printer
Request
Printer IOR
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.
82
31/03/03
Thales Air Traffic Management
Polymorphism and Factory Pattern
"
83
31/03/03
Thales Air Traffic Management
Polymorphism and Factory Pattern
"
84
31/03/03
Thales Air Traffic Management
Factory And Code Generation
Printer
+print()
Black & White
+ print()
&OLHQW
85
31/03/03
Thales Air Traffic Management
Factory And Code Generation
Printer
+print()
&OLHQW
Black & White
+ print()
Colour
+ print()
86
31/03/03
Thales Air Traffic Management
Factory And Code Generation
Printer
+print()
Black & White
+ print()
&OLHQW
Colour
+ print()
FAX
+ print()
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
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
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
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
91
31/03/03
Thales Air Traffic Management
Why is procedural design expensive to change ?
" " "
#
" "
+ ! " # "
" #
92
31/03/03
Thales Air Traffic Management
Why is OOD easy to change ?
" ) " #
" "
2 " ) "
" #
) "
) "
" "
93
31/03/03
Thales Air Traffic Management
Object collaboration
94
31/03/03
Thales Air Traffic Management
Why is OOD easy to change ?
+ ! " #
! ) " " # !
" " ) " " #
" # " #
? @
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
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
}
97
31/03/03
Thales Air Traffic Management
Example of structural fragility : the switch
+ " + ! " " #
2( " # " # "
" # ! ! "
" " ! "
# % " # " E
2( ! ( " "" #
( ' ( ! " "" # (
0 ( " # (
" # ( ! ! " "
98
31/03/03
Thales Air Traffic Management
structural switch
static void printsStatus(int status) {
switch(status) {
case NIL_EXIT_STATE :
processing 1
case FLIGHT_ACTIVATION_PROPOSAL:
processing 2
case FLIGHT_ACTIVATION_ALARM:
processing 3
case FLIGHT_ACTIVATION_CONFIRMED:
processing 4
case HANDOVER_TRANSFERED,
processing 5
case COORDINATION_TERMINATED,
processing 6
case UNKNOWN_EXIT_STATE
processing 7
}
}
99
31/03/03
Thales Air Traffic Management
structural switch
static void flightUpdate(int status) {
switch(status) {
case NIL_EXIT_STATE :
processing 1
case FLIGHT_ACTIVATION_PROPOSAL:
processing 2
case FLIGHT_ACTIVATION_ALARM:
processing 3
case FLIGHT_ACTIVATION_CONFIRMED:
processing 4
case HANDOVER_TRANSFERED,
processing 5
case COORDINATION_TERMINATED,
processing 6
case UNKNOWN_EXIT_STATE
processing 7
}
}
100
31/03/03
Thales Air Traffic Management
structural switch
static void flightUpdate(int status) {
switch(status) {
case NIL_EXIT_STATE :
processing 1
case FLIGHT_ACTIVATION_PROPOSAL:
processing 2
case FLIGHT_ACTIVATION_ALARM:
processing 3
case FLIGHT_ACTIVATION_CONFIRMED:
processing 4
case HANDOVER_TRANSFERED,
processing 5
case COORDINATION_TERMINATED,
processing 6
case UNKNOWN_EXIT_STATE
processing 7
}
}
static void flightUpdate(int status) {
switch(status) {
case NIL_EXIT_STATE :
processing 1
case FLIGHT_ACTIVATION_PROPOSAL:
processing 2
case FLIGHT_ACTIVATION_ALARM:
processing 3
case FLIGHT_ACTIVATION_CONFIRMED:
processing 4
case HANDOVER_TRANSFERED,
processing 5
case COORDINATION_TERMINATED,
processing 6
case UNKNOWN_EXIT_STATE
processing 7
}
}
static void flightUpdate(int status) {
switch(status) {
case NIL_EXIT_STATE :
processing 1
case FLIGHT_ACTIVATION_PROPOSAL:
processing 2
case FLIGHT_ACTIVATION_ALARM:
processing 3
case FLIGHT_ACTIVATION_CONFIRMED:
processing 4
case HANDOVER_TRANSFERED,
processing 5
case COORDINATION_TERMINATED,
processing 6
case UNKNOWN_EXIT_STATE
processing 7
}
}
staticvoidflightUpdate(intstatus){
switch(status){
caseNIL_EXIT_STATE:
processing1
caseFLIGHT_ACTIVATION_PROPOSAL:
processing2
caseFLIGHT_ACTIVATION_ALARM:
processing3
caseFLIGHT_ACTIVATION_CONFIRMED:
processing4
caseHANDOVER_TRANSFERED,
processing5
caseCOORDINATION_TERMINATED,
processing 6
case UNKNOWN_EXIT_STATE
processing 7
}
}
static void flightUpdate(int status) {
switch(status) {
case NIL_EXIT_STATE :
processing 1
case FLIGHT_ACTIVATION_PROPOSAL:
processing 2
case FLIGHT_ACTIVATION_ALARM:
processing 3
case FLIGHT_ACTIVATION_CONFIRMED:
processing 4
case HANDOVER_TRANSFERED,
processing 5
case COORDINATION_TERMINATED,
processing 6
case UNKNOWN_EXIT_STATE
processing 7
}
}
Software
Module A
Software
Module B
Software
Module C
Software
Module D
Software
Module E
101
31/03/03
Thales Air Traffic Management
The problem space and the solution space.
! " ( " &
0 - ! " ( " #
( ! ! " (
102
31/03/03
Thales Air Traffic Management
User Imput
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: NewState
H: UNKNOWN_EXIT_STATE
Enter Exit Coordination State =>
103
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,
NewState,
UNKNOWN_EXIT_STATE
}
104
31/03/03
Thales Air Traffic Management
static void printsStatus(int status) {
switch(status) {
case NIL_EXIT_STATE :
processing 1
case FLIGHT_ACTIVATION_PROPOSAL:
processing 2
case FLIGHT_ACTIVATION_ALARM:
processing 3
case FLIGHT_ACTIVATION_CONFIRMED:
processing 4
case HANDOVER_TRANSFERED,
processing 5
case COORDINATION_TERMINATED,
processing 6
case New_State,
processing 7
case UNKNOWN_EXIT_STATE
processing 8
}
}
structural switch
105
31/03/03
Thales Air Traffic Management
structural switch
static void flightUpdate(int status) {
switch(status) {
case NIL_EXIT_STATE :
processing 1
case FLIGHT_ACTIVATION_PROPOSAL:
processing 2
case FLIGHT_ACTIVATION_ALARM:
processing 3
case FLIGHT_ACTIVATION_CONFIRMED:
processing 4
case HANDOVER_TRANSFERED,
processing 5
case COORDINATION_TERMINATED,
processing 6
case UNKNOWN_EXIT_STATE
processing 7
}
}
static void flightUpdate(int status) {
switch(status) {
case NIL_EXIT_STATE :
processing 1
case FLIGHT_ACTIVATION_PROPOSAL:
processing 2
case FLIGHT_ACTIVATION_ALARM:
processing 3
case FLIGHT_ACTIVATION_CONFIRMED:
processing 4
case HANDOVER_TRANSFERED,
processing 5
case COORDINATION_TERMINATED,
processing 6
case UNKNOWN_EXIT_STATE
processing 7
}
}
static void flightUpdate(int status) {
switch(status) {
case NIL_EXIT_STATE :
processing 1
case FLIGHT_ACTIVATION_PROPOSAL:
processing 2
case FLIGHT_ACTIVATION_ALARM:
processing 3
case FLIGHT_ACTIVATION_CONFIRMED:
processing 4
case HANDOVER_TRANSFERED,
processing 5
case COORDINATION_TERMINATED,
processing 6
case UNKNOWN_EXIT_STATE
processing 7
}
}
staticvoidflightUpdate(intstatus){
switch(status){
caseNIL_EXIT_STATE:
processing1
caseFLIGHT_ACTIVATION_PROPOSAL:
processing2
caseFLIGHT_ACTIVATION_ALARM:
processing3
caseFLIGHT_ACTIVATION_CONFIRMED:
processing4
caseHANDOVER_TRANSFERED,
processing5
caseCOORDINATION_TERMINATED,
processing 6
case UNKNOWN_EXIT_STATE
processing 7
}
}
static void flightUpdate(int status) {
switch(status) {
case NIL_EXIT_STATE :
processing 1
case FLIGHT_ACTIVATION_PROPOSAL:
processing 2
case FLIGHT_ACTIVATION_ALARM:
processing 3
case FLIGHT_ACTIVATION_CONFIRMED:
processing 4
case HANDOVER_TRANSFERED,
processing 5
case COORDINATION_TERMINATED,
processing 6
case UNKNOWN_EXIT_STATE
processing 7
}
}
Software
Module A
Software
Module B
Software
Module C
Software
Module D
Software
Module E
Changes
106
31/03/03
Thales Air Traffic Management
OOD hides the problem space
0 % " # " "
) "
3 ! 0
0
3 !
107
31/03/03
Thales Air Traffic Management
Polymorphism
Status
+print()
NIL_EXIT
_STATE
+ print()
Print()
Client
FLIGHT_ACTIVATION
_PROPOSAL
+ print()
FLIGHT_ACTIVATION
_ALARM
+ print()
UNKNOWN_EXI
T_STATE
+ print()
108
31/03/03
Thales Air Traffic Management
Factory Pattern
Status
+print()
NIL_EXIT
_STATE
+ print()
&OLHQW
FLIGHT_ACTIVATION
_PROPOSAL
+ print()
FLIGHT_ACTIVATION
_ALARM
+ print()
UNKNOWN_EXIT
_STATE
+ print()
StatusFactory
+ create()
109
31/03/03
Thales Air Traffic Management
Factory Pattern
! " ! ) " "
" ! ) " # (
" # ! " " # "
" ! " ) "
+
2 " ) " % ! ! # "
( " "
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
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
112
31/03/03
Thales Air Traffic Management
Polymorphism and state patterns
! ( ) " ! " " " # #
! (
"" # ) " !
+ ( ! " (
) " " # #
+ " ) " "
"
( "
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.
114
31/03/03
Thales Air Traffic Management
Object Programming
State2
Stat1
State4
+ #
State5
2& + F
G
115
31/03/03
Thales Air Traffic Management
State Pattern
" & ) " "
! " ) "
) " & ' # "
% ! ! # ' ! "
" ( "
116
31/03/03
Thales Air Traffic Management
Polymorphism
Status
+print()
NIL_EXIT
_STATE
+ print()
&OLHQW
FLIGHT_ACTIVATION
_PROPOSAL
+ print()
FLIGHT_ACTIVATION
_ALARM
+ print()
UNKNOWN_EXIT
_STATE
+ print()
117
31/03/03
Thales Air Traffic Management
Polymorphism
status
+print()
NIL_EXIT
_STATE
+ print()
&OLHQW
FLIGHT_ACTIVATION
_PROPOSAL
+ print()
FLIGHT_ACTIVATION
_ALARM
+ print()
UNKNOWN_EXIT
_STATE
+ print()
Status
+print()
Context
Concrete state
118
31/03/03
Thales Air Traffic Management
Coarse Grain Examples
& ( ' "
" # " "
" ' # ( ) " #
& " # &
+ ! ) " " # ) "
119
31/03/03
Thales Air Traffic Management
On line coordination with CORBA Objects
Air Traffic Control Centre
Status
Status
Status
Status
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
31/03/03
Thales Air Traffic Management
CORBA = Coarse Grain Object
Remote ObjectLocal Object
Operation1()
Operation2()
Operation3()
Operation4()
Fine Grain Object
NO
122
31/03/03
Thales Air Traffic Management
CORBA = Coarse Grain Object
Remote ObjectLocal Object
GroupOperation()
YES
123
31/03/03
Thales Air Traffic Management
Distributed Object Patterns
FaçadeLocal Object
Operation1()
Operation2()
Operation3()
Remote Object
GetRemoteObject()
H
$ " "
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
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
31/03/03
Thales Air Traffic Management
Separation Of Concern
Fault
Tolerance
Printer
Load
Balancing
Printer
Transaction
Printer
Security
Printer
127
31/03/03
Thales Air Traffic Management
Separation Of Concern
" " ! ( #
" " " "
" ) "
) "
" ) "
" ) "
" " !
" " ) "
"
128
31/03/03
Thales Air Traffic Management
Separation Of Concern
Security
Load
Balancing
Printer
Transaction
Fault
Tolerance
129
31/03/03
Thales Air Traffic Management
Separation Of Concern
Security Load
Balancing
Printer
Transaction
Fault
Tolerance
130
31/03/03
Thales Air Traffic Management
Separation Of Concern
Security
Load
Balancing
Printer Transaction
Fault
Tolerance
Domain
Services
Technical
Services
131
31/03/03
Thales Air Traffic Management
Y development cycle
"
$ " #
"
"
1 " !
!
132
31/03/03
Thales Air Traffic Management
Application Lay out
"
$ # "
" -
133
31/03/03
Thales Air Traffic Management
"
$ # "
" -
"
$ # "
Application Lay out
" " -
134
31/03/03
Thales Air Traffic Management
Application Lay out
" $ # "
" " -
"
" "
" "
" "
135
31/03/03
Thales Air Traffic Management
Y Standardization Process
" " " # !
#
" " ( # " ! "
" "
" "
0 ( ! "% ( A
"
136
31/03/03
Thales Air Traffic Management
Y Standardization Process
Domain Logic
Patterns
Domain Technical
Patterns
Transportation DTF

More Related Content

Similar to Distributed Object Systems

Matlab Based High Level Synthesis Engine for Area And Power Efficient Arithme...
Matlab Based High Level Synthesis Engine for Area And Power Efficient Arithme...Matlab Based High Level Synthesis Engine for Area And Power Efficient Arithme...
Matlab Based High Level Synthesis Engine for Area And Power Efficient Arithme...
ijceronline
 

Similar to Distributed Object Systems (20)

Matlab Based High Level Synthesis Engine for Area And Power Efficient Arithme...
Matlab Based High Level Synthesis Engine for Area And Power Efficient Arithme...Matlab Based High Level Synthesis Engine for Area And Power Efficient Arithme...
Matlab Based High Level Synthesis Engine for Area And Power Efficient Arithme...
 
Jfokus 2019-dowling-logical-clocks
Jfokus 2019-dowling-logical-clocksJfokus 2019-dowling-logical-clocks
Jfokus 2019-dowling-logical-clocks
 
ML and Data Science at Uber - GITPro talk 2017
ML and Data Science at Uber - GITPro talk 2017ML and Data Science at Uber - GITPro talk 2017
ML and Data Science at Uber - GITPro talk 2017
 
Serverless machine learning architectures at Helixa
Serverless machine learning architectures at HelixaServerless machine learning architectures at Helixa
Serverless machine learning architectures at Helixa
 
COMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a serviceCOMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a service
 
Building an Observability Platform in 389 Difficult Steps
Building an Observability Platform in 389 Difficult StepsBuilding an Observability Platform in 389 Difficult Steps
Building an Observability Platform in 389 Difficult Steps
 
DevOpsDaysRiga 2018: Anton Babenko - What you see is what you get… for AWS in...
DevOpsDaysRiga 2018: Anton Babenko - What you see is what you get… for AWS in...DevOpsDaysRiga 2018: Anton Babenko - What you see is what you get… for AWS in...
DevOpsDaysRiga 2018: Anton Babenko - What you see is what you get… for AWS in...
 
Source-to-source transformations: Supporting tools and infrastructure
Source-to-source transformations: Supporting tools and infrastructureSource-to-source transformations: Supporting tools and infrastructure
Source-to-source transformations: Supporting tools and infrastructure
 
Twitter's Real Time Stack - Processing Billions of Events Using Distributed L...
Twitter's Real Time Stack - Processing Billions of Events Using Distributed L...Twitter's Real Time Stack - Processing Billions of Events Using Distributed L...
Twitter's Real Time Stack - Processing Billions of Events Using Distributed L...
 
unit 2
unit 2unit 2
unit 2
 
KCD Italy 2022 - Application driven infrastructure with Crossplane
KCD Italy 2022 - Application driven infrastructure with CrossplaneKCD Italy 2022 - Application driven infrastructure with Crossplane
KCD Italy 2022 - Application driven infrastructure with Crossplane
 
Azure Cosmos DB - The Swiss Army NoSQL Cloud Database
Azure Cosmos DB - The Swiss Army NoSQL Cloud DatabaseAzure Cosmos DB - The Swiss Army NoSQL Cloud Database
Azure Cosmos DB - The Swiss Army NoSQL Cloud Database
 
The Art of Visualising Software - Simon Brown
The Art of Visualising Software - Simon BrownThe Art of Visualising Software - Simon Brown
The Art of Visualising Software - Simon Brown
 
CS304PC:Computer Organization and Architecture Session 12 Instruction Format...
CS304PC:Computer Organization and Architecture  Session 12 Instruction Format...CS304PC:Computer Organization and Architecture  Session 12 Instruction Format...
CS304PC:Computer Organization and Architecture Session 12 Instruction Format...
 
Lyft talks #4 Orchestrating big data and ML pipelines at Lyft
Lyft talks #4 Orchestrating big data and ML pipelines at LyftLyft talks #4 Orchestrating big data and ML pipelines at Lyft
Lyft talks #4 Orchestrating big data and ML pipelines at Lyft
 
Hardware-Software allocation specification of IMA systems for early simulation
Hardware-Software allocation specification of IMA systems for early simulationHardware-Software allocation specification of IMA systems for early simulation
Hardware-Software allocation specification of IMA systems for early simulation
 
Tutorial Expert How-To - Command Line Interface (CLI)
Tutorial Expert How-To - Command Line Interface (CLI)Tutorial Expert How-To - Command Line Interface (CLI)
Tutorial Expert How-To - Command Line Interface (CLI)
 
Deep dive into the native multi model database ArangoDB
Deep dive into the native multi model database ArangoDBDeep dive into the native multi model database ArangoDB
Deep dive into the native multi model database ArangoDB
 
Defense
DefenseDefense
Defense
 
Defense
DefenseDefense
Defense
 

More from Emmanuel Fuchs

CARDAMOM_CCM_Tutorial_Draft 2004
CARDAMOM_CCM_Tutorial_Draft 2004CARDAMOM_CCM_Tutorial_Draft 2004
CARDAMOM_CCM_Tutorial_Draft 2004
Emmanuel Fuchs
 
Executive Summary ITEA Roadmap 2
Executive Summary ITEA Roadmap 2Executive Summary ITEA Roadmap 2
Executive Summary ITEA Roadmap 2
Emmanuel Fuchs
 

More from Emmanuel Fuchs (20)

CARDAMOM_CCM_Tutorial_Draft 2004
CARDAMOM_CCM_Tutorial_Draft 2004CARDAMOM_CCM_Tutorial_Draft 2004
CARDAMOM_CCM_Tutorial_Draft 2004
 
Anootations IEEE 42010 : A Conceptual Model of Architecture Description
Anootations IEEE 42010 : A Conceptual Model of Architecture DescriptionAnootations IEEE 42010 : A Conceptual Model of Architecture Description
Anootations IEEE 42010 : A Conceptual Model of Architecture Description
 
Book Recommendations
 Book Recommendations Book Recommendations
Book Recommendations
 
PLUG : Presentation Layer Universal Generator
 PLUG : Presentation Layer Universal Generator PLUG : Presentation Layer Universal Generator
PLUG : Presentation Layer Universal Generator
 
PLUG : Presentation Layer Universal Generator
PLUG : Presentation Layer Universal GeneratorPLUG : Presentation Layer Universal Generator
PLUG : Presentation Layer Universal Generator
 
PLUG : Presentation Layer Universal Generator
 PLUG : Presentation Layer Universal Generator PLUG : Presentation Layer Universal Generator
PLUG : Presentation Layer Universal Generator
 
PLUG : Presentation Layer Universal Generator
PLUG : Presentation Layer Universal GeneratorPLUG : Presentation Layer Universal Generator
PLUG : Presentation Layer Universal Generator
 
UBSS2
UBSS2UBSS2
UBSS2
 
UBSS : Unix Based System Software
UBSS : Unix Based System SoftwareUBSS : Unix Based System Software
UBSS : Unix Based System Software
 
ISORC 1999 Panel III
ISORC 1999 Panel IIIISORC 1999 Panel III
ISORC 1999 Panel III
 
ISORC’99
ISORC’99ISORC’99
ISORC’99
 
Object-Oriented Real-Time Distributed Computing, 1999. (ISORC '99)
Object-Oriented Real-Time Distributed Computing, 1999. (ISORC '99)Object-Oriented Real-Time Distributed Computing, 1999. (ISORC '99)
Object-Oriented Real-Time Distributed Computing, 1999. (ISORC '99)
 
Distributed Object Computing
Distributed Object ComputingDistributed Object Computing
Distributed Object Computing
 
Hash map
Hash mapHash map
Hash map
 
ATM system history
ATM system historyATM system history
ATM system history
 
Middleware
MiddlewareMiddleware
Middleware
 
photoISEN 1987
photoISEN 1987photoISEN 1987
photoISEN 1987
 
EUROCAT
EUROCATEUROCAT
EUROCAT
 
Executive Summary ITEA Roadmap 2
Executive Summary ITEA Roadmap 2Executive Summary ITEA Roadmap 2
Executive Summary ITEA Roadmap 2
 
01_Program
01_Program01_Program
01_Program
 

Recently uploaded

Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak HamilCara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Kandungan 087776558899
 
Integrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - NeometrixIntegrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - Neometrix
Neometrix_Engineering_Pvt_Ltd
 
Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7
Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7
Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Hospital management system project report.pdf
Hospital management system project report.pdfHospital management system project report.pdf
Hospital management system project report.pdf
Kamal Acharya
 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ssuser89054b
 

Recently uploaded (20)

Linux Systems Programming: Inter Process Communication (IPC) using Pipes
Linux Systems Programming: Inter Process Communication (IPC) using PipesLinux Systems Programming: Inter Process Communication (IPC) using Pipes
Linux Systems Programming: Inter Process Communication (IPC) using Pipes
 
Theory of Time 2024 (Universal Theory for Everything)
Theory of Time 2024 (Universal Theory for Everything)Theory of Time 2024 (Universal Theory for Everything)
Theory of Time 2024 (Universal Theory for Everything)
 
FEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced Loads
FEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced LoadsFEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced Loads
FEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced Loads
 
Tamil Call Girls Bhayandar WhatsApp +91-9930687706, Best Service
Tamil Call Girls Bhayandar WhatsApp +91-9930687706, Best ServiceTamil Call Girls Bhayandar WhatsApp +91-9930687706, Best Service
Tamil Call Girls Bhayandar WhatsApp +91-9930687706, Best Service
 
PE 459 LECTURE 2- natural gas basic concepts and properties
PE 459 LECTURE 2- natural gas basic concepts and propertiesPE 459 LECTURE 2- natural gas basic concepts and properties
PE 459 LECTURE 2- natural gas basic concepts and properties
 
Max. shear stress theory-Maximum Shear Stress Theory ​ Maximum Distortional ...
Max. shear stress theory-Maximum Shear Stress Theory ​  Maximum Distortional ...Max. shear stress theory-Maximum Shear Stress Theory ​  Maximum Distortional ...
Max. shear stress theory-Maximum Shear Stress Theory ​ Maximum Distortional ...
 
Employee leave management system project.
Employee leave management system project.Employee leave management system project.
Employee leave management system project.
 
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak HamilCara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
 
Thermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VThermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - V
 
Computer Networks Basics of Network Devices
Computer Networks  Basics of Network DevicesComputer Networks  Basics of Network Devices
Computer Networks Basics of Network Devices
 
Integrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - NeometrixIntegrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - Neometrix
 
Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...
Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...
Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...
 
Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7
Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7
Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7
 
Electromagnetic relays used for power system .pptx
Electromagnetic relays used for power system .pptxElectromagnetic relays used for power system .pptx
Electromagnetic relays used for power system .pptx
 
Hospital management system project report.pdf
Hospital management system project report.pdfHospital management system project report.pdf
Hospital management system project report.pdf
 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 
School management system project Report.pdf
School management system project Report.pdfSchool management system project Report.pdf
School management system project Report.pdf
 
Computer Graphics Introduction To Curves
Computer Graphics Introduction To CurvesComputer Graphics Introduction To Curves
Computer Graphics Introduction To Curves
 
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
 
A Study of Urban Area Plan for Pabna Municipality
A Study of Urban Area Plan for Pabna MunicipalityA Study of Urban Area Plan for Pabna Municipality
A Study of Urban Area Plan for Pabna Municipality
 

Distributed Object Systems

  • 1. CORBA for transportation control and command systems tutorial
  • 2. 2 31/03/03 Thales Air Traffic Management CORBA ATC use case, Note to offline reader. ! " # ! ! # " # $ % # " " ! ! & ' ( ) " " # # " % " & ! ( # # ! & ! * ) " " # " ! " # ! ! % ! ! ! ! " # ! ( % ! # " " ' # " ( ( " ' " " # # " " % ! #
  • 3. 3 31/03/03 Thales Air Traffic Management The open issue : $ # + " " + , ,
  • 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
  • 5. 5 31/03/03 Thales Air Traffic Management Why CORBA ? ) " " # ( " " ! ( ( # - " . / 0 ! ) " " # ( " " # ! ( ( # - " ( ) "
  • 6. 6 31/03/03 Thales Air Traffic Management Practical Use Case 0 # # ! + + # 1 " + " 2( ! % , 3 ! ! % , 0 ( , 2&
  • 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
  • 8. 8 31/03/03 Thales Air Traffic Management Object At system level ? - " ! ) " " # ( , ! ( " " ! ! ) " , ! 7 ( ! # '! ) " # ( ! (
  • 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
  • 10. 10 31/03/03 Thales Air Traffic Management What Do We Want & + + # " # " #
  • 11. 11 31/03/03 Thales Air Traffic Management ++ " # What Do We Want ! Supervision Operator Display System
  • 12. 12 31/03/03 Thales Air Traffic Management # # ++ " # " # ++ What DO We Want ! Supervision Operator Display System
  • 13. 13 31/03/03 Thales Air Traffic Management # # " # ++ What DO We Want ! Supervision Operator Display System
  • 14. 14 31/03/03 Thales Air Traffic Management We want to Increase Integrated software quality
  • 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
  • 16. 16 31/03/03 Thales Air Traffic Management What We expect ? 0 ! # # " # ++ Supervision Operator Display System
  • 17. 17 31/03/03 Thales Air Traffic Management What We expect ? 8 + #
  • 18. 18 31/03/03 Thales Air Traffic Management What We May Have : + ( " + ( " + ( " + ( " + ( " 2
  • 19. 19 31/03/03 Thales Air Traffic Management Spaghetti Plate Syndrome 8 "
  • 20. 20 31/03/03 Thales Air Traffic Management Spaghetti Plate Syndrome + # + " "
  • 21. 21 31/03/03 Thales Air Traffic Management Spaghetti Plate Syndrome + # + #
  • 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
  • 23. 23 31/03/03 Thales Air Traffic Management Why CORBA 0 ! ( ( ! " # ! ) " + ! ) " " # 0 ) " '" # ( ( " "
  • 24. 24 31/03/03 Thales Air Traffic Management Software Component Integration Bus Software BUS
  • 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.
  • 28. 28 31/03/03 Thales Air Traffic Management Object Software Component Integration Bus Object Software BUS
  • 29. 29 31/03/03 Thales Air Traffic Management Object Software Component Integration Bus Object Software BUS 8 !
  • 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
  • 32. 32 31/03/03 Thales Air Traffic Management Design for changes 0 " > ( ?" # @ 0 ( " # # A ( # ( 0 ( " " # 0 " > A - ( # # & # " # # ( " #
  • 33. 33 31/03/03 Thales Air Traffic Management - " ( 0 0 # 2 ( " # " " # 0 + % 0 $ B 0 " ( # + ; + " 8 <. ! / Changes Sources* During Development
  • 34. 34 31/03/03 Thales Air Traffic Management Object Oriented Design # # ! " " # & # " ! ! " ) " # . / " - . / " # " # " ! " # # & # " 0 " " " ! " ! " # 0 " " " ! "
  • 35. 35 31/03/03 Thales Air Traffic Management Without OOD Without OOD Design for no Changes Stationary System
  • 36. 36 31/03/03 Thales Air Traffic Management Change management before OOD # ( " ( " # " Caller called
  • 37. 37 31/03/03 Thales Air Traffic Management Change management before OOD 0 ! " " " ( " # " " # ! " " Caller called No changes
  • 38. 38 31/03/03 Thales Air Traffic Management Change management before OOD ! '! " " " # " " " # ! " Caller called Changes
  • 39. 39 31/03/03 Thales Air Traffic Management Change management and code reuse before OO ! '! " " " # " " " # ! " Caller called
  • 40. 40 31/03/03 Thales Air Traffic Management System Integration is a specific change case + # " " # " " # " ! " 0 ! " # - ( ! " " # " " " " Caller Called Caller Called
  • 41. 41 31/03/03 Thales Air Traffic Management Integration case + # " " # " " # " ! " 0 ! " # - ( ! " " # " " " " Caller Called Caller Called New Code Old Code Old Code New Code
  • 42. 42 31/03/03 Thales Air Traffic Management Pervasive Change Replaced Module (Changed)
  • 43. 43 31/03/03 Thales Air Traffic Management Pervasive Change
  • 44. 44 31/03/03 Thales Air Traffic Management Pervasive Change
  • 45. 45 31/03/03 Thales Air Traffic Management Pervasive Change Several Changes Replace and Reused
  • 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
  • 48. 48 31/03/03 Thales Air Traffic Management Change management with OO reuse 0 % ! " " " ! " " Caller called OOD
  • 49. 49 31/03/03 Thales Air Traffic Management Change management with OO reuse 0 % ! " " " ! " " Caller called No changes OOD
  • 50. 50 31/03/03 Thales Air Traffic Management With OOD : Software Bus
  • 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++
  • 53. 53 31/03/03 Thales Air Traffic Management Changes example : the printer 3 " " & # " # ( " # # ! "% ! # ( ' ! " # ( ( ?- "% @ ! " # ! " ! ! "
  • 54. 54 31/03/03 Thales Air Traffic Management Changes example : the printer Client Printing Server
  • 55. 55 31/03/03 Thales Air Traffic Management Changes example : the printer Old Client Printing Server New Client
  • 56. 56 31/03/03 Thales Air Traffic Management Change management with OOD reuse # # ! "% ! Client Printing Server
  • 57. 57 31/03/03 Thales Air Traffic Management Change management with OOD reuse 3 ! " # ( ( ?- "% @ ! " # ! " ! ! " Client Printing Server
  • 58. 58 31/03/03 Thales Air Traffic Management Change management and code reuse before OOD " " # " ! ( " " #
  • 59. 59 31/03/03 Thales Air Traffic Management Change management with OOD reuse # ? ) " @ " ! " " # ( "
  • 60. 60 31/03/03 Thales Air Traffic Management Object properties ? ) " @ ! # 2 " " " 2&" # " " " ! # " #
  • 61. 61 31/03/03 Thales Air Traffic Management CORBA = Distributed Polymorphism ) " # # " # 0 # ) " + ( " . + /
  • 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
  • 63. 63 31/03/03 Thales Air Traffic Management CORBA Distributed Polymorphism examples 2& ! + 8 # ( " 2& C # + $ " " " .1 / 2& D #
  • 64. 64 31/03/03 Thales Air Traffic Management Example UML Diagram Strip Strip : string Print() Strip : string Print() Printer Print()Print() Print 1 ColorPrinter Setcolor()Setcolor() From The CORBA Bible Michi Henning Steve Vinoski Advanced CORBA Programming with C++
  • 65. 65 31/03/03 Thales Air Traffic Management Example Interface Inheritance (IDL) !!!! """" Printer ColorPrinter # "# "# "# "
  • 66. 66 31/03/03 Thales Air Traffic Management printer Printer print() &OLHQW Colour set_color()
  • 67. 67 31/03/03 Thales Air Traffic Management printer Printer print() &OLHQW
  • 68. 68 31/03/03 Thales Air Traffic Management CORBA Distributed Polymorphism example 1 0 - & 8 # + ( " Printer
  • 69. 69 31/03/03 Thales Air Traffic Management CORBA = Distributed Polymorphism ? # ( " @ " " # ( " # # " "" 8 # + ( " ( ! " # ! " # ( "
  • 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
  • 71. 71 31/03/03 Thales Air Traffic Management CORBA = Distributed Polymorphism % ! ( " " # " 8 ! " " ! " ! " "
  • 72. 72 31/03/03 Thales Air Traffic Management CORBA = Distributed Polymorphism 0 - & 8 # + ( " ColorPrinter Printer+ " ! " # "% 0
  • 73. 73 31/03/03 Thales Air Traffic Management CORBA Distributed Polymorphism 0 - & 8 # + ( " ColorPrinter Printer+ " ! " #
  • 74. 74 31/03/03 Thales Air Traffic Management printer Printer print() &OLHQW Colour set_color()
  • 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
  • 76. 76 31/03/03 Thales Air Traffic Management We need design patterns 0 ( # " " - # # " " ! " " # ! " " ! % ! ) " # #
  • 77. 77 31/03/03 Thales Air Traffic Management Distributed Pattern # # .1 / ) " + # ) " + ! # ! " ( " # " 2& " ! " " " ) " ! + & ! " + " & # ! " & # !
  • 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.
  • 79. 79 31/03/03 Thales Air Traffic Management Polymorphism and Factory Pattern : example 2 "
  • 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.
  • 82. 82 31/03/03 Thales Air Traffic Management Polymorphism and Factory Pattern "
  • 83. 83 31/03/03 Thales Air Traffic Management Polymorphism and Factory Pattern "
  • 84. 84 31/03/03 Thales Air Traffic Management Factory And Code Generation Printer +print() Black & White + print() &OLHQW
  • 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
  • 91. 91 31/03/03 Thales Air Traffic Management Why is procedural design expensive to change ? " " " # " " + ! " # " " #
  • 92. 92 31/03/03 Thales Air Traffic Management Why is OOD easy to change ? " ) " # " " 2 " ) " " # ) " ) " " "
  • 93. 93 31/03/03 Thales Air Traffic Management Object collaboration
  • 94. 94 31/03/03 Thales Air Traffic Management Why is OOD easy to change ? + ! " # ! ) " " # ! " " ) " " # " # " # ? @
  • 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 }
  • 97. 97 31/03/03 Thales Air Traffic Management Example of structural fragility : the switch + " + ! " " # 2( " # " # " " # ! ! " " " ! " # % " # " E 2( ! ( " "" # ( ' ( ! " "" # ( 0 ( " # ( " # ( ! ! " "
  • 98. 98 31/03/03 Thales Air Traffic Management structural switch static void printsStatus(int status) { switch(status) { case NIL_EXIT_STATE : processing 1 case FLIGHT_ACTIVATION_PROPOSAL: processing 2 case FLIGHT_ACTIVATION_ALARM: processing 3 case FLIGHT_ACTIVATION_CONFIRMED: processing 4 case HANDOVER_TRANSFERED, processing 5 case COORDINATION_TERMINATED, processing 6 case UNKNOWN_EXIT_STATE processing 7 } }
  • 99. 99 31/03/03 Thales Air Traffic Management structural switch static void flightUpdate(int status) { switch(status) { case NIL_EXIT_STATE : processing 1 case FLIGHT_ACTIVATION_PROPOSAL: processing 2 case FLIGHT_ACTIVATION_ALARM: processing 3 case FLIGHT_ACTIVATION_CONFIRMED: processing 4 case HANDOVER_TRANSFERED, processing 5 case COORDINATION_TERMINATED, processing 6 case UNKNOWN_EXIT_STATE processing 7 } }
  • 100. 100 31/03/03 Thales Air Traffic Management structural switch static void flightUpdate(int status) { switch(status) { case NIL_EXIT_STATE : processing 1 case FLIGHT_ACTIVATION_PROPOSAL: processing 2 case FLIGHT_ACTIVATION_ALARM: processing 3 case FLIGHT_ACTIVATION_CONFIRMED: processing 4 case HANDOVER_TRANSFERED, processing 5 case COORDINATION_TERMINATED, processing 6 case UNKNOWN_EXIT_STATE processing 7 } } static void flightUpdate(int status) { switch(status) { case NIL_EXIT_STATE : processing 1 case FLIGHT_ACTIVATION_PROPOSAL: processing 2 case FLIGHT_ACTIVATION_ALARM: processing 3 case FLIGHT_ACTIVATION_CONFIRMED: processing 4 case HANDOVER_TRANSFERED, processing 5 case COORDINATION_TERMINATED, processing 6 case UNKNOWN_EXIT_STATE processing 7 } } static void flightUpdate(int status) { switch(status) { case NIL_EXIT_STATE : processing 1 case FLIGHT_ACTIVATION_PROPOSAL: processing 2 case FLIGHT_ACTIVATION_ALARM: processing 3 case FLIGHT_ACTIVATION_CONFIRMED: processing 4 case HANDOVER_TRANSFERED, processing 5 case COORDINATION_TERMINATED, processing 6 case UNKNOWN_EXIT_STATE processing 7 } } staticvoidflightUpdate(intstatus){ switch(status){ caseNIL_EXIT_STATE: processing1 caseFLIGHT_ACTIVATION_PROPOSAL: processing2 caseFLIGHT_ACTIVATION_ALARM: processing3 caseFLIGHT_ACTIVATION_CONFIRMED: processing4 caseHANDOVER_TRANSFERED, processing5 caseCOORDINATION_TERMINATED, processing 6 case UNKNOWN_EXIT_STATE processing 7 } } static void flightUpdate(int status) { switch(status) { case NIL_EXIT_STATE : processing 1 case FLIGHT_ACTIVATION_PROPOSAL: processing 2 case FLIGHT_ACTIVATION_ALARM: processing 3 case FLIGHT_ACTIVATION_CONFIRMED: processing 4 case HANDOVER_TRANSFERED, processing 5 case COORDINATION_TERMINATED, processing 6 case UNKNOWN_EXIT_STATE processing 7 } } Software Module A Software Module B Software Module C Software Module D Software Module E
  • 101. 101 31/03/03 Thales Air Traffic Management The problem space and the solution space. ! " ( " & 0 - ! " ( " # ( ! ! " (
  • 102. 102 31/03/03 Thales Air Traffic Management User Imput 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: NewState H: UNKNOWN_EXIT_STATE Enter Exit Coordination State =>
  • 103. 103 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, NewState, UNKNOWN_EXIT_STATE }
  • 104. 104 31/03/03 Thales Air Traffic Management static void printsStatus(int status) { switch(status) { case NIL_EXIT_STATE : processing 1 case FLIGHT_ACTIVATION_PROPOSAL: processing 2 case FLIGHT_ACTIVATION_ALARM: processing 3 case FLIGHT_ACTIVATION_CONFIRMED: processing 4 case HANDOVER_TRANSFERED, processing 5 case COORDINATION_TERMINATED, processing 6 case New_State, processing 7 case UNKNOWN_EXIT_STATE processing 8 } } structural switch
  • 105. 105 31/03/03 Thales Air Traffic Management structural switch static void flightUpdate(int status) { switch(status) { case NIL_EXIT_STATE : processing 1 case FLIGHT_ACTIVATION_PROPOSAL: processing 2 case FLIGHT_ACTIVATION_ALARM: processing 3 case FLIGHT_ACTIVATION_CONFIRMED: processing 4 case HANDOVER_TRANSFERED, processing 5 case COORDINATION_TERMINATED, processing 6 case UNKNOWN_EXIT_STATE processing 7 } } static void flightUpdate(int status) { switch(status) { case NIL_EXIT_STATE : processing 1 case FLIGHT_ACTIVATION_PROPOSAL: processing 2 case FLIGHT_ACTIVATION_ALARM: processing 3 case FLIGHT_ACTIVATION_CONFIRMED: processing 4 case HANDOVER_TRANSFERED, processing 5 case COORDINATION_TERMINATED, processing 6 case UNKNOWN_EXIT_STATE processing 7 } } static void flightUpdate(int status) { switch(status) { case NIL_EXIT_STATE : processing 1 case FLIGHT_ACTIVATION_PROPOSAL: processing 2 case FLIGHT_ACTIVATION_ALARM: processing 3 case FLIGHT_ACTIVATION_CONFIRMED: processing 4 case HANDOVER_TRANSFERED, processing 5 case COORDINATION_TERMINATED, processing 6 case UNKNOWN_EXIT_STATE processing 7 } } staticvoidflightUpdate(intstatus){ switch(status){ caseNIL_EXIT_STATE: processing1 caseFLIGHT_ACTIVATION_PROPOSAL: processing2 caseFLIGHT_ACTIVATION_ALARM: processing3 caseFLIGHT_ACTIVATION_CONFIRMED: processing4 caseHANDOVER_TRANSFERED, processing5 caseCOORDINATION_TERMINATED, processing 6 case UNKNOWN_EXIT_STATE processing 7 } } static void flightUpdate(int status) { switch(status) { case NIL_EXIT_STATE : processing 1 case FLIGHT_ACTIVATION_PROPOSAL: processing 2 case FLIGHT_ACTIVATION_ALARM: processing 3 case FLIGHT_ACTIVATION_CONFIRMED: processing 4 case HANDOVER_TRANSFERED, processing 5 case COORDINATION_TERMINATED, processing 6 case UNKNOWN_EXIT_STATE processing 7 } } Software Module A Software Module B Software Module C Software Module D Software Module E Changes
  • 106. 106 31/03/03 Thales Air Traffic Management OOD hides the problem space 0 % " # " " ) " 3 ! 0 0 3 !
  • 107. 107 31/03/03 Thales Air Traffic Management Polymorphism Status +print() NIL_EXIT _STATE + print() Print() Client FLIGHT_ACTIVATION _PROPOSAL + print() FLIGHT_ACTIVATION _ALARM + print() UNKNOWN_EXI T_STATE + print()
  • 108. 108 31/03/03 Thales Air Traffic Management Factory Pattern Status +print() NIL_EXIT _STATE + print() &OLHQW FLIGHT_ACTIVATION _PROPOSAL + print() FLIGHT_ACTIVATION _ALARM + print() UNKNOWN_EXIT _STATE + print() StatusFactory + create()
  • 109. 109 31/03/03 Thales Air Traffic Management Factory Pattern ! " ! ) " " " ! ) " # ( " # ! " " # " " ! " ) " + 2 " ) " % ! ! # " ( " "
  • 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
  • 112. 112 31/03/03 Thales Air Traffic Management Polymorphism and state patterns ! ( ) " ! " " " # # ! ( "" # ) " ! + ( ! " ( ) " " # # + " ) " " " ( "
  • 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.
  • 114. 114 31/03/03 Thales Air Traffic Management Object Programming State2 Stat1 State4 + # State5 2& + F G
  • 115. 115 31/03/03 Thales Air Traffic Management State Pattern " & ) " " ! " ) " ) " & ' # " % ! ! # ' ! " " ( "
  • 116. 116 31/03/03 Thales Air Traffic Management Polymorphism Status +print() NIL_EXIT _STATE + print() &OLHQW FLIGHT_ACTIVATION _PROPOSAL + print() FLIGHT_ACTIVATION _ALARM + print() UNKNOWN_EXIT _STATE + print()
  • 117. 117 31/03/03 Thales Air Traffic Management Polymorphism status +print() NIL_EXIT _STATE + print() &OLHQW FLIGHT_ACTIVATION _PROPOSAL + print() FLIGHT_ACTIVATION _ALARM + print() UNKNOWN_EXIT _STATE + print() Status +print() Context Concrete state
  • 118. 118 31/03/03 Thales Air Traffic Management Coarse Grain Examples & ( ' " " # " " " ' # ( ) " # & " # & + ! ) " " # ) "
  • 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
  • 122. 122 31/03/03 Thales Air Traffic Management CORBA = Coarse Grain Object Remote ObjectLocal Object GroupOperation() YES
  • 123. 123 31/03/03 Thales Air Traffic Management Distributed Object Patterns FaçadeLocal Object Operation1() Operation2() Operation3() Remote Object GetRemoteObject() H $ " "
  • 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
  • 127. 127 31/03/03 Thales Air Traffic Management Separation Of Concern " " ! ( # " " " " " ) " ) " " ) " " ) " " " ! " " ) " "
  • 128. 128 31/03/03 Thales Air Traffic Management Separation Of Concern Security Load Balancing Printer Transaction Fault Tolerance
  • 129. 129 31/03/03 Thales Air Traffic Management Separation Of Concern Security Load Balancing Printer Transaction Fault Tolerance
  • 130. 130 31/03/03 Thales Air Traffic Management Separation Of Concern Security Load Balancing Printer Transaction Fault Tolerance Domain Services Technical Services
  • 131. 131 31/03/03 Thales Air Traffic Management Y development cycle " $ " # " " 1 " ! !
  • 132. 132 31/03/03 Thales Air Traffic Management Application Lay out " $ # " " -
  • 133. 133 31/03/03 Thales Air Traffic Management " $ # " " - " $ # " Application Lay out " " -
  • 134. 134 31/03/03 Thales Air Traffic Management Application Lay out " $ # " " " - " " " " " " "
  • 135. 135 31/03/03 Thales Air Traffic Management Y Standardization Process " " " # ! # " " ( # " ! " " " " " 0 ( ! "% ( A "
  • 136. 136 31/03/03 Thales Air Traffic Management Y Standardization Process Domain Logic Patterns Domain Technical Patterns Transportation DTF