CORBA tutorial Boston2003

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

1 comments

Comments 1 - 1 of 1 previous next Post a comment

  • + anghlis anghlis 1 week ago
    why do we need to develop fault tolerence,load balancing seperatly
Post a comment
Embed Video
Edit your comment Cancel

1 Favorite

CORBA tutorial Boston2003 - Presentation Transcript

  1. CORBA for transportation control and command systems tutorial
  2. CORBA ATC use case, Note to offline reader. ! \" # ! ! # \" # $% # \" \"! ! & ' ( )\" \" # # \" % \" & ! ( # # ! & ! * )\" \" # \" ! \" # ! ! % !! ! ! \" # ! ( % ! # \" \" ' # \" ( ( \" ' \" \" # # \" \" % ! # 31/03/03 Thales Air Traffic Management 2
  3. The open issue : $ # + \" \" + , , 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
  5. Why CORBA ? )\" \" # (\" \" ! ( ( # - \" . / 0 ! )\" \" # (\" \" # ! ( ( # - \" ( )\" 31/03/03 Thales Air Traffic Management 5
  6. Practical Use Case 0 # # ! + + # 1 \" + \" 2( ! %, 3! ! %, 0 ( , 2& 31/03/03 Thales Air Traffic Management 6
  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
  8. Object At system level ? - \" ! )\" \" # ( , ! (\" \" ! ! )\" , ! 7 ( ! # '! )\" #( ! ( 31/03/03 Thales Air Traffic Management 8
  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 &+ + # \" # \" # 31/03/03 Thales Air Traffic Management 10
  11. What Do We Want ! \" # + + Operator Display Supervision 31/03/03 System Thales Air Traffic Management 11
  12. What DO We Want ! \" # \" # # # + + + + Operator Display Supervision 31/03/03 System Thales Air Traffic Management 12
  13. What DO We Want ! \" # # # + + 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 ! \" # # # + + 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 : + (\" + (\" + (\" + (\" + (\" 2 31/03/03 Thales Air Traffic Management 18
  19. Spaghetti Plate Syndrome 8 \" 31/03/03 Thales Air Traffic Management 19
  20. Spaghetti Plate Syndrome + \" \" + # 31/03/03 Thales Air Traffic Management 20
  21. Spaghetti Plate Syndrome + # + # 31/03/03 Thales Air Traffic Management 21
  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
  23. Why CORBA 0 ! ( ( ! \" # ! )\" + ! )\" \" # 0 ) \" '\" # ( ( \" \" 31/03/03 Thales Air Traffic Management 23
  24. Software Component Integration Bus Software BUS 31/03/03 Thales Air Traffic Management 24
  25. Object Software Component Integration Bus # $ # # ! Distributed )\" 99:; ( Polymorphism \" 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 < ' )\" \" # \" * ( ! \" 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. 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
  32. Design for changes 0 \" > ( ?\" # @ 0 ( \" # # A ( # ( 0 ( \" \" # 0 \" > A - ( # # & # \" # # ( \" # 31/03/03 Thales Air Traffic Management 32
  33. Changes Sources* During Development - \"( 0 0 # 2 ( \" # \" \" #0 +% 0 $ B 0 \"( # + ; + \" 8 <. ! / 31/03/03 Thales Air Traffic Management 33
  34. Object Oriented Design # # !\" \"#& # \" ! !\" )\" #. / \" - . / \" #\" #\" ! \" ## & #\" 0 \" \" \" !\" ! \" # 0 \" \" \" !\" 31/03/03 Thales Air Traffic Management 34
  35. Without OOD Without OOD Design for no Changes Stationary System 31/03/03 Thales Air Traffic Management 35
  36. Change management before OOD #( \" ( \" # \" Caller called 31/03/03 Thales Air Traffic Management 36
  37. Change management before OOD 0 ! \" \" \" ( \" # \" \" # !\" \" No changes Caller called 31/03/03 Thales Air Traffic Management 37
  38. Change management before OOD ! '! \" \" \" # \" \" \" # !\" Changes 31/03/03 Caller called Thales Air Traffic Management 38
  39. Change management and code reuse before OO ! '! \" \" \" # \" \" \" # !\" Caller called 31/03/03 Thales Air Traffic Management 39
  40. System Integration is a specific change case + # \" \" #\" \"# \" !\" 0 !\" # -( !\" \" # \" \" \" \" Caller Called Caller Called 31/03/03 Thales Air Traffic Management 40
  41. Integration case + # \" \" #\" \"# \" !\" 0 !\" # -( !\" \" # \" \" \" \" Old New Old New Code Code Code Code Caller Called Called Caller 31/03/03 Thales Air Traffic Management 41
  42. Pervasive Change Replaced Module (Changed) 31/03/03 Thales Air Traffic Management 42
  43. Pervasive Change 31/03/03 Thales Air Traffic Management 43
  44. Pervasive Change 31/03/03 Thales Air Traffic Management 44
  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 % ! \" \" \" !\" \" OOD Caller called 31/03/03 Thales Air Traffic Management 48
  49. Change management with OO reuse 0 % ! \" \" \" !\" \" 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
  53. Changes example : the printer 3 \"\" & # \" # (\" # #! \"% ! #( ' ! \" # ( ( ?- \"% @ ! \" #! \" ! !\" 31/03/03 Thales Air Traffic Management 53
  54. Changes example : the printer Client Printing Server 31/03/03 Thales Air Traffic Management 54
  55. Changes example : the printer Old Client Printing Server New Client 31/03/03 Thales Air Traffic Management 55
  56. Change management with OOD reuse # #! \"% ! Printing Server Client 31/03/03 Thales Air Traffic Management 56
  57. Change management with OOD reuse 3 ! \" # ( ( ?- \"% @ ! \" #! \" ! !\" Printing Server Client 31/03/03 Thales Air Traffic Management 57
  58. Change management and code reuse before OOD \" \" # \" ! ( \"\" # 31/03/03 Thales Air Traffic Management 58
  59. Change management with OOD reuse # ? )\"@ \" ! \" \" # ( \" 31/03/03 Thales Air Traffic Management 59
  60. Object properties ? )\"@ !# 2\" \" \" 2 &\" # \" \" \" ! # \" # 31/03/03 Thales Air Traffic Management 60
  61. CORBA = Distributed Polymorphism )\" # # \" # 0 # )\" + (\" . +/ 31/03/03 Thales Air Traffic Management 61
  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 # (\" 2& C # +$ \" \" \" .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
  65. Example Interface Inheritance (IDL) Printer # \" ColorPrinter ! \" 31/03/03 Thales Air Traffic Management 65
  66. printer &OLHQW Printer print() Colour set_color() 31/03/03 Thales Air Traffic Management 66
  67. printer &OLHQW Printer print() 31/03/03 Thales Air Traffic Management 67
  68. CORBA Distributed Polymorphism example 1 8 # Printer + (\" 0 - & 31/03/03 Thales Air Traffic Management 68
  69. CORBA = Distributed Polymorphism ? # (\" @ \" \" # (\" # #\" \"\" 8 #+ (\" ( !\" # ! \" # (\" 31/03/03 Thales Air Traffic Management 69
  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
  71. CORBA = Distributed Polymorphism % ! ( \" \" # \" 8 !\" \" ! \" ! \" \" 31/03/03 Thales Air Traffic Management 71
  72. CORBA = Distributed Polymorphism +\" ! \" # Printer 8 # + (\" ColorPrinter 0 - & \"% 0 31/03/03 Thales Air Traffic Management 72
  73. CORBA Distributed Polymorphism +\" ! \" # Printer 8 # + (\" ColorPrinter 0 - & 31/03/03 Thales Air Traffic Management 73
  74. printer &OLHQW Printer print() Colour set_color() 31/03/03 Thales Air Traffic Management 74
  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
  76. We need design patterns 0 ( # \" \" - # # \" \"! \" \" # ! \" \" ! % ! )\" # # 31/03/03 Thales Air Traffic Management 76
  77. Distributed Pattern # # .1 / )\" + # )\" + ! #! \" ( \" # \" 2& \" ! \"\" \" )\" ! + ! \" & # ! +\" & \" # ! & 31/03/03 Thales Air Traffic Management 77
  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
  79. Polymorphism and Factory Pattern : example 2 \" 31/03/03 Thales Air Traffic Management 79
  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) \" \" ! ( '\" # !# +\" 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 31/03/03 the criteria specified by a client. Thales Air Traffic Management 81
  82. Polymorphism and Factory Pattern \" 31/03/03 Thales Air Traffic Management 82
  83. Polymorphism and Factory Pattern \" 31/03/03 Thales Air Traffic Management 83
  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 \" 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 ? \" \" \" # \" \" + ! \" # \" \" # 31/03/03 Thales Air Traffic Management 91
  92. Why is OOD easy to change ? \" )\" # \" \" 2\" )\" \" # )\" )\" \" \" 31/03/03 Thales Air Traffic Management 92
  93. Object collaboration 31/03/03 Thales Air Traffic Management 93
  94. Why is OOD easy to change ? + ! \" # ! )\" \" # ! \" \" )\" \" # \" # \"# ? @ 31/03/03 Thales Air Traffic Management 94
  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
  97. Example of structural fragility : the switch + \" +! \" \" # 2( \" # \" #\" \" # ! !\" \" \" !\" #% \" # \"E 2( ! ( \" \"\" # ( ' ( !\" \"\" # ( 0 ( \" # ( \" # ( ! !\"\" 31/03/03 Thales Air Traffic Management 97
  98. 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 } } 31/03/03 Thales Air Traffic Management 98
  99. 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 } 31/03/03 } Thales Air Traffic Management 99
  100. structural switch static void flightUpdate(int status) { switch(status) { case NIL_EXIT_STATE: processing 1 case FLIGHT_ACTIVATION_PROPOSAL: static void flightUpdate(int status) { processing 2 case FLIGHT_ACTIVATION_ALARM: static void flightUpdate(int status) { switch(status) { processing 3 case FLIGHT_ACTIVATION_CONFIRMED: case NIL_EXIT_STATE : switch(status) { processing4 processing 1 case HANDOVER_TRANSFERED, case NIL_EXIT_STATE : case FLIGHT_ACTIVATION_PROPOSAL: processing 5 processing 2 processing 1 case COORDINATION_TERMINATED, case FLIGHT_ACTIVATION_PROPOSAL: case FLIGHT_ACTIVATION_ALARM: processing 6 processing 2 processing 3 case UNKNOWN_EXIT_STATE case FLIGHT_ACTIVATION_ALARM: case FLIGHT_ACTIVATION_CONFIRMED: processing 7 processing 3 processing 4 } case FLIGHT_ACTIVATION_CONFIRMED: case HANDOVER_TRANSFERED, } processing 5 processing 4 case HANDOVER_TRANSFERED, case COORDINATION_TERMINATED, processing 5 processing 6 case COORDINATION_TERMINATED, case UNKNOWN_EXIT_STATE processing 6 processing 7 case UNKNOWN_EXIT_STATE } processing 7 } Software } } Module B Software Module A Software Module D Software Software static void flightUpdate(int status) { Module E Module C switch(status) { static void flightUpdate(int status) { case NIL_EXIT_STATE : processing 1 switch(status) { case FLIGHT_ACTIVATION_PROPOSAL: processing 2 case NIL_EXIT_STATE : case FLIGHT_ACTIVATION_ALARM: processing 1 processing 3 case FLIGHT_ACTIVATION_PROPOSAL: processing 2 case FLIGHT_ACTIVATION_CONFIRMED: case FLIGHT_ACTIVATION_ALARM: processing 4 processing 3 case HANDOVER_TRANSFERED, case FLIGHT_ACTIVATION_CONFIRMED: processing 5 processing 4 case COORDINATION_TERMINATED, case HANDOVER_TRANSFERED, processing 6 processing 5 case UNKNOWN_EXIT_STATE case COORDINATION_TERMINATED, processing 7 processing 6 } case UNKNOWN_EXIT_STATE } processing 7 31/03/03 } } Thales Air Traffic Management 100
  101. The problem space and the solution space. !\"( \" & 0 - !\" ( \" # ( ! !\"( 31/03/03 Thales Air Traffic Management 101
  102. 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 => 31/03/03 Thales Air Traffic Management 102
  103. 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 } 31/03/03 Thales Air Traffic Management 103
  104. 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 New_State, processing 7 case UNKNOWN_EXIT_STATE processing 8 31/03/03 } } Thales Air Traffic Management 104
  105. structural switch static void flightUpdate(int status) { switch(status) { case NIL_EXIT_STATE: processing 1 case FLIGHT_ACTIVATION_PROPOSAL: static void flightUpdate(int status) { processing 2 case FLIGHT_ACTIVATION_ALARM: switch(status) { processing 3 case FLIGHT_ACTIVATION_CONFIRMED: case NIL_EXIT_STATE : processing4 processing 1 case HANDOVER_TRANSFERED, case FLIGHT_ACTIVATION_PROPOSAL: processing 5 processing 2 static void flightUpdate(int status) { case COORDINATION_TERMINATED, case FLIGHT_ACTIVATION_ALARM: processing 6 processing 3 switch(status) { case UNKNOWN_EXIT_STATE case FLIGHT_ACTIVATION_CONFIRMED: processing 7 case NIL_EXIT_STATE : processing 4 } case HANDOVER_TRANSFERED, processing 1 } processing 5 case FLIGHT_ACTIVATION_PROPOSAL: case COORDINATION_TERMINATED, processing 2 processing 6 case FLIGHT_ACTIVATION_ALARM: case UNKNOWN_EXIT_STATE processing 3 case FLIGHT_ACTIVATION_CONFIRMED: processing 7 processing 4 } case HANDOVER_TRANSFERED, } Software processing 5 case COORDINATION_TERMINATED, processing 6 case UNKNOWN_EXIT_STATE Module B processing 7 } Software } Module A Software Module D Software Software static void flightUpdate(int status) { Module E Module C switch(status) { static void flightUpdate(int status) { case NIL_EXIT_STATE : processing 1 switch(status) { case FLIGHT_ACTIVATION_PROPOSAL: processing 2 case NIL_EXIT_STATE : case FLIGHT_ACTIVATION_ALARM: processing 1 processing 3 case FLIGHT_ACTIVATION_PROPOSAL: processing 2 case FLIGHT_ACTIVATION_CONFIRMED: case FLIGHT_ACTIVATION_ALARM: processing 4 processing 3 case HANDOVER_TRANSFERED, case FLIGHT_ACTIVATION_CONFIRMED: processing 5 processing 4 case COORDINATION_TERMINATED, case HANDOVER_TRANSFERED, processing 6 processing 5 case UNKNOWN_EXIT_STATE case COORDINATION_TERMINATED, processing 7 processing 6 } case UNKNOWN_EXIT_STATE } Changes processing 7 31/03/03 } } Thales Air Traffic Management 105
  106. OOD hides the problem space 0 % \" # \" \" )\" 3! 0 0 3! 31/03/03 Thales Air Traffic Management 106
  107. Polymorphism Print() Status Client +print() UNKNOWN_EXI NIL_EXIT FLIGHT_ACTIVATION FLIGHT_ACTIVATION T_STATE _STATE _PROPOSAL _ALARM + print() + print() + print() + print() 31/03/03 Thales Air Traffic Management 107
  108. Factory Pattern &OLHQW Status +print() UNKNOWN_EXIT NIL_EXIT FLIGHT_ACTIVATION FLIGHT_ACTIVATION _STATE _ALARM _STATE _PROPOSAL + print() + print() + print() + print() StatusFactory 31/03/03 + create() Thales Air Traffic Management 108
  109. Factory Pattern !\" ! )\" \" \" ! )\" # ( \" # !\"\" # \" \" ! \" )\" + 2\" )\" % ! ! #\" (\" \" 31/03/03 Thales Air Traffic Management 109
  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
  112. Polymorphism and state patterns ! ( )\" ! \" \" \" # # ! ( \"\" # )\" ! + ( !\" ( )\" \" ## + \" )\" \" \" (\" 31/03/03 Thales Air Traffic Management 112
  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
  115. State Pattern \" & )\" \" !\" )\" )\" & '# \" % ! ! # ' ! \" \" (\" 31/03/03 Thales Air Traffic Management 115
  116. Polymorphism &OLHQW Status +print() UNKNOWN_EXIT NIL_EXIT FLIGHT_ACTIVATION FLIGHT_ACTIVATION _STATE _PROPOSAL _ALARM _STATE + print() + print() + print() + print() 31/03/03 Thales Air Traffic Management 116
  117. Polymorphism Context &OLHQW Status status +print() +print() Concrete state UNKNOWN_EXIT NIL_EXIT FLIGHT_ACTIVATION FLIGHT_ACTIVATION _STATE _PROPOSAL _ALARM _STATE + print() + print() + print() + print() 31/03/03 Thales Air Traffic Management 117
  118. Coarse Grain Examples & ( ' \" \" # \" \" \" ' # ( )\" # & \" # & + ! )\" \" # )\" 31/03/03 Thales Air Traffic Management 118
  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() $\" \" Operation2() Operation3() 31/03/03 Thales Air Traffic Management 123
  124. Object By Value Event Factory Local Object Remote Object $\" )\" 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
  127. Separation Of Concern \" \" ! (# \" \" \" \" \" )\" )\" \" )\" \" )\" \" \" ! \" \" )\" \" 31/03/03 Thales Air Traffic Management 127
  128. Separation Of Concern Fault Load Security Transaction Tolerance Balancing Printer 31/03/03 Thales Air Traffic Management 128
  129. Separation Of Concern Fault Load Transaction Security Tolerance Balancing Printer 31/03/03 Thales Air Traffic Management 129
  130. Separation Of Concern Fault Security Printer Load Transaction Tolerance Balancing Technical Services Domain Services 31/03/03 Thales Air Traffic Management 130
  131. Y development cycle \" ! $ \"# \" \" 1 \" ! 31/03/03 Thales Air Traffic Management 131
  132. Application Lay out \" $ #\" \"- 31/03/03 Thales Air Traffic Management 132
  133. Application Lay out \" $\" \" # $ #\" \"- \" \" - 31/03/03 Thales Air Traffic Management 133
  134. Application Lay out \" \" $ #\" \" \" \" \" \" \" - \" \" 31/03/03 Thales Air Traffic Management 134
  135. Y Standardization Process \" \" \" # ! # \" \" ( # \" ! \" \" \" \" \" 0 ( ! \"% ( A \" 31/03/03 Thales Air Traffic Management 135
  136. Y Standardization Process Domain Logic Domain Technical Patterns Patterns Transportation DTF 31/03/03 Thales Air Traffic Management 136

+ elfuchselfuchs, 3 years ago

custom

388 views, 1 favs, 0 embeds more stats

CORBA tutorial

More info about this document

© All Rights Reserved

Go to text version

  • Total Views 388
    • 388 on SlideShare
    • 0 from embeds
  • Comments 1
  • Favorites 1
  • Downloads 41
Most viewed embeds

more

All embeds

less

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

Cancel
File a copyright complaint
Having problems? Go to our helpdesk?

Categories