SlideShare una empresa de Scribd logo
1 de 136
Descargar para leer sin conexión
CORBA for transportation control and command systems tutorial
CORBA ATC use case, Note to offline reader.




                                                                                          !                                 quot;              #       !
                                                          !                                               #                quot;           #

               $%            #               quot;                    quot;!          !                   &                   '            (
                                             )quot;                           quot;               #                   #                quot;

                        %                quot;          &             !                                               (        #                       #
               !             &       !            * )quot;                quot;           #

                       quot;                      !           quot;                           #                                !       !   %   !!      !
                   !         quot;           #        !           (           %       !                                   #

                                                      quot;       quot;       '               #               quot;                            (   (
                    quot;            '                quot;                                                       quot;       #                            #
                                     quot;                                    quot;                   %   !           #
31/03/03




                           Thales Air Traffic Management
           2
The open issue :



                                                           $   #
                                                   +               quot;
                                               quot;       +            ,


                                               ,
31/03/03




               Thales Air Traffic Management
           3
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
Why CORBA ?

                      )quot;          quot;           #    (quot;           quot;               !
                     (                             (  #     -           quot;

           .                              /


               0     !                             )quot;               quot;   #
                   (quot;                     quot;             #                   !
                   (                                (   #   -           quot;



                                      (                     )quot;
31/03/03




                   Thales Air Traffic Management
           5
Practical Use Case


               0              #       #             !
                   +              +                     #
                   1      quot;           +                         quot;     2(
                              !    %,
               3!                          !   %,
               0                                (           ,
               2&
31/03/03




               Thales Air Traffic Management
           6
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
Object At system level ?

                    -                       quot;   !       )quot;       quot;    #
                                (       ,
                    !               (quot;              quot;        !            !
                                )quot; ,
                            !

                                        7
                                        (                    !
                        #                   '!                   )quot;
                                              #(
                                    !          (
31/03/03




               Thales Air Traffic Management
           8
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
What Do We Want

                          &+                +       #
                               quot;
                           #          quot;         #
31/03/03




                Thales Air Traffic Management
           10
What Do We Want !

                    quot;         #




                +                                                +
                                                    Operator
                                                    Display
                                    Supervision
31/03/03




                                                    System

                    Thales Air Traffic Management
           11
What DO We Want !

                    quot;         #



                                                quot;   #

                                                         #
                                                        #

                                            +                 +



                +                                                         +
                                                             Operator
                                                             Display
                                    Supervision
31/03/03




                                                             System

                    Thales Air Traffic Management
           12
What DO We Want !




                                            quot;   #

                                                     #
                                                    #

                                        +                 +



                                                         Operator
                                                         Display
                                Supervision
31/03/03




                                                         System

                Thales Air Traffic Management
           13
We want to Increase Integrated software quality
31/03/03




                Thales Air Traffic Management
           14
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
What We expect ?

                0        !

                                                quot;   #

                                                         #
                                                        #

                                            +                 +



                                                             Operator
                                                             Display
                                    Supervision
31/03/03




                                                             System

                    Thales Air Traffic Management
           16
What We expect ?

                8




                                        +       #
31/03/03




                Thales Air Traffic Management
           17
What We May Have :
                                                         +   (quot;




                                                +   (quot;




                                                                    +   (quot;
                +    (quot;
                                                         +   (quot; 2
31/03/03




                Thales Air Traffic Management
           18
Spaghetti Plate Syndrome

                                 8

                      quot;
31/03/03




                Thales Air Traffic Management
           19
Spaghetti Plate Syndrome


                                                            +        quot;   quot;




                                        +       #
31/03/03




                Thales Air Traffic Management
           20
Spaghetti Plate Syndrome


                                                          +          #




                                        +       #
31/03/03




                Thales Air Traffic Management
           21
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
Why CORBA

                0                                   !
                                  (        (        !       quot;       #
                        !
                       )quot; +            !
                       )quot;                               quot;
                       #
                0                     ) quot; 'quot;                #
                       (      (            quot;                    quot;
31/03/03




                    Thales Air Traffic Management
           23
Software Component Integration Bus




                                                Software BUS
31/03/03




                Thales Air Traffic Management
           24
Object Software Component Integration Bus




                    #       $    #    #         !
                                                        Distributed
                    )quot;          99:; (                 Polymorphism


                quot;




                                                    Software Components
                                                          Evolution
                                                      And Replacement
31/03/03




                Thales Air Traffic Management
           25
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
Polymorphism



                         1    <                     '
                             )quot;                 quot;       #           quot;                                           *

                                                            (                                 !
                quot;
                0        !                                      !    quot;
                               =


           *GoF stand for Gang of Four. It refers to the pattern seminal book of John Vlissides, Erich Gamma,
           Richard Helm, Ralph Johnson:
                                    Design Patterns: Elements of Reusable Object-Oriented Software.
31/03/03




                    Thales Air Traffic Management
           27
Object Software Component Integration Bus




                                           Object Software BUS
31/03/03




                Thales Air Traffic Management
           28
Object Software Component Integration Bus
                                                                 8!




                                           Object Software BUS
31/03/03




                Thales Air Traffic Management
           29
Procedural versus Object



                      Procedural Design                Object Design




                                                         After Object
                       Before Object
31/03/03




                Thales Air Traffic Management
           30
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
Design for changes

                0         quot;     >       (           ?quot;   #       @
                0              (                                     quot;       #                    #
                                                             A           (            #
                      (
                0                               (                                quot;        quot;   #
                0         quot;     >               A                    -                            (
                      #             #
                       &                    #                quot;           #
                           #                (
                                                                         quot;       #
31/03/03




                    Thales Air Traffic Management
           32
Changes Sources* During Development

                      -
                                               quot;(       0            0       #
                               2               (
                      quot;            #
                                         quot;              quot;       #0
                +%
                          0    $               B                         0   quot;(
                                   #    +                   ;
                +                              quot;
                          8

           <.                                 !     /
31/03/03




                    Thales Air Traffic Management
           33
Object Oriented Design

                   #                                #       !quot;                quot;#&          #
                quot;   !                  !quot;
                  )quot;                                    #.         /  quot;       -
                .                          /                     quot; #quot;                 #quot;
                !     quot;                ##               &        #quot;
                0
                               quot;       quot;       quot;        !quot;        !       quot;       #
                0
                               quot;       quot;            quot;        !quot;
31/03/03




                    Thales Air Traffic Management
           34
Without OOD


                         Without OOD




                   Design for no Changes

                      Stationary System
31/03/03




                Thales Air Traffic Management
           35
Change management before OOD

                          #(                            quot;
                (
                                                    quot;   #       quot;




                            Caller                               called
31/03/03




                    Thales Air Traffic Management
           36
Change management before OOD

                0                         !             quot;       quot;             quot;
                                     (         quot;    #               quot;   quot;            #
                                    !quot;                      quot;

                                               No changes




                            Caller                                          called
31/03/03




                    Thales Air Traffic Management
           37
Change management before OOD

                                                !                 '!           quot;            quot;
                  quot;      #              quot;           quot;                  quot;   #
                                            !quot;




                                                        Changes
31/03/03




                               Caller                                              called

                Thales Air Traffic Management
           38
Change management and code reuse before OO


                                                !       '!           quot;        quot;
                  quot;      #              quot;           quot;        quot;   #
                                            !quot;




                               Caller                                called
31/03/03




                Thales Air Traffic Management
           39
System Integration is a specific change case

                +                      #                          quot;            quot;   #quot;
                          quot;#         quot;                       !quot;
                0                  !quot;                             #
                                           -(
                                 !quot;                 quot;        #        quot;
                                   quot;                     quot;                 quot;




                                                                  Caller
                                                Called
                      Caller                                                       Called
31/03/03




                    Thales Air Traffic Management
           40
Integration case

                 +                      #                            quot;           quot;   #quot;
                           quot;#         quot;                       !quot;
                 0                  !quot;                              #
                                            -(
                                  !quot;                 quot;        #          quot;
                                    quot;                     quot;                  quot;
                Old                                                                   New
                                                                   Old
                                                     New
                Code                                                                  Code
                                                                   Code
                                                     Code




                                                                    Caller
                                                 Called                              Called
                       Caller
31/03/03




                     Thales Air Traffic Management
           41
Pervasive Change




                                       Replaced Module (Changed)
31/03/03




                Thales Air Traffic Management
           42
Pervasive Change
31/03/03




                Thales Air Traffic Management
           43
Pervasive Change
31/03/03




                Thales Air Traffic Management
           44
Pervasive Change

                Several Changes Replace and Reused
31/03/03




                  Thales Air Traffic Management
           45
Pervasive Change = Spaghetti Plate

           After Several Changes Replace and Reused




                                       +        #
31/03/03




                Thales Air Traffic Management
           46
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
Change management with OO reuse

                0                            %            !        quot;          quot;
                              quot;               !quot;                          quot;




                                                    OOD



                                  Caller                         called
31/03/03




                    Thales Air Traffic Management
           48
Change management with OO reuse

                0                            %            !        quot;          quot;
                              quot;               !quot;                          quot;



                              No changes
                                  Caller                         called

                                                    OOD
31/03/03




                    Thales Air Traffic Management
           49
With OOD : Software Bus
31/03/03




                Thales Air Traffic Management
           50
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
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
Changes example : the printer

                3                    quot;quot;   &                        #       quot;        #
                                    (quot;
                                  #    #!                      quot;%          !

                     #(                                    '           !        quot;       #
                    ( ( ?- quot;%             @            !       quot;           #!       quot;    !
                                          !quot;
31/03/03




                    Thales Air Traffic Management
           53
Changes example : the printer


                          Client                           Printing Server
31/03/03




                Thales Air Traffic Management
           54
Changes example : the printer


                       Old Client                          Printing Server




                      New Client
31/03/03




                Thales Air Traffic Management
           55
Change management with OOD reuse

                              #         #!                 quot;%     !




                                                Printing Server
                         Client
31/03/03




                Thales Air Traffic Management
           56
Change management with OOD reuse

                3         !              quot;          #       ( ( ?- quot;%      @     !
                     quot;          #!           quot;          !                   !quot;




                                                               Printing Server
                                Client
31/03/03




                    Thales Air Traffic Management
           57
Change management and code reuse before OOD


                                                 quot;            quot;    #
                  quot;                    !        (       quot;quot;     #
31/03/03




                Thales Air Traffic Management
           58
Change management with OOD reuse

                              #      ?     )quot;@          quot;           !   quot;
                quot;        #                          (       quot;
31/03/03




                    Thales Air Traffic Management
           59
Object properties


                ?     )quot;@                           !#

                      2quot;
                                    quot;
                                        quot;


                      2 &quot;                      #
                                                         quot;           quot;
                      quot;                             !        #
                quot;         #
31/03/03




                Thales Air Traffic Management
           60
CORBA = Distributed Polymorphism


                          )quot;                      #         #       quot;
                         #
                0                                      #


                                                )quot; +   (quot;       .   +/
31/03/03




                Thales Air Traffic Management
           61
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
CORBA Distributed Polymorphism examples


                2&
                                    !               +8       #   (quot;

                2&              C
                                                #     +$         quot;
                                  quot;        quot;         .1 /

                2&              D
                                                         #
31/03/03




                Thales Air Traffic Management
           63
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
Example Interface Inheritance (IDL)

                                                           Printer


                     #         quot;



                                                         ColorPrinter




                                                 !   quot;
31/03/03




                 Thales Air Traffic Management
           65
printer




                   &OLHQW                         Printer
                                                print()




                                                  Colour
                                                set_color()
31/03/03




                Thales Air Traffic Management
           66
printer




                   &OLHQW                         Printer
                                                print()
31/03/03




                Thales Air Traffic Management
           67
CORBA Distributed Polymorphism example 1


                                   8        #
                                                    Printer
                                   +      (quot;



                              0
                               -   &
31/03/03




                 Thales Air Traffic Management
           68
CORBA = Distributed Polymorphism

                           ?           #        (quot; @
                          quot;                 quot;
                                                 #     (quot;      #   #quot;   quot;quot;


                                   8            #+   (quot;       (    !quot;        #
                   !           quot;                          #   (quot;
31/03/03




                Thales Air Traffic Management
           69
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
CORBA = Distributed Polymorphism

                             %


                       !                        (           quot;       quot;   #
                                                    quot;
                8 !quot;              quot;                             !   quot;
                !                     quot;                 quot;
31/03/03




                Thales Air Traffic Management
           71
CORBA = Distributed Polymorphism

                                                +quot;   !   quot;   #     Printer

                                  8        #
                                  +      (quot;

                                                                 ColorPrinter
                             0
                              -   &




           quot;%      0
31/03/03




                Thales Air Traffic Management
           72
CORBA Distributed Polymorphism

                                                +quot;   !   quot;   #     Printer

                                  8        #
                                  +      (quot;


                                                                 ColorPrinter
                             0
                              -   &
31/03/03




                Thales Air Traffic Management
           73
printer




                   &OLHQW                         Printer
                                                print()




                                                  Colour
                                                set_color()
31/03/03




                Thales Air Traffic Management
           74
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
We need design patterns

                0           (
                                                        #                quot;       quot;
                    -                           #

                        #
                quot;               quot;!        quot;             quot;       #    !       quot;
                        quot;

                                                            !    %   !
                    )quot;                              #           #
31/03/03




                Thales Air Traffic Management
           76
Distributed Pattern

                            #           #               .1   /               )quot;
                +
                      #                                   )quot; +           !            #!    quot;
                     (          quot;       #                quot;
                2&                  quot;                    !   quot;quot;                       quot;    )quot;
                !       +
                                                    !                             quot;
                            &
                                                #                    !
                +quot;              &
                    quot;
                                            #                    !
                            &
31/03/03




                Thales Air Traffic Management
           77
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
Polymorphism and Factory Pattern : example 2




                                         quot;
31/03/03




                 Thales Air Traffic Management
           79
Life cycle


                                                Printer Factory
                    Client                                                         Printer



                              Create Printer
                                                                  Create Printer


                                 Printer IOR


                                 Request
31/03/03




                Thales Air Traffic Management
           80
FACTOY PATTERN (from OOC training)


                          quot;                         quot;                 !      (
                                  'quot;            #       !#
                     +quot;
                           A client is required to provide security information before the
                           factory object will allow the client to have access to another
                           object.
                     $        *        quot;#
                           The factory object manages a pool of objects, often
                           representing some limited resource, and assigns them to
                           clients based on some utilization algorithm.


                           A factory object enables the use of polymorphism by returning
                           object references to different implementations depending on
31/03/03




                           the criteria specified by a client.

                Thales Air Traffic Management
           81
Polymorphism and Factory Pattern




                                        quot;
31/03/03




                Thales Air Traffic Management
           82
Polymorphism and Factory Pattern




                                        quot;
31/03/03




                Thales Air Traffic Management
           83
Factory And Code Generation


                &OLHQW                                     Printer

                                                       +print()




                                                      Black & White

                                                   + print()
31/03/03




                Thales Air Traffic Management
           84
Factory And Code Generation


                &OLHQW                                              Printer

                                                                +print()




                                                Black & White                     Colour

                                          + print()                           + print()
31/03/03




                Thales Air Traffic Management
           85
Factory And Code Generation


                &OLHQW                                     Printer

                                                       +print()




                                   Black & White           Colour         FAX

                                + print()              + print()     + print()
31/03/03




                Thales Air Traffic Management
           86
Factory And Code Generation


                       &OLHQW                                        Printer

                                                              +print()




                                                                                    Strip
             Black & White                    Colour          FAX

                                                                               + print()
           + print()                      + print()      + print()
31/03/03




                       Thales Air Traffic Management
            87
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
Factory And Code Generation

                                                       <<Interface>>
                &OLHQW
                                                       Printer Factory




                                                                          Strip
           Black & White              Colour         FAX
                                                                         Factory
              Factory                 Factory       Factory




                                         1                    quot;
31/03/03




                Thales Air Traffic Management
           89
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
Why is procedural design expensive to change ?


                      quot;                             quot;                   quot;
                              #


                                                    quot;           quot;


                +      !                                quot;   #       quot;
                                        quot;           #
31/03/03




                    Thales Air Traffic Management
           91
Why is OOD easy to change ?


                    quot;                     )quot;                  #
                        quot;                                             quot;


                2quot;            )quot;

                                                    quot;             #
                                                        )quot;

                                                             )quot;
                quot;                          quot;
31/03/03




                Thales Air Traffic Management
           92
Object collaboration
31/03/03




                Thales Air Traffic Management
           93
Why is OOD easy to change ?

                +      !                             quot;   #
                       !              )quot; quot;          #              !

                         quot;                 quot;        )quot;                  quot;   #


                           quot;      #                      quot;#
                                       ?        @
31/03/03




                    Thales Air Traffic Management
           94
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
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
Example of structural fragility : the switch

                +     quot;            +! quot;                          quot;     #
                2(                                     quot;    #     quot;     #quot;
                quot;          #                     !                    !quot;

                                   quot;            quot;     !quot;
                                                #%     quot;    #         quot;E

                2(     !                        (     quot;     quot;quot;    #
                (     '                (        !quot;    quot;quot;     #             (
                0                                 (    quot;     #         (
                quot;    #         (       !              !quot;quot;
31/03/03




                Thales Air Traffic Management
           97
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
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
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
The problem space and the solution space.

                                !quot;(                  quot;              &



                 0                              -    !quot;    (    quot;       #
                     (      !                        !quot;(
31/03/03




                     Thales Air Traffic Management
           101
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
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
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
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
OOD hides the problem space

                 0                      %            quot;    #      quot;       quot;
                                                         )quot;

                 3!               0

                                            0

                                            3!
31/03/03




                     Thales Air Traffic Management
           106
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
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
Factory Pattern

                            !quot;                !                       )quot;               quot;

                              quot;                          !       )quot;            #               (
                 quot;                      #       !quot;quot;                                #       quot;

                          quot;             !                         quot;         )quot;
                 +

                 2quot;                         )quot; %     !       !         #quot;
                  (quot;                         quot;
31/03/03




                     Thales Air Traffic Management
           109
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
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
Polymorphism and state patterns

                    !        (               )quot; ! quot;              quot;   quot;       #   #
                                     !        (
                 quot;quot;          #                  )quot;           !

                             +               (     !quot;    (
                   )quot;            quot;       ##

                             +           quot;                )quot;             quot;
                                                                             quot;
                  (quot;
31/03/03




                 Thales Air Traffic Management
           112
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
Object Programming



                                                               Stat1
                 2&                  +       F




                                                      State2               State4




                                                                           State5
   G


                                                        +              #
31/03/03




                  Thales Air Traffic Management
           114
State Pattern

                                                             quot;   &       )quot;          quot;
                 !quot;                                  )quot;

                                              )quot;     &                          '#           quot;
                          %    !  !                      #           '         !         quot;
                 quot;             (quot;
31/03/03




                     Thales Air Traffic Management
           115
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
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
Coarse Grain Examples

                                &                    (                    '       quot;
                                quot;                    #            quot;                   quot;

                     quot;           '                   #        (                       )quot;    #

                                 &                       quot;            #       &
                 +              !                            )quot;           quot;           #    )quot;
31/03/03




                     Thales Air Traffic Management
           118
On line coordination with CORBA Objects




                                                                                 Status




                                                                        Status


                                                      Status




                             Status
31/03/03




                                           Air Traffic Control Centre
                 Thales Air Traffic Management
           119
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
CORBA = Coarse Grain Object

                 Local Object                     Remote Object

                                                                  NO
                                Operation1()



                                Operation2()

                                                                   Fine Grain Object
                                Operation3()




                                Operation4()
31/03/03




                 Thales Air Traffic Management
           121
CORBA = Coarse Grain Object

                 Local Object                     Remote Object

                           GroupOperation()
                                                                  YES
31/03/03




                 Thales Air Traffic Management
           122
Distributed Object Patterns

                                                 Façade                       Remote Object
                 Local Object

                                                          GetRemoteObject()




                                                                H
                                Operation1()                   $quot;         quot;


                                Operation2()




                                Operation3()
31/03/03




                 Thales Air Traffic Management
           123
Object By Value

                                                             Event Factory
           Local Object                                                               Remote Object
                                         $quot;      )quot;
                                                                                OBV
                                                       new
                                          Event Type


                          Operation1()



                          Operation2()




                          Operation3()
31/03/03




                 Thales Air Traffic Management
           124
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
Separation Of Concern




                  Security                 Fault       Load      Transaction
                                         Tolerance   Balancing




                  Printer                 Printer                  Printer
                                                      Printer
31/03/03




                 Thales Air Traffic Management
           126
Separation Of Concern

                            quot;                    quot;                                  !    (#
                                    quot;                quot;   quot;                quot;

                                                                 quot;             )quot;
                                                                               )quot;
                                                     quot;               )quot;
                                                             quot;            )quot;

                      quot;                                                         quot;            !
                                quot;       quot;                                               )quot;
                                            quot;
31/03/03




                 Thales Air Traffic Management
           127
Separation Of Concern




                   Fault                               Load
                                          Security               Transaction
                 Tolerance                           Balancing




                                                      Printer
31/03/03




                 Thales Air Traffic Management
           128
Separation Of Concern



                                               Fault
                                                                      Load      Transaction
                                                         Security
                                             Tolerance
                                                                    Balancing




                 Printer
31/03/03




                 Thales Air Traffic Management
           129
Separation Of Concern


                                               Fault     Security
                  Printer                                              Load      Transaction
                                             Tolerance
                                                                     Balancing




                                                         Technical
                                                         Services
                     Domain
                     Services
31/03/03




                 Thales Air Traffic Management
           130
Y development cycle




                                                                   quot;
                          !
                                                     $            quot;#
                                                              quot;
                                                          quot;

                                                     1    quot;            !
31/03/03




                 Thales Air Traffic Management
           131
Application Lay out




                                                   quot;
                                                 $ #quot;
                                                   quot;-
31/03/03




                 Thales Air Traffic Management
           132
Application Lay out



                                                      quot;
                                                     $quot; quot;
                                                       #
                                                     $ #quot;
                                                       quot;-
                                                 quot;        quot;    -
31/03/03




                 Thales Air Traffic Management
           133
Application Lay out



                         quot;                           quot;   $ #quot;
                     quot;        quot;


                     quot;       quot;
                                                 quot;       quot;   -
                     quot;        quot;
31/03/03




                 Thales Air Traffic Management
           134
Y Standardization Process

                               quot;                      quot;       quot;   #       !
                              #

                       quot;      quot;                      (        #   quot;       !        quot;
                                  quot;   quot;

                                                                      quot;   quot;



                 0            (        !             quot;%   (                    A
                        quot;
31/03/03




                     Thales Air Traffic Management
           135
Y Standardization Process




             Domain Logic                                      Domain Technical
               Patterns                                           Patterns




                                                        Transportation DTF
31/03/03




                 Thales Air Traffic Management
           136

Más contenido relacionado

Más de Emmanuel Fuchs

Distributed Object Systems
Distributed Object SystemsDistributed Object Systems
Distributed Object SystemsEmmanuel Fuchs
 
CARDAMOM_CCM_Tutorial_Draft 2004
CARDAMOM_CCM_Tutorial_Draft 2004CARDAMOM_CCM_Tutorial_Draft 2004
CARDAMOM_CCM_Tutorial_Draft 2004Emmanuel Fuchs
 
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 DescriptionEmmanuel Fuchs
 
PLUG : Presentation Layer Universal Generator
 PLUG : Presentation Layer Universal Generator PLUG : Presentation Layer Universal Generator
PLUG : Presentation Layer Universal GeneratorEmmanuel Fuchs
 
PLUG : Presentation Layer Universal Generator
PLUG : Presentation Layer Universal GeneratorPLUG : Presentation Layer Universal Generator
PLUG : Presentation Layer Universal GeneratorEmmanuel Fuchs
 
PLUG : Presentation Layer Universal Generator
 PLUG : Presentation Layer Universal Generator PLUG : Presentation Layer Universal Generator
PLUG : Presentation Layer Universal GeneratorEmmanuel Fuchs
 
PLUG : Presentation Layer Universal Generator
PLUG : Presentation Layer Universal GeneratorPLUG : Presentation Layer Universal Generator
PLUG : Presentation Layer Universal GeneratorEmmanuel Fuchs
 
UBSS : Unix Based System Software
UBSS : Unix Based System SoftwareUBSS : Unix Based System Software
UBSS : Unix Based System SoftwareEmmanuel Fuchs
 
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)Emmanuel Fuchs
 
Distributed Object Computing
Distributed Object ComputingDistributed Object Computing
Distributed Object ComputingEmmanuel Fuchs
 
Executive Summary ITEA Roadmap 2
Executive Summary ITEA Roadmap 2Executive Summary ITEA Roadmap 2
Executive Summary ITEA Roadmap 2Emmanuel Fuchs
 

Más de Emmanuel Fuchs (20)

Distributed Object Systems
Distributed Object SystemsDistributed Object Systems
Distributed Object Systems
 
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
 

Último

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 

Último (20)

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 

CORBA tutorial Boston2003

  • 1. CORBA for transportation control and command systems tutorial
  • 2. CORBA ATC use case, Note to offline reader. ! quot; # ! ! # quot; # $% # quot; quot;! ! & ' ( )quot; quot; # # quot; % quot; & ! ( # # ! & ! * )quot; quot; # quot; ! quot; # ! ! % !! ! ! quot; # ! ( % ! # quot; quot; ' # quot; ( ( quot; ' quot; quot; # # quot; quot; % ! # 31/03/03 Thales Air Traffic Management 2
  • 3. The open issue : $ # + quot; quot; + , , 31/03/03 Thales Air Traffic Management 3
  • 4. CORBA use case Can we use CORBA in Large Distributed Control System ? What do We want ! Complex System Seamless Integration Why CORBA ? Object Software Bus Design for changes Change example : Printer CORBA distributed polymorphism example CORBA and Distributed Design pattern example Procedural design versus Object design Designing Distributed Object 31/03/03 Normalisation processes Thales Air Traffic Management 4
  • 5. Why CORBA ? )quot; quot; # (quot; quot; ! ( ( # - quot; . / 0 ! )quot; quot; # (quot; quot; # ! ( ( # - quot; ( )quot; 31/03/03 Thales Air Traffic Management 5
  • 6. Practical Use Case 0 # # ! + + # 1 quot; + quot; 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 ? - quot; ! )quot; quot; # ( , ! (quot; quot; ! ! )quot; , ! 7 ( ! # '! )quot; #( ! ( 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 &+ + # quot; # quot; # 31/03/03 Thales Air Traffic Management 10
  • 11. What Do We Want ! quot; # + + Operator Display Supervision 31/03/03 System Thales Air Traffic Management 11
  • 12. What DO We Want ! quot; # quot; # # # + + + + Operator Display Supervision 31/03/03 System Thales Air Traffic Management 12
  • 13. What DO We Want ! quot; # # # + + Operator Display Supervision 31/03/03 System Thales Air Traffic Management 13
  • 14. We want to Increase Integrated software quality 31/03/03 Thales Air Traffic Management 14
  • 15. CORBA use case Can we use CORBA in Large Distributed Control System ? What do We want ! Complex System Seamless Integration Why CORBA ? Object Software Bus Design for changes Change example : Printer CORBA distributed polymorphism example CORBA and Distributed Design pattern example Procedural design versus Object design Designing Distributed Object 31/03/03 Normalisation processes Thales Air Traffic Management 15
  • 16. What We expect ? 0 ! quot; # # # + + Operator Display Supervision 31/03/03 System Thales Air Traffic Management 16
  • 17. What We expect ? 8 + # 31/03/03 Thales Air Traffic Management 17
  • 18. What We May Have : + (quot; + (quot; + (quot; + (quot; + (quot; 2 31/03/03 Thales Air Traffic Management 18
  • 19. Spaghetti Plate Syndrome 8 quot; 31/03/03 Thales Air Traffic Management 19
  • 20. Spaghetti Plate Syndrome + quot; quot; + # 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 ! ( ( ! quot; # ! )quot; + ! )quot; quot; # 0 ) quot; 'quot; # ( ( quot; quot; 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 )quot; 99:; ( Polymorphism quot; Software Components Evolution And Replacement 31/03/03 Thales Air Traffic Management 25
  • 26. CORBA use case Can we use CORBA in Large Distributed Control System ? What do We want ! Complex System Seamless Integration Why CORBA ? Object Software Bus Design for changes Change example : Printer CORBA distributed polymorphism example CORBA and Distributed Design pattern example Procedural design versus Object design Designing Distributed Object 31/03/03 Normalisation processes Thales Air Traffic Management 26
  • 27. Polymorphism 1 < ' )quot; quot; # quot; * ( ! quot; 0 ! ! quot; = *GoF stand for Gang of Four. It refers to the pattern seminal book of John Vlissides, Erich Gamma, Richard Helm, Ralph Johnson: Design Patterns: Elements of Reusable Object-Oriented Software. 31/03/03 Thales Air Traffic Management 27
  • 28. Object Software Component Integration Bus Object Software BUS 31/03/03 Thales Air Traffic Management 28
  • 29. Object Software Component Integration Bus 8! Object Software BUS 31/03/03 Thales Air Traffic Management 29
  • 30. Procedural versus Object Procedural Design Object Design After Object Before Object 31/03/03 Thales Air Traffic Management 30
  • 31. CORBA use case Can we use CORBA in Large Distributed Control System ? What do We want ! Complex System Seamless Integration Why CORBA ? Object Software Bus Design for changes Change example : Printer CORBA distributed polymorphism example CORBA and Distributed Design pattern example Procedural design versus Object design Designing Distributed Object 31/03/03 Normalisation processes Thales Air Traffic Management 31
  • 32. Design for changes 0 quot; > ( ?quot; # @ 0 ( quot; # # A ( # ( 0 ( quot; quot; # 0 quot; > A - ( # # & # quot; # # ( quot; # 31/03/03 Thales Air Traffic Management 32
  • 33. Changes Sources* During Development - quot;( 0 0 # 2 ( quot; # quot; quot; #0 +% 0 $ B 0 quot;( # + ; + quot; 8 <. ! / 31/03/03 Thales Air Traffic Management 33
  • 34. Object Oriented Design # # !quot; quot;#& # quot; ! !quot; )quot; #. / quot; - . / quot; #quot; #quot; ! quot; ## & #quot; 0 quot; quot; quot; !quot; ! quot; # 0 quot; quot; quot; !quot; 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 #( quot; ( quot; # quot; Caller called 31/03/03 Thales Air Traffic Management 36
  • 37. Change management before OOD 0 ! quot; quot; quot; ( quot; # quot; quot; # !quot; quot; No changes Caller called 31/03/03 Thales Air Traffic Management 37
  • 38. Change management before OOD ! '! quot; quot; quot; # quot; quot; quot; # !quot; Changes 31/03/03 Caller called Thales Air Traffic Management 38
  • 39. Change management and code reuse before OO ! '! quot; quot; quot; # quot; quot; quot; # !quot; Caller called 31/03/03 Thales Air Traffic Management 39
  • 40. System Integration is a specific change case + # quot; quot; #quot; quot;# quot; !quot; 0 !quot; # -( !quot; quot; # quot; quot; quot; quot; Caller Called Caller Called 31/03/03 Thales Air Traffic Management 40
  • 41. Integration case + # quot; quot; #quot; quot;# quot; !quot; 0 !quot; # -( !quot; quot; # quot; quot; quot; quot; Old New Old New Code Code Code Code Caller Called Called Caller 31/03/03 Thales Air Traffic Management 41
  • 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 % ! quot; quot; quot; !quot; quot; OOD Caller called 31/03/03 Thales Air Traffic Management 48
  • 49. Change management with OO reuse 0 % ! quot; quot; quot; !quot; quot; No changes Caller called OOD 31/03/03 Thales Air Traffic Management 49
  • 50. With OOD : Software Bus 31/03/03 Thales Air Traffic Management 50
  • 51. CORBA use case Can we use CORBA in Large Distributed Control System ? What do We want ! Complex System Seamless Integration Why CORBA ? Object Software Bus Design for changes Change example : Printer CORBA distributed polymorphism example CORBA and Distributed Design pattern example Procedural design versus Object design Designing Distributed Object 31/03/03 Normalisation processes Thales Air Traffic Management 51
  • 52. Changes example : the printer Client Printing Server From The CORBA Bible Michi Henning Steve Vinoski Advanced CORBA Programming with C++ 31/03/03 Thales Air Traffic Management 52
  • 53. Changes example : the printer 3 quot;quot; & # quot; # (quot; # #! quot;% ! #( ' ! quot; # ( ( ?- quot;% @ ! quot; #! quot; ! !quot; 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 # #! quot;% ! Printing Server Client 31/03/03 Thales Air Traffic Management 56
  • 57. Change management with OOD reuse 3 ! quot; # ( ( ?- quot;% @ ! quot; #! quot; ! !quot; Printing Server Client 31/03/03 Thales Air Traffic Management 57
  • 58. Change management and code reuse before OOD quot; quot; # quot; ! ( quot;quot; # 31/03/03 Thales Air Traffic Management 58
  • 59. Change management with OOD reuse # ? )quot;@ quot; ! quot; quot; # ( quot; 31/03/03 Thales Air Traffic Management 59
  • 60. Object properties ? )quot;@ !# 2quot; quot; quot; 2 &quot; # quot; quot; quot; ! # quot; # 31/03/03 Thales Air Traffic Management 60
  • 61. CORBA = Distributed Polymorphism )quot; # # quot; # 0 # )quot; + (quot; . +/ 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 # (quot; 2& C # +$ quot; quot; quot; .1 / 2& D # 31/03/03 Thales Air Traffic Management 63
  • 64. Example UML Diagram Print Strip Printer 1 Strip : string Print() Print() From The CORBA Bible Michi Henning Steve Vinoski ColorPrinter Advanced CORBA Programming with C++ Setcolor() 31/03/03 Thales Air Traffic Management 64
  • 65. Example Interface Inheritance (IDL) Printer # quot; ColorPrinter ! quot; 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 + (quot; 0 - & 31/03/03 Thales Air Traffic Management 68
  • 69. CORBA = Distributed Polymorphism ? # (quot; @ quot; quot; # (quot; # #quot; quot;quot; 8 #+ (quot; ( !quot; # ! quot; # (quot; 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 % ! ( quot; quot; # quot; 8 !quot; quot; ! quot; ! quot; quot; 31/03/03 Thales Air Traffic Management 71
  • 72. CORBA = Distributed Polymorphism +quot; ! quot; # Printer 8 # + (quot; ColorPrinter 0 - & quot;% 0 31/03/03 Thales Air Traffic Management 72
  • 73. CORBA Distributed Polymorphism +quot; ! quot; # Printer 8 # + (quot; 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 ( # quot; quot; - # # quot; quot;! quot; quot; # ! quot; quot; ! % ! )quot; # # 31/03/03 Thales Air Traffic Management 76
  • 77. Distributed Pattern # # .1 / )quot; + # )quot; + ! #! quot; ( quot; # quot; 2& quot; ! quot;quot; quot; )quot; ! + ! quot; & # ! +quot; & quot; # ! & 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 quot; 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) quot; quot; ! ( 'quot; # !# +quot; A client is required to provide security information before the factory object will allow the client to have access to another object. $ * quot;# The factory object manages a pool of objects, often representing some limited resource, and assigns them to clients based on some utilization algorithm. A factory object enables the use of polymorphism by returning object references to different implementations depending on 31/03/03 the criteria specified by a client. Thales Air Traffic Management 81
  • 82. Polymorphism and Factory Pattern quot; 31/03/03 Thales Air Traffic Management 82
  • 83. Polymorphism and Factory Pattern quot; 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 quot; 31/03/03 Thales Air Traffic Management 89
  • 90. CORBA use case Can we use CORBA in Large Distributed Control System ? What do We want ! Complex System Seamless Integration Why CORBA ? Object Software Bus Design for changes Change example : Printer CORBA distributed polymorphism example CORBA and Distributed Design pattern example Procedural design versus Object design Designing Distributed Object 31/03/03 Normalisation processes Thales Air Traffic Management 90
  • 91. Why is procedural design expensive to change ? quot; quot; quot; # quot; quot; + ! quot; # quot; quot; # 31/03/03 Thales Air Traffic Management 91
  • 92. Why is OOD easy to change ? quot; )quot; # quot; quot; 2quot; )quot; quot; # )quot; )quot; quot; quot; 31/03/03 Thales Air Traffic Management 92
  • 93. Object collaboration 31/03/03 Thales Air Traffic Management 93
  • 94. Why is OOD easy to change ? + ! quot; # ! )quot; quot; # ! quot; quot; )quot; quot; # quot; # quot;# ? @ 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 + quot; +! quot; quot; # 2( quot; # quot; #quot; quot; # ! !quot; quot; quot; !quot; #% quot; # quot;E 2( ! ( quot; quot;quot; # ( ' ( !quot; quot;quot; # ( 0 ( quot; # ( quot; # ( ! !quot;quot; 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. !quot;( quot; & 0 - !quot; ( quot; # ( ! !quot;( 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 % quot; # quot; quot; )quot; 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 !quot; ! )quot; quot; quot; ! )quot; # ( quot; # !quot;quot; # quot; quot; ! quot; )quot; + 2quot; )quot; % ! ! #quot; (quot; quot; 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 ! ( )quot; ! quot; quot; quot; # # ! ( quot;quot; # )quot; ! + ( !quot; ( )quot; quot; ## + quot; )quot; quot; quot; (quot; 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 quot; & )quot; quot; !quot; )quot; )quot; & '# quot; % ! ! # ' ! quot; quot; (quot; 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 & ( ' quot; quot; # quot; quot; quot; ' # ( )quot; # & quot; # & + ! )quot; quot; # )quot; 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() $quot; quot; Operation2() Operation3() 31/03/03 Thales Air Traffic Management 123
  • 124. Object By Value Event Factory Local Object Remote Object $quot; )quot; OBV new Event Type Operation1() Operation2() Operation3() 31/03/03 Thales Air Traffic Management 124
  • 125. CORBA use case Can we use CORBA in Large Distributed Control System ? What do We want ! Complex System Seamless Integration Why CORBA ? Object Software Bus Design for changes Change example : Printer CORBA distributed polymorphism example CORBA and Distributed Design pattern example Procedural design versus Object design Designing Distributed Object 31/03/03 Normalisation processes Thales Air Traffic Management 125
  • 126. Separation Of Concern Security Fault Load Transaction Tolerance Balancing Printer Printer Printer Printer 31/03/03 Thales Air Traffic Management 126
  • 127. Separation Of Concern quot; quot; ! (# quot; quot; quot; quot; quot; )quot; )quot; quot; )quot; quot; )quot; quot; quot; ! quot; quot; )quot; quot; 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 quot; ! $ quot;# quot; quot; 1 quot; ! 31/03/03 Thales Air Traffic Management 131
  • 132. Application Lay out quot; $ #quot; quot;- 31/03/03 Thales Air Traffic Management 132
  • 133. Application Lay out quot; $quot; quot; # $ #quot; quot;- quot; quot; - 31/03/03 Thales Air Traffic Management 133
  • 134. Application Lay out quot; quot; $ #quot; quot; quot; quot; quot; quot; quot; - quot; quot; 31/03/03 Thales Air Traffic Management 134
  • 135. Y Standardization Process quot; quot; quot; # ! # quot; quot; ( # quot; ! quot; quot; quot; quot; quot; 0 ( ! quot;% ( A quot; 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