SlideShare ist ein Scribd-Unternehmen logo
1 von 71
Downloaden Sie, um offline zu lesen
Dynamic	
  Backward	
  Slicing	
  
                                 of	
  Model	
  Transforma7ons	
  

                                       Zoltán  Ujhelyi,	
  Ákos	
  Horváth,	
  
                                                Dániel	
  Varró  




Budapest  University  of  Technology  and  Economics  
Department  of  Measurement  and  Informa<on  Systems  
Models	
  and	
  Transforma7ons	
  in	
  Cri7cal	
  Systems	
  


System	
  Design	
  	
  
    Model	
  

                           Refine	
  

                  Architecture	
  
                     Design	
  
                    	
  Model	
  
                                 Refine	
  

                                Component	
  
                                  Design	
  
                                  Model	
  
Models	
  and	
  Transforma7ons	
  in	
  Cri7cal	
  Systems	
  


     System	
  Design	
  	
  
         Model	
  

                                 Refine	
  
Simula7on	
  
                       Architecture	
  
                          Design	
  
                         	
  Model	
  
                                        Refine	
  
              Simula7on	
  
                                       Component	
  
                                         Design	
  
                                         Model	
  

                                Simula7on	
  
Models	
  and	
  Transforma7ons	
  in	
  Cri7cal	
  Systems	
  
                                             Horizontal	
  Model	
  Transforma7ons	
  
                                                       Model	
  genera7on	
  
     System	
  Design	
  	
                                                                             System	
  V&V	
  
         Model	
                                                                                           Model	
  
                                                         Back-­‐Annota7on	
  
                                 Refine	
                                                      Use	
  
Simula7on	
                                              Model	
  genera7on	
                                         Formal	
  
                       Architecture	
                                                                                 methods	
  
                                                                                         Architecture	
  V&V	
  
                          Design	
  
                                                                                              Model	
  
                         	
  Model	
  
                                        Refine	
          Back-­‐Annota7on	
  
                                                                                    Use	
  
              Simula7on	
                                Model	
  genera7on	
                             Formal	
  
                                       Component	
                                Component	
  	
         methods	
  
                                         Design	
                                    V&V	
  
                                         Model	
                                    Model	
  
                                                         Back-­‐Annota7on	
  
                                Simula7on	
  
Models	
  and	
  Transforma7ons	
  in	
  Cri7cal	
  Systems	
  
                                                                                      Horizontal	
  Model	
  Transforma7ons	
  
                                                                                                Model	
  genera7on	
  
                                              System	
  Design	
  	
                                                                                          System	
  V&V	
  
                                                  Model	
                                                                                                        Model	
  
                                                                                                     Back-­‐Annota7on	
  
                                                                          Refine	
                                                                   Use	
  
                                         Simula7on	
                                                Model	
  genera7on	
                                                    Formal	
  
                                                                Architecture	
                                                                                              methods	
  
                                                                                                                                                Architecture	
  V&V	
  
Ver7cal	
  Model	
  Transforma7ons	
  




                                                                   Design	
  
                                                                                                                                                     Model	
  
                                                                  	
  Model	
  
                                                                                 Refine	
            Back-­‐Annota7on	
  
                                                                                                                                          Use	
  
                                                       Simula7on	
                                  Model	
  genera7on	
                                        Formal	
  
                                                                                Component	
                                            Component	
  	
          methods	
  
                                                                                  Design	
                                                V&V	
  
                                                                                  Model	
                                                Model	
  
                                                                                                     Back-­‐Annota7on	
  
                                                                         Simula7on	
  
                                                                                 Code	
  	
                      Test	
  
                                                                            Genera7on	
                          Genera7on	
  


                                                                                               Design	
  +	
  V&V	
  Ar7facts	
  	
  
                                                                                              (Source	
  code,	
  Glue	
  code,	
  	
  
                                                                                         Config.	
  Tables,	
  Test	
  Cases,	
  Monitors,	
  
                                                                                                     Fault	
  Trees,	
  etc.)	
  
Models	
  and	
  Transforma7ons	
  in	
  Cri7cal	
  Systems	
  
                                                                                      Horizontal	
  Model	
  Transforma7ons	
  
                                                                                                Model	
  genera7on	
  
                                              System	
  Design	
  	
                                                                                            System	
  V&V	
  
                                                  Model	
                                                                                                          Model	
  
                                                                                                     Back-­‐Annota7on	
  
                                                                          Refine	
                                                                   Use	
  
                                         Simula7on	
                                                Model	
  genera7on	
                                                      Formal	
  
                                                                Architecture	
                                                                                                methods	
  
                                                                                                                                                Architecture	
  V&V	
  
Ver7cal	
  Model	
  Transforma7ons	
  




                                                                   Design	
  
                                                                                                                                                     Model	
  
                                                                  	
  Model	
  
                                                                                 Refine	
            Back-­‐Annota7on	
  
                                                                                                                                          Use	
  
                                                       Simula7on	
                                  Model	
  genera7on	
                                          Formal	
  
                                                                                Component	
                                            Component	
  	
            methods	
  
                                                                                  Design	
                                                V&V	
  
                                                                                  Model	
                                                Model	
  
                                                                                                     Back-­‐Annota7on	
  
                                                                         Simula7on	
  
                                                                                                                                                        Model	
  Transforma7ons	
  
                                                                                 Code	
  	
                      Test	
                                 • 	
  systema7c	
  founda7on	
  of	
  	
  
                                                                            Genera7on	
                          Genera7on	
  
                                                                                                                                                        	
  	
  knowledge	
  transfer:	
  	
  
                                                                                                                                                        	
  	
  theore7cal	
  resultstools	
  
                                                                                               Design	
  +	
  V&V	
  Ar7facts	
  	
                     • 	
  bridge	
  /	
  integrate	
  	
  
                                                                                              (Source	
  code,	
  Glue	
  code,	
  	
  
                                                                                                                                                        	
  	
  exis7ng	
  languages&tools	
  
                                                                                         Config.	
  Tables,	
  Test	
  Cases,	
  Monitors,	
  
                                                                                                     Fault	
  Trees,	
  etc.)	
  
Overview	
  of	
  Model	
  Transforma7ons	
  


                  Modeling	
  tool	
  
   Source	
                                Target	
  
                      MT	
  rule	
  
  metamodel	
                            metamodel	
  


    Source	
                               Target	
  
    model	
                                model	
  
Overview	
  of	
  Model	
  Transforma7ons	
  


                         Modeling	
  tool	
  
   Source	
                                       Target	
  
                             MT	
  rule	
  
  metamodel	
                                   metamodel	
  


    Source	
                                      Target	
  
    model	
                                       model	
  
                  Model: Description
                  of a concrete system
Overview	
  of	
  Model	
  Transforma7ons	
  
Metamodel: Precise spec of
a modeling language

                              Modeling	
  tool	
  
        Source	
                                       Target	
  
                                  MT	
  rule	
  
       metamodel	
                                   metamodel	
  


         Source	
                                      Target	
  
         model	
                                       model	
  
                       Model: Description
                       of a concrete system
Overview	
  of	
  Model	
  Transforma7ons	
  
Metamodel: Precise spec of                  Model Transformation:
a modeling language                         How to generate a target equivalent
                                            of an arbitrary source model
                              Modeling	
  tool	
  
        Source	
                                              Target	
  
                                  MT	
  rule	
  
       metamodel	
                                          metamodel	
  


         Source	
                                             Target	
  
         model	
                                              model	
  
                       Model: Description
                       of a concrete system
Overview	
  of	
  Model	
  Transforma7ons	
  
                       Eclipse	
  Framework	
  
                  Model	
  Transforma7on	
  Tool	
  

                          Modeling	
  tool	
  
   Source	
                                              Target	
  
                              MT	
  rule	
  
  metamodel	
                                          metamodel	
  


    Source	
                                             Target	
  
                             MT	
  engine	
  
    model	
                                              model	
  
Overview	
  of	
  Model	
  Transforma7ons	
  
                        Eclipse	
  Framework	
  
                   Model	
  Transforma7on	
  Tool	
  

                           Modeling	
  tool	
  
   Source	
                                               Target	
  
                               MT	
  rule	
  
  metamodel	
                                           metamodel	
  


    Source	
                                              Target	
  
                              MT	
  engine	
  
    model	
                                               model	
  


                  Transformation engine:
                  Support for querying and
                  manipulating large models
Overview	
  of	
  Model	
  Transforma7ons	
  
                                Eclipse	
  Framework	
  
                           Model	
  Transforma7on	
  Tool	
  

                                   Modeling	
  tool	
  
         Source	
                                                      Target	
  
                                         MT	
  rule	
  
        metamodel	
                                                  metamodel	
  


          Source	
                                                     Target	
  
                                      MT	
  engine	
  
          model	
                                                      model	
  


                          Transformation engine:
                          Support for querying and
                          manipulating large models
                                                                       ATL	
  
VIATRA2:	
  
hYp://www.eclipse.org/gmt/VIATRA2/	
                       QVT	
  
Demonstra7ng	
  example:	
  Petri	
  net	
  Simula7on	
  
  Petri	
  nets	
                                                Architecture	
  
                                                                     Design	
  
                                                                    	
  Model	
  
    o Used	
  e.g.	
  in	
  component	
  
      design	
  analysis	
                                                     Component	
  
    o Places	
  and	
  Transi7ons	
                                              Design	
  
                                                                                 Model	
  
                                                         Simula<on  
    o State	
  of	
  the	
  net	
  
         •  Tokens	
  
                                                                                      Store	
  
  Simulator	
  transforma7on	
                                      Query	
  
    o In-­‐place	
  transforma7on	
                  Client	
  
      (source	
  and	
  target	
  
      metamodels	
  are	
  iden7cal)	
                                                 Server	
  

    o Uses	
  both	
  impera7ve	
  
      and	
  declara7ve	
  elements	
  
                                                                   Respond	
  
                                            14	
  
Graph	
  transforma7on	
  rules	
  
                        removeToken	
  rule	
  

LHS                                         RHS  


                                                Store	
  

                               Query	
  

               Client	
  

                                                    Server	
  




                             Respond	
  
                                   15	
  
Graph	
  transforma7on	
  rules	
  
                        removeToken	
  rule	
  

LHS                                         RHS  


                                                Store	
  

                               Query	
  

               Client	
  

                                                    Server	
  




                             Respond	
  
                                   16	
  
Graph	
  transforma7on	
  rules	
  
                        removeToken	
  rule	
  

LHS                                         RHS  


                                                Store	
  

                               Query	
  

               Client	
  

                                                    Server	
  




                             Respond	
  
                                   17	
  
Graph	
  transforma7on	
  rules	
  
                        removeToken	
  rule	
  

LHS                                         RHS  


                                                Store	
  

                               Query	
  

               Client	
  

                                                    Server	
  




                             Respond	
  
                                   18	
  
Graph	
  transforma7on	
  rules	
  
                        removeToken	
  rule	
  

LHS                                         RHS  


                                                Store	
  

                               Query	
  

               Client	
  

                                                    Server	
  




                             Respond	
  
                                   19	
  
Graph	
  transforma7on	
  rules	
  
                        removeToken	
  rule	
  

LHS                                         RHS  


                                                Store	
  

                               Query	
  

               Client	
  

                                                    Server	
  




                             Respond	
  
                                   20	
  
Graph	
  transforma7on	
  rules	
  
                        removeToken	
  rule	
  

LHS                                         RHS  


                                                Store	
  

                               Query	
  

               Client	
  

                                                    Server	
  




                             Respond	
  
                                   21	
  
Control	
  Structure	
  
rule  fireTransition(in  T)  =  {
    if  (find  isFireable(T))  {
        //  remove  tokens  from  source  places
        forall  Pl  
            with  find  sourcePlace(T,Pl)  
            do  apply  removeToken(Pl);
        //  creates  tokens  on  target  places
        forall  Pl  
            with  find  targetPlace(T,Pl)
            do  apply  addToken(Pl);
    }
}
                          22	
  
Debugging	
  model	
  transforma7ons	
  

Basic	
  debugging	
  ques7ons	
  

• Why	
  is	
  a	
  certain	
  statement	
  executed?	
  
• Why	
  is	
  a	
  certain	
  model	
  element	
  created?	
  

Finding	
  dependencies	
  

• Hidden	
  data	
  dependencies	
  
• Declara7ve	
  rules	
  

                                23	
  
Debugging	
  model	
  transforma7ons	
  

Basic	
  debugging	
  ques7ons	
  

• Why	
  is	
  a	
  certain	
  statement	
  executed?	
  
• Why	
  is	
  a	
  certain	
  model	
  element	
  created?	
  

Finding	
  dependencies	
  
                                              ‘Dynamic	
  backward	
  
                                              slicing’	
  problem	
  
• Hidden	
  data	
  dependencies	
  
• Declara7ve	
  rules	
  

                                24	
  
Program	
  Slicing	
  
  Dependency	
  analysis	
             Example	
  
  Use	
  cases	
                       	
  
     o  Debugging	
  solware	
          1.       int  i;
     o  Impact	
  analysis	
            2.       int  sum  =  0;
     o  ...	
                           3.       int  product  =  1;
  Types	
  of	
  slicing	
             4.       for(i  =  1;  i  <  N;  ++i)  {
     o  Dynamic/sta7c	
                 5.           sum  =  sum  +  i;
     o  Backward/Forward	
              6.           product  =  product  *i;
                                        7.       }
                                        8.       write(sum);
                                        9.       write(product);


                                              25	
  
Program	
  Slicing	
  
  Dependency	
  analysis	
                 Example	
  
  Use	
  cases	
                           	
  
     o  Debugging	
  solware	
              1.       int  i;
     o  Impact	
  analysis	
                2.       int  sum  =  0;
     o  ...	
                               3.       int  product  =  1;
  Types	
  of	
  slicing	
                 4.       for(i  =  1;  i  <  N;  ++i)  {
     o  Dynamic/sta7c	
                     5.           sum  =  sum  +  i;
           Slicing	
  criterion:	
  
     o  Backward/Forward	
                  6.           product  =  product  *i;
           a	
  statement	
  and	
  a	
     7.       }
           variable	
  
                                            8.       write(sum);
                                            9.       write(product);


                                                  26	
  
Program	
  Slicing	
  
  Dependency	
  analysis	
             Example	
  
  Use	
  cases	
   statements	
  
           Slice:	
                     	
  
                the	
  criterion	
  
     o  Debugging	
  solware	
          1.       int  i;
                depends	
  on	
  
     o  Impact	
  analysis	
            2.       int  sum  =  0;
     o  ...	
                           3.       int  product  =  1;
  Types	
  of	
  slicing	
             4.       for(i  =  1;  i  <  N;  ++i)  {
     o  Dynamic/sta7c	
                 5.           sum  =  sum  +  i;
     o  Backward/Forward	
              6.           product  =  product  *i;
                                        7.       }
                                        8.       write(sum);
                                        9.       write(product);


                                              27	
  
Program	
  Slicing	
  
  Dependency	
  analysis	
             Example	
  
  Use	
  cases	
   statements	
  
           Slice:	
                     	
  
                the	
  criterion	
  
     o  Debugging	
  solware	
          1.       int  i;
                depends	
  on	
  
     o  Impact	
  analysis	
            2.       int  sum  =  0;
     o  ...	
                           3.       int  product  =  1;
  Types	
  of	
  slicing	
             4.       for(i  =  1;  i  <  N;  ++i)  {
     o  Dynamic/sta7c	
                 5.           sum  =  sum  +  i;
     o  Backward/Forward	
              6.           product  =  product  *i;
                                        7.       }
                                        8.       write(sum);
                                        9.       write(product);


                                              28	
  
Slicing	
  Model	
  Transforma7ons	
  
  Similar	
  to	
  program	
  slicing	
  
  BUT:	
  processing	
  (input)	
  models	
  is	
  required	
  



  Our	
  approach:	
  
                                 Criterion	
  



                                                           Transforma7on	
  
 Transforma7on	
                 Model	
                        Slice	
  
                             transforma7on	
  
     Models	
                    slicing	
                   Model	
  Slice	
  


                                       29	
  
Approach	
  
Input	
                      Transforma7on	
  
model	
                         Program	
  

                           rule  fireTransition(in  T)  =  {
                               if  (find  isFireable(T))  {
                                   //  remove  tokens  from  source  
                           places
                                   forall  Pl  
                                       with  find  sourcePlace(T,Pl)  
                                       do  apply  removeToken(Pl);
                                   //  creates  tokens  on  target  
                           places
                                   forall  Pl  
                                       with  find  targetPlace(T,Pl)
                                       do  apply  addToken(Pl);
                               }
                           }
                           	
  




                 30	
  
Approach	
  
Input	
                                   Transforma7on	
  
            1.	
  Execu7ng	
  the	
          Program	
  
model	
  
            Transforma7on	
  

                                        rule  fireTransition(in  T)  =  {
                                            if  (find  isFireable(T))  {
                                                //  remove  tokens  from  source  
                                        places
                                                forall  Pl  
                                                    with  find  sourcePlace(T,Pl)  
                                                    do  apply  removeToken(Pl);
                                                //  creates  tokens  on  target  
                                        places
                                                forall  Pl  
                                                    with  find  targetPlace(T,Pl)
                                                    do  apply  addToken(Pl);
                                            }
                                        }
                                        	
  




                          31	
  
Approach	
  
  Input	
                                   Transforma7on	
  
              1.	
  Execu7ng	
  the	
          Program	
  
  model	
  
              Transforma7on	
  

                                          rule  fireTransition(in  T)  =  {
                                              if  (find  isFireable(T))  {
                                                  //  remove  tokens  from  source  
                                          places
Output	
                                          forall  Pl  

model	
  
                                                      with  find  sourcePlace(T,Pl)  
                                                      do  apply  removeToken(Pl);
                                                  //  creates  tokens  on  target  
                                          places
                                                  forall  Pl  
                                                      with  find  targetPlace(T,Pl)
                                                      do  apply  addToken(Pl);
                                              }
                                          }
                                          	
  




                            32	
  
Approach	
  
  Input	
                                   Transforma7on	
  
              1.	
  Execu7ng	
  the	
          Program	
  
  model	
  
              Transforma7on	
  

                                          rule  fireTransition(in  T)  =  {
                                              if  (find  isFireable(T))  {
                                                  //  remove  tokens  from  source  
                                          places
Output	
                                          forall  Pl  

model	
       2.	
  Genera7ng	
  an	
                 with  find  sourcePlace(T,Pl)  
                                                      do  apply  removeToken(Pl);

              Execu7on	
  Trace	
                 //  creates  tokens  on  target  
                                          places
                                                  forall  Pl  
                                                      with  find  targetPlace(T,Pl)
                                                      do  apply  addToken(Pl);
                                              }
                                          }
                                          	
  




                            33	
  
Approach	
  
  Input	
                                              Transforma7on	
  
              1.	
  Execu7ng	
  the	
  For	
  each	
  statement	
  record:	
  
                                                             Program	
  
  model	
  
              Transforma7on	
   •  Variable	
  Usage	
  
                                       •  Model	
  Usage	
  
                                       •  Model	
  Manipula7on	
  
                                                  rule  fireTransition(in  T)  =  {
                                                      if  (find  isFireable(T))  {
                                                             //  remove  tokens  from  source  
                                                     places
Output	
                                                     forall  Pl  

model	
       2.	
  Genera7ng	
  an	
                            with  find  sourcePlace(T,Pl)  
                                                                 do  apply  removeToken(Pl);

              Execu7on	
  Trace	
                            //  creates  tokens  on  target  
                                                     places
                                                             forall  Pl  
                                                                 with  find  targetPlace(T,Pl)
                                                                 do  apply  addToken(Pl);
                                                         }
                                                     }
                                                     	
  




                            34	
  
Approach	
  
  Input	
                                   Transforma7on	
  
              1.	
  Execu7ng	
  the	
          Program	
  
  model	
  
              Transforma7on	
  

                                          rule  fireTransition(in  T)  =  {
                                              if  (find  isFireable(T))  {
                                                  //  remove  tokens  from  source  
                                          places
Output	
                                          forall  Pl  

model	
       2.	
  Genera7ng	
  an	
                 with  find  sourcePlace(T,Pl)  
                                                      do  apply  removeToken(Pl);

              Execu7on	
  Trace	
                 //  creates  tokens  on  target  
                                          places
                                                  forall  Pl  
                                                      with  find  targetPlace(T,Pl)
                                                      do  apply  addToken(Pl);
                                              }
                                          }
                                          	
  




                            35	
  
Approach	
  
  Input	
                                   Transforma7on	
  
              1.	
  Execu7ng	
  the	
          Program	
  
  model	
  
              Transforma7on	
  

                                          rule  fireTransition(in  T)  =  {
                                              if  (find  isFireable(T))  {
                                                  //  remove  tokens  from  source  
                                          places
Output	
                                          forall  Pl  

model	
       2.	
  Genera7ng	
  an	
                 with  find  sourcePlace(T,Pl)  
                                                      do  apply  removeToken(Pl);

              Execu7on	
  Trace	
                 //  creates  tokens  on  target  
                                          places
                                                  forall  Pl  
                                                      with  find  targetPlace(T,Pl)
                                                      do  apply  addToken(Pl);
                                              }
                                          }
                                          	
  


                3.	
  Calcula7ng	
  
                      the	
  Slice	
  


                            36	
  
Approach	
  
  Input	
                                                 Transforma7on	
  
                            1.	
  Execu7ng	
  the	
          Program	
  
  model	
  
                            Transforma7on	
  
     Criteria:	
  
     Model	
  element	
                                 rule  fireTransition(in  T)  =  {
                                                            if  (find  isFireable(T))  {
                                                                //  remove  tokens  from  source  
                                                        places
Output	
                                                        forall  Pl  

model	
                     2.	
  Genera7ng	
  an	
                 with  find  sourcePlace(T,Pl)  
                                                                    do  apply  removeToken(Pl);

                            Execu7on	
  Trace	
                 //  creates  tokens  on  target  
                                                        places
                                                                forall  Pl  
                                                                    with  find  targetPlace(T,Pl)
                                                                    do  apply  addToken(Pl);
                                                            }
                                                        }
                                                        	
  


                              3.	
  Calcula7ng	
  
                                    the	
  Slice	
  


                                          37	
  
Approach	
  
  Input	
                                                                   Transforma7on	
  
                            1.	
  Execu7ng	
  the	
                            Program	
  
  model	
  
                            Transforma7on	
  
     Criteria:	
                      Criteria:	
  
     Model	
  element	
               Program	
  statement	
     rule  fireTransition(in  T)  =  {
                                                                     if  (find  isFireable(T))  {

                                      (and	
  a	
  variable)	
   places
                                                                         //  remove  tokens  from  source  

Output	
                                                                 forall  Pl  

model	
                     2.	
  Genera7ng	
  an	
                          with  find  sourcePlace(T,Pl)  
                                                                             do  apply  removeToken(Pl);

                            Execu7on	
  Trace	
                          //  creates  tokens  on  target  
                                                                 places
                                                                                  forall  Pl  
                                                                                      with  find  targetPlace(T,Pl)
                                                                                      do  apply  addToken(Pl);
                                                                              }
                                                                          }
                                                                          	
  


                              3.	
  Calcula7ng	
  
                                    the	
  Slice	
  


                                             38	
  
Approach	
  
  Input	
                                   Transforma7on	
  
              1.	
  Execu7ng	
  the	
          Program	
  
  model	
  
              Transforma7on	
  

                                          rule  fireTransition(in  T)  =  {
                                              if  (find  isFireable(T))  {
                                                  //  remove  tokens  from  source  
                                          places
Output	
                                          forall  Pl  

model	
       2.	
  Genera7ng	
  an	
                 with  find  sourcePlace(T,Pl)  
                                                      do  apply  removeToken(Pl);

              Execu7on	
  Trace	
                 //  creates  tokens  on  target  
                                          places
                                                  forall  Pl  
                                                      with  find  targetPlace(T,Pl)
                                                      do  apply  addToken(Pl);
                                              }
                                          }
                                          	
  


                3.	
  Calcula7ng	
  
                      the	
  Slice	
  


                            39	
  
Approach	
  
  Input	
                                       Transforma7on	
  
              1.	
  Execu7ng	
  the	
              Program	
  
  model	
  
              Transforma7on	
  

                                              rule  fireTransition(in  T)  =  {
                                                  if  (find  isFireable(T))  {
                                                      //  remove  tokens  from  source  
                                              places
Output	
                                              forall  Pl  

model	
       2.	
  Genera7ng	
  an	
  
                •  Traversing	
  Trace	
  Records	
  Backwards	
  
                                                          with  find  sourcePlace(T,Pl)  
                                                          do  apply  removeToken(Pl);

              Execu7on	
  Trace	
                     //  creates  tokens  on  target  
                •  Selec7ng	
  Dependent	
  Trace	
  Records	
  
                                              places
                                                      forall  Pl  
                                                          with  find  targetPlace(T,Pl)
                                                          do  apply  addToken(Pl);
                                                  }
                                              }
                                              	
  


                3.	
  Calcula7ng	
  
                      the	
  Slice	
  


                            40	
  
Approach	
  
  Input	
                                   Transforma7on	
  
              1.	
  Execu7ng	
  the	
          Program	
  
  model	
  
              Transforma7on	
  

                                          rule  fireTransition(in  T)  =  {
                                              if  (find  isFireable(T))  {
                                                  //  remove  tokens  from  source  
                                          places
Output	
                                          forall  Pl  

model	
       2.	
  Genera7ng	
  an	
                 with  find  sourcePlace(T,Pl)  
                                                      do  apply  removeToken(Pl);

              Execu7on	
  Trace	
                 //  creates  tokens  on  target  
                                          places
                                                  forall  Pl  
                                                      with  find  targetPlace(T,Pl)
                                                      do  apply  addToken(Pl);
                                              }
                                          }
                                          	
  


                3.	
  Calcula7ng	
  
                      the	
  Slice	
  


                            41	
  
Approach	
  
  Input	
                                   Transforma7on	
  
              1.	
  Execu7ng	
  the	
          Program	
  
  model	
  
              Transforma7on	
  

                                          rule  fireTransition(in  T)  =  {
                                              if  (find  isFireable(T))  {
                                                  //  remove  tokens  from  source  
                                          places
Output	
                                          forall  Pl  

model	
       2.	
  Genera7ng	
  an	
                 with  find  sourcePlace(T,Pl)  
                                                      do  apply  removeToken(Pl);

              Execu7on	
  Trace	
                 //  creates  tokens  on  target  
                                          places
                                                  forall  Pl  
                                                      with  find  targetPlace(T,Pl)
                                                      do  apply  addToken(Pl);
                                              }
                                          }
                                          	
  


                3.	
  Calcula7ng	
  
                      the	
  Slice	
  


                            42	
  
Approach	
  
  Input	
                                   Transforma7on	
  
              1.	
  Execu7ng	
  the	
          Program	
  
  model	
  
              Transforma7on	
  

                                          rule  fireTransition(in  T)  =  {
                                              if  (find  isFireable(T))  {
                                                  //  remove  tokens  from  source  
                                          places
Output	
                                          forall  Pl  

model	
       2.	
  Genera7ng	
  an	
                 with  find  sourcePlace(T,Pl)  
                                                      do  apply  removeToken(Pl);

              Execu7on	
  Trace	
                 //  creates  tokens  on  target  
                                          places
                                                  forall  Pl  
                                                      with  find  targetPlace(T,Pl)
                                                      do  apply  addToken(Pl);
                                              }
                                          }
                                          	
  

Sliced	
        3.	
  Calcula7ng	
  
model	
  
                      the	
  Slice	
  


                            43	
  
Slicing	
  Model	
  Transforma7ons	
  –	
  An	
  Example	
  
rule  fireTransition(in  T)  =  {
                   (1)	
  
    if  (find  isFireable(T))  {
                    (2)	
                  Query	
  
        //  remove  tokens  from  source  places
        forall  Pl  
                                (3)	
   Client	
  
                                                                                             Store	
  
            with  find  sourcePlace(T,Pl)  
         (4)	
  
            do  apply  removeToken(Pl);
             (5)	
  
        //  creates  tokens  on  target  places
                                             Server	
  
        forall  Pl  
                                (6)	
  
            with  find  targetPlace(T,Pl)
    (7)	
  (9)	
  
            do  apply  addToken(Pl);
        (8)	
  (10)	
  
    }
                                                                  Respond	
  
}
                                             Code	
   Instance	
  model	
  
Criteria:	
  rule	
  call	
  addToken,	
  variable	
  Pl
            Trace	
  Records:	
  

Lookup:	
  




                                                            44	
  
Slicing	
  Model	
  Transforma7ons	
  –	
  An	
  Example	
  
rule  fireTransition(in  T)  =  {
                   (1)	
  
    if  (find  isFireable(T))  {
                    (2)	
                  Query	
  
        //  remove  tokens  from  source  places
        forall  Pl  
                                (3)	
   Client	
  
                                                                                                       Store	
  
            with  find  sourcePlace(T,Pl)  
         (4)	
  
            do  apply  removeToken(Pl);
             (5)	
  
        //  creates  tokens  on  target  places
                                                      Server	
  
        forall  Pl  
                                (6)	
  
            with  find  targetPlace(T,Pl)
    (7)	
  (9)	
  
            do  apply  addToken(Pl);
        (8)	
  (10)	
  
    }
                                                                  Respond	
  
}
                                             Code	
   Instance	
  model	
  
Criteria:	
  rule	
  call	
  addToken,	
  variable	
  Pl
            Trace	
  Records:	
  

Lookup:	
                                                                10.  apply  addToken(Pl)
                                                                             Uses	
  variable:	
  Pl	
  
                                                                             Uses	
  model:	
  Server	
  
                                                                             Modifies  model:  Token


                                                            45	
  
Slicing	
  Model	
  Transforma7ons	
  –	
  An	
  Example	
  
rule  fireTransition(in  T)  =  {
                   (1)	
  
    if  (find  isFireable(T))  {
                    (2)	
                  Query	
  
        //  remove  tokens  from  source  places
        forall  Pl  
                                (3)	
   Client	
  
                                                                                                       Store	
  
            with  find  sourcePlace(T,Pl)  
         (4)	
  
            do  apply  removeToken(Pl);
             (5)	
  
        //  creates  tokens  on  target  places
                                                      Server	
  
        forall  Pl  
                                (6)	
  
            with  find  targetPlace(T,Pl)
    (7)	
  (9)	
  
            do  apply  addToken(Pl);
        (8)	
  (10)	
  
    }
                                                                  Respond	
  
}
                                             Code	
   Instance	
  model	
  
Criteria:	
  rule	
  call	
  addToken,	
  variable	
  Pl
            Trace	
  Records:	
  

Lookup:	
                                                                10.  apply  addToken(Pl)
  variable	
  Pl	
                                                           Uses	
  variable:	
  Pl	
  
                                                                             Uses	
  model:	
  Server	
  
                                                                             Modifies  model:  Token


                                                            46	
  
Slicing	
  Model	
  Transforma7ons	
  –	
  An	
  Example	
  
rule  fireTransition(in  T)  =  {
                   (1)	
  
    if  (find  isFireable(T))  {
                    (2)	
                  Query	
  
        //  remove  tokens  from  source  places
        forall  Pl  
                                (3)	
   Client	
  
                                                                                                             Store	
  
            with  find  sourcePlace(T,Pl)  
         (4)	
  
            do  apply  removeToken(Pl);
             (5)	
  
        //  creates  tokens  on  target  places
                                                            Server	
  
        forall  Pl  
                                (6)	
  
            with  find  targetPlace(T,Pl)
    (7)	
  (9)	
  
            do  apply  addToken(Pl);
        (8)	
  (10)	
  
    }
                                                                  Respond	
  
}
                                             Code	
   Instance	
  model	
  
Criteria:	
  rule	
  call	
  addToken,	
  variable	
  Pl
            Trace	
  Records:	
  

Lookup:	
                                                                9.  find  targetPlace(T,Pl)	
  
  variable	
  Pl	
                                                            Modifies	
  variable:	
  Pl	
  
                                                                              Uses	
  variable:	
  T	
  
                                                                              Uses	
  model:	
  Server,	
  Query


                                                            47	
  
Slicing	
  Model	
  Transforma7ons	
  –	
  An	
  Example	
  
rule  fireTransition(in  T)  =  {
                   (1)	
  
    if  (find  isFireable(T))  {
                    (2)	
                  Query	
  
        //  remove  tokens  from  source  places
        forall  Pl  
                                (3)	
   Client	
  
                                                                                                             Store	
  
            with  find  sourcePlace(T,Pl)  
         (4)	
  
            do  apply  removeToken(Pl);
             (5)	
  
        //  creates  tokens  on  target  places
                                                            Server	
  
        forall  Pl  
                                (6)	
  
            with  find  targetPlace(T,Pl)
    (7)	
  (9)	
  
            do  apply  addToken(Pl);
        (8)	
  (10)	
  
    }
                                                                  Respond	
  
}
                                             Code	
   Instance	
  model	
  
Criteria:	
  rule	
  call	
  addToken,	
  variable	
  Pl
            Trace	
  Records:	
  

Lookup:	
                                                                9.  find  targetPlace(T,Pl)	
  
                                              Data/model	
                    Modifies	
  variable:	
  Pl	
  
   variable	
  T	
                            dependency	
                    Uses	
  variable:	
  T	
  
                                                                              Uses	
  model:	
  Server,	
  Query


                                                            48	
  
Slicing	
  Model	
  Transforma7ons	
  –	
  An	
  Example	
  
rule  fireTransition(in  T)  =  {
                   (1)	
  
    if  (find  isFireable(T))  {
                    (2)	
                  Query	
  
        //  remove  tokens  from  source  places
        forall  Pl  
                                (3)	
   Client	
  
                                                                                                       Store	
  
            with  find  sourcePlace(T,Pl)  
         (4)	
  
            do  apply  removeToken(Pl);
             (5)	
  
        //  creates  tokens  on  target  places
                                                      Server	
  
        forall  Pl  
                                (6)	
  
            with  find  targetPlace(T,Pl)
    (7)	
  (9)	
  
            do  apply  addToken(Pl);
        (8)	
  (10)	
  
    }
                                                                  Respond	
  
}
                                             Code	
   Instance	
  model	
  
Criteria:	
  rule	
  call	
  addToken,	
  variable	
  Pl
            Trace	
  Records:	
  

Lookup:	
                                                                 8.  apply  addToken(Pl)
                                                                               Uses	
  variable:	
  Pl	
  
   variable	
  T	
                                                             Uses	
  model:	
  Store	
  
                                                                               Modifies  model:  Token


                                                            49	
  
Slicing	
  Model	
  Transforma7ons	
  –	
  An	
  Example	
  
rule  fireTransition(in  T)  =  {
                   (1)	
  
    if  (find  isFireable(T))  {
                    (2)	
                  Query	
  
        //  remove  tokens  from  source  places
        forall  Pl  
                                (3)	
   Client	
  
                                                                                                            Store	
  
            with  find  sourcePlace(T,Pl)  
         (4)	
  
            do  apply  removeToken(Pl);
             (5)	
  
        //  creates  tokens  on  target  places
                                                            Server	
  
        forall  Pl  
                                (6)	
  
            with  find  targetPlace(T,Pl)
    (7)	
  (9)	
  
            do  apply  addToken(Pl);
        (8)	
  (10)	
  
    }
                                                                  Respond	
  
}
                                             Code	
   Instance	
  model	
  
Criteria:	
  rule	
  call	
  addToken,	
  variable	
  Pl
            Trace	
  Records:	
  

Lookup:	
                                                                7.  find  targetPlace(T,Pl)	
  
                                                                              Modifies	
  variable:	
  Pl	
  
   variable	
  T	
                                                            Uses	
  variable:	
  T	
  
                                                                              Uses	
  model:	
  Store,	
  Query


                                                            50	
  
Slicing	
  Model	
  Transforma7ons	
  –	
  An	
  Example	
  
rule  fireTransition(in  T)  =  {
                   (1)	
  
    if  (find  isFireable(T))  {
                    (2)	
                  Query	
  
        //  remove  tokens  from  source  places
        forall  Pl  
                                (3)	
   Client	
  
                                                                                                    Store	
  
            with  find  sourcePlace(T,Pl)  
         (4)	
  
            do  apply  removeToken(Pl);
             (5)	
  
        //  creates  tokens  on  target  places
                                                    Server	
  
        forall  Pl  
                                (6)	
  
            with  find  targetPlace(T,Pl)
    (7)	
  (9)	
  
            do  apply  addToken(Pl);
        (8)	
  (10)	
  
    }
                                                                  Respond	
  
}
                                             Code	
   Instance	
  model	
  
Criteria:	
  rule	
  call	
  addToken,	
  variable	
  Pl
            Trace	
  Records:	
  

Lookup:	
                                                                  6.  forall  Pl	
  	
  

   variable	
  T	
  


                                                            51	
  
Slicing	
  Model	
  Transforma7ons	
  –	
  An	
  Example	
  
rule  fireTransition(in  T)  =  {
                   (1)	
  
    if  (find  isFireable(T))  {
                    (2)	
                  Query	
  
        //  remove  tokens  from  source  places
        forall  Pl  
                                (3)	
   Client	
  
                                                                                                    Store	
  
            with  find  sourcePlace(T,Pl)  
         (4)	
  
            do  apply  removeToken(Pl);
             (5)	
  
        //  creates  tokens  on  target  places
                                                    Server	
  
        forall  Pl  
                                (6)	
  
            with  find  targetPlace(T,Pl)
    (7)	
  (9)	
  
            do  apply  addToken(Pl);
        (8)	
  (10)	
  
    }
                                                                  Respond	
  
}
                                             Code	
   Instance	
  model	
  
Criteria:	
  rule	
  call	
  addToken,	
  variable	
  Pl
            Trace	
  Records:	
  

Lookup:	
                                                                  6.  forall  Pl	
  	
  
                                              Control	
  
   variable	
  T	
                            dependency	
  

                                                            52	
  
Slicing	
  Model	
  Transforma7ons	
  –	
  An	
  Example	
  
rule  fireTransition(in  T)  =  {
                   (1)	
  
    if  (find  isFireable(T))  {
                    (2)	
                  Query	
  
        //  remove  tokens  from  source  places
        forall  Pl  
                                (3)	
   Client	
  
                                                                                                        Store	
  
            with  find  sourcePlace(T,Pl)  
         (4)	
  
            do  apply  removeToken(Pl);
             (5)	
  
        //  creates  tokens  on  target  places
                                                        Server	
  
        forall  Pl  
                                (6)	
  
            with  find  targetPlace(T,Pl)
    (7)	
  (9)	
  
            do  apply  addToken(Pl);
        (8)	
  (10)	
  
    }
                                                                  Respond	
  
}
                                             Code	
   Instance	
  model	
  
Criteria:	
  rule	
  call	
  addToken,	
  variable	
  Pl
            Trace	
  Records:	
  

Lookup:	
                                                                5.  apply  removeToken(Pl)
                                                                              Uses	
  variable:	
  Pl	
  
   variable	
  T	
                                                            Uses	
  model:	
  Client	
  
                                                                              Removes  model:  Token


                                                            53	
  
Slicing	
  Model	
  Transforma7ons	
  –	
  An	
  Example	
  
rule  fireTransition(in  T)  =  {
                   (1)	
  
    if  (find  isFireable(T))  {
                    (2)	
                  Query	
  
        //  remove  tokens  from  source  places
        forall  Pl  
                                (3)	
   Client	
  
                                                                                                             Store	
  
            with  find  sourcePlace(T,Pl)  
         (4)	
  
            do  apply  removeToken(Pl);
             (5)	
  
        //  creates  tokens  on  target  places
                                                             Server	
  
        forall  Pl  
                                (6)	
  
            with  find  targetPlace(T,Pl)
    (7)	
  (9)	
  
            do  apply  addToken(Pl);
        (8)	
  (10)	
  
    }
                                                                  Respond	
  
}
                                             Code	
   Instance	
  model	
  
Criteria:	
  rule	
  call	
  addToken,	
  variable	
  Pl
            Trace	
  Records:	
  

Lookup:	
                                                                 4.  find  sourcePlace(T,Pl)	
  
                                                                               Modifies	
  variable:	
  Pl	
  
   variable	
  T	
                                                             Uses	
  variable:	
  T	
  
                                                                               Uses	
  model:	
  Client,	
  Query


                                                            54	
  
Slicing	
  Model	
  Transforma7ons	
  –	
  An	
  Example	
  
rule  fireTransition(in  T)  =  {
                   (1)	
  
    if  (find  isFireable(T))  {
                    (2)	
                  Query	
  
        //  remove  tokens  from  source  places
        forall  Pl  
                                (3)	
   Client	
  
                                                                                                  Store	
  
            with  find  sourcePlace(T,Pl)  
         (4)	
  
            do  apply  removeToken(Pl);
             (5)	
  
        //  creates  tokens  on  target  places
                                                  Server	
  
        forall  Pl  
                                (6)	
  
            with  find  targetPlace(T,Pl)
    (7)	
  (9)	
  
            do  apply  addToken(Pl);
        (8)	
  (10)	
  
    }
                                                                  Respond	
  
}
                                             Code	
   Instance	
  model	
  
Criteria:	
  rule	
  call	
  addToken,	
  variable	
  Pl
            Trace	
  Records:	
  

Lookup:	
                                                                3.  forall  Pl	
  	
  

   variable	
  T	
  


                                                            55	
  
Slicing	
  Model	
  Transforma7ons	
  –	
  An	
  Example	
  
rule  fireTransition(in  T)  =  {
                   (1)	
  
    if  (find  isFireable(T))  {
                    (2)	
                  Query	
  
        //  remove  tokens  from  source  places
        forall  Pl  
                                (3)	
   Client	
  
                                                                                                              Store	
  
            with  find  sourcePlace(T,Pl)  
         (4)	
  
            do  apply  removeToken(Pl);
             (5)	
  
        //  creates  tokens  on  target  places
                                                             Server	
  
        forall  Pl  
                                (6)	
  
            with  find  targetPlace(T,Pl)
    (7)	
  (9)	
  
            do  apply  addToken(Pl);
        (8)	
  (10)	
  
    }
                                                                  Respond	
  
}
                                             Code	
   Instance	
  model	
  
Criteria:	
  rule	
  call	
  addToken,	
  variable	
  Pl
            Trace	
  Records:	
  

Lookup:	
                                                                 2.  if  (find  isFireable(T))	
  
                                                                               Uses	
  variable:	
  T	
  
   variable	
  T	
                                                             Uses	
  model:	
  Client,	
  Query	
  



                                                            56	
  
Slicing	
  Model	
  Transforma7ons	
  –	
  An	
  Example	
  
rule  fireTransition(in  T)  =  {
                   (1)	
  
    if  (find  isFireable(T))  {
                    (2)	
                  Query	
  
        //  remove  tokens  from  source  places
        forall  Pl  
                                (3)	
   Client	
  
                                                                                                              Store	
  
            with  find  sourcePlace(T,Pl)  
         (4)	
  
            do  apply  removeToken(Pl);
             (5)	
  
        //  creates  tokens  on  target  places
                                                             Server	
  
        forall  Pl  
                                (6)	
  
            with  find  targetPlace(T,Pl)
    (7)	
  (9)	
  
            do  apply  addToken(Pl);
        (8)	
  (10)	
  
    }
                                                                  Respond	
  
}
                                             Code	
   Instance	
  model	
  
Criteria:	
  rule	
  call	
  addToken,	
  variable	
  Pl
            Trace	
  Records:	
  

Lookup:	
                                                                 2.  if  (find  isFireable(T))	
  
                                              Control	
                        Uses	
  variable:	
  T	
  
   variable	
  T	
                            dependency	
                     Uses	
  model:	
  Client,	
  Query	
  



                                                            57	
  
Slicing	
  Model	
  Transforma7ons	
  –	
  An	
  Example	
  
rule  fireTransition(in  T)  =  {
                   (1)	
  
    if  (find  isFireable(T))  {
                    (2)	
                  Query	
  
        //  remove  tokens  from  source  places
        forall  Pl  
                                (3)	
   Client	
  
                                                                                                   Store	
  
            with  find  sourcePlace(T,Pl)  
         (4)	
  
            do  apply  removeToken(Pl);
             (5)	
  
        //  creates  tokens  on  target  places
                                                   Server	
  
        forall  Pl  
                                (6)	
  
            with  find  targetPlace(T,Pl)
    (7)	
  (9)	
  
            do  apply  addToken(Pl);
        (8)	
  (10)	
  
    }
                                                                  Respond	
  
}
                                             Code	
   Instance	
  model	
  
Criteria:	
  rule	
  call	
  addToken,	
  variable	
  Pl
            Trace	
  Records:	
  

Lookup:	
                                                                 1.  rule  fireTransition(in  T)  
                                                                              Modifies:	
  variable	
  T	
  
   variable	
  T	
  


                                                            58	
  
Slicing	
  Model	
  Transforma7ons	
  –	
  An	
  Example	
  
rule  fireTransition(in  T)  =  {
                   (1)	
  
    if  (find  isFireable(T))  {
                    (2)	
                  Query	
  
        //  remove  tokens  from  source  places
        forall  Pl  
                                (3)	
   Client	
  
                                                                                                   Store	
  
            with  find  sourcePlace(T,Pl)  
         (4)	
  
            do  apply  removeToken(Pl);
             (5)	
  
        //  creates  tokens  on  target  places
                                                   Server	
  
        forall  Pl  
                                (6)	
  
            with  find  targetPlace(T,Pl)
    (7)	
  (9)	
  
            do  apply  addToken(Pl);
        (8)	
  (10)	
  
    }
                                                                  Respond	
  
}
                                             Code	
   Instance	
  model	
  
Criteria:	
  rule	
  call	
  addToken,	
  variable	
  Pl
            Trace	
  Records:	
  

Lookup:	
                                                                 1.  rule  fireTransition(in  T)  
                                              Data/model	
                    Modifies:	
  variable	
  T	
  
                                              dependency	
  

                                                            59	
  
Implementa7on	
  Architecture	
  
                Model	
  Transforma7on	
  Tool	
  
 Source	
                                              Target	
  
                         MT	
  program	
  
metamodel	
                                          metamodel	
  


  Source	
                                             Target	
  
                          MT	
  engine	
  
  model	
                                              model	
  
Implementa7on	
  Architecture	
  
                Model	
  Transforma7on	
  Tool	
  
 Source	
                                              Target	
  
                         MT	
  program	
  
metamodel	
                                          metamodel	
  


  Source	
                                             Target	
  
                          MT	
  engine	
  
  model	
                                              model	
  



                          Execu7on	
  
                            Trace	
  
Implementa7on	
  Architecture	
  
                Model	
  Transforma7on	
  Tool	
  
 Source	
                                                Target	
  
                         MT	
  program	
  
metamodel	
                                            metamodel	
  


  Source	
                                                Target	
  
                                             Trace	
  metamodel	
  defined	
  
                          MT	
  engine	
  
  model	
                                                 model	
  
                                             for	
  adaptability	
  


                          Execu7on	
  
                            Trace	
  
Implementa7on	
  Architecture	
  
                Model	
  Transforma7on	
  Tool	
  
 Source	
                                              Target	
  
                         MT	
  program	
  
metamodel	
                                          metamodel	
  


  Source	
                                             Target	
  
                          MT	
  engine	
  
  model	
                                              model	
  



                          Execu7on	
  
                            Trace	
  
Implementa7on	
  Architecture	
  
                Model	
  Transforma7on	
  Tool	
  
 Source	
                                              Target	
  
                         MT	
  program	
  
metamodel	
                                          metamodel	
  


  Source	
                                             Target	
  
                          MT	
  engine	
  
  model	
                                              model	
  



                          Execu7on	
  
                            Trace	
  



                      Slicing	
  algorithm	
  
Implementa7on	
  Architecture	
  
                Model	
  Transforma7on	
  Tool	
  
 Source	
                                              Target	
  
                         MT	
  program	
  
metamodel	
                                          metamodel	
  


  Source	
                                             Target	
  
                          MT	
  engine	
  
  model	
                                              model	
  



                          Execu7on	
  
                            Trace	
  



   Model	
  
                      Slicing	
  algorithm	
  
   Slice	
  
Implementa7on	
  Architecture	
  
                Model	
  Transforma7on	
  Tool	
  
 Source	
                                              Target	
  
                         MT	
  program	
  
metamodel	
                                          metamodel	
  


  Source	
                                             Target	
  
                          MT	
  engine	
  
  model	
                                              model	
  



                          Execu7on	
  
                            Trace	
  



   Model	
                                              Program	
  
                      Slicing	
  algorithm	
  
   Slice	
                                                Slice	
  
Case	
  Studies	
  
Petri	
  net	
                             Antworld	
  Case	
  
simula7on	
                                Study	
  
•  Simple	
  transforma7on,	
              •  Complex	
  simula7on	
  
   large	
  models	
                       •  Ever-­‐growing	
  models	
  


BPEL2SAL	
                                 Reengineering	
  
transforma7on	
                            Case	
  Study	
  
•  Complex	
  impera7ve	
                  •  Model	
  Extrac7on	
  
   control	
  structure	
  
                                  67	
  
Evalua7on	
  

 Measurements:	
       Manually	
  selected	
  
                                                         Ques7ons:	
  
    Size	
  of	
        slicing	
  criteria	
  
• Model	
  slice	
     • Mul7ple	
  for	
          • Independence	
  
• Transforma7on	
        each	
                      of	
  model	
  slice	
  
  slice	
                transforma7on	
             from	
  selected	
  
                       • Covering	
  all	
           statement	
  
                         phases	
  of	
  the	
     • Independence	
  
                         program	
                   of	
  program	
  slice	
  
                                                     from	
  model	
  
                                                     instances	
  



                                     68	
  
Evalua7on	
  

  Measurements:	
               Manually	
  selected	
  
                                                                  Ques7ons:	
  
     Size	
  of	
                slicing	
  criteria	
  
• Model	
  slice	
   Data-­‐driven	
  transforma7ons	
  
                                • Mul7ple	
  for	
          • Independence	
  
                                  each	
  
• Transforma7on	
  more	
  impera7ve	
  style	
  
                     or	
  
                                                              of	
  model	
  slice	
  
  slice	
                         transforma7on	
             from	
  selected	
  
                                • Covering	
  all	
           statement	
  
                                  phases	
  of	
  the	
     • Independence	
  
                                  program	
                   of	
  program	
  slice	
  
                                                              from	
  model	
  
                                                              instances	
  



                                            69	
  
Lessons	
  Learned	
  (Evalua7on	
  of	
  Case	
  Studies)	
  
Petri	
  net	
  simula7on	
                                    Antworld	
  Case	
  Study	
  
•  Transforma7on	
  slice	
  largely	
                         •  Transforma7on	
  slices	
  more	
  
   model	
  independent	
                                         model-­‐dependent	
  
   •  Sta7c	
  slices	
  would	
  be	
  similar	
  




BPEL2SAL	
  transforma7on	
                                    Reengineering	
  Case	
  Study	
  
•  Well-­‐separated	
  phases	
                                •  Many	
  dependencies	
  between	
  
•  Few	
  dependencies	
  between	
                               phases	
  
   •  Small	
  slices	
                                        •  Ignored	
  model	
  elements	
  
                                                                  missing	
  from	
  trace	
  and	
  slice	
  
                                                                  •  Small	
  slices	
  

                                                      70	
  
Conclusion	
  

Dynamic	
  backward	
  slicing	
  of	
  model	
  transforma7ons	
  

•  Models	
  and	
  transforma7on	
  simultaneously	
  

Implementa7on	
  and	
  evalua7on	
  

•  Various	
  transforma7on	
  case	
  studies	
  
•  Using	
  the	
  VIATRA2	
  transforma7on	
  framework	
  

Future	
  plans	
  

•  Transforma7on	
  debugging	
  support	
  
•  Por7ng	
  to	
  other	
  transforma7ons	
  tools	
  
   •  Back-­‐annota7on	
  between	
  trace	
  and	
  concrete	
  syntax	
  necessary	
  


                                               71	
  

Weitere ähnliche Inhalte

Kürzlich hochgeladen

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 

Kürzlich hochgeladen (20)

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 

Empfohlen

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Empfohlen (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Dynamic Backward Slicing of Model Transformations

  • 1. Dynamic  Backward  Slicing   of  Model  Transforma7ons   Zoltán  Ujhelyi,  Ákos  Horváth,   Dániel  Varró   Budapest  University  of  Technology  and  Economics   Department  of  Measurement  and  Informa<on  Systems  
  • 2. Models  and  Transforma7ons  in  Cri7cal  Systems   System  Design     Model   Refine   Architecture   Design    Model   Refine   Component   Design   Model  
  • 3. Models  and  Transforma7ons  in  Cri7cal  Systems   System  Design     Model   Refine   Simula7on   Architecture   Design    Model   Refine   Simula7on   Component   Design   Model   Simula7on  
  • 4. Models  and  Transforma7ons  in  Cri7cal  Systems   Horizontal  Model  Transforma7ons   Model  genera7on   System  Design     System  V&V   Model   Model   Back-­‐Annota7on   Refine   Use   Simula7on   Model  genera7on   Formal   Architecture   methods   Architecture  V&V   Design   Model    Model   Refine   Back-­‐Annota7on   Use   Simula7on   Model  genera7on   Formal   Component   Component     methods   Design   V&V   Model   Model   Back-­‐Annota7on   Simula7on  
  • 5. Models  and  Transforma7ons  in  Cri7cal  Systems   Horizontal  Model  Transforma7ons   Model  genera7on   System  Design     System  V&V   Model   Model   Back-­‐Annota7on   Refine   Use   Simula7on   Model  genera7on   Formal   Architecture   methods   Architecture  V&V   Ver7cal  Model  Transforma7ons   Design   Model    Model   Refine   Back-­‐Annota7on   Use   Simula7on   Model  genera7on   Formal   Component   Component     methods   Design   V&V   Model   Model   Back-­‐Annota7on   Simula7on   Code     Test   Genera7on   Genera7on   Design  +  V&V  Ar7facts     (Source  code,  Glue  code,     Config.  Tables,  Test  Cases,  Monitors,   Fault  Trees,  etc.)  
  • 6. Models  and  Transforma7ons  in  Cri7cal  Systems   Horizontal  Model  Transforma7ons   Model  genera7on   System  Design     System  V&V   Model   Model   Back-­‐Annota7on   Refine   Use   Simula7on   Model  genera7on   Formal   Architecture   methods   Architecture  V&V   Ver7cal  Model  Transforma7ons   Design   Model    Model   Refine   Back-­‐Annota7on   Use   Simula7on   Model  genera7on   Formal   Component   Component     methods   Design   V&V   Model   Model   Back-­‐Annota7on   Simula7on   Model  Transforma7ons   Code     Test   •   systema7c  founda7on  of     Genera7on   Genera7on      knowledge  transfer:        theore7cal  resultstools   Design  +  V&V  Ar7facts     •   bridge  /  integrate     (Source  code,  Glue  code,        exis7ng  languages&tools   Config.  Tables,  Test  Cases,  Monitors,   Fault  Trees,  etc.)  
  • 7. Overview  of  Model  Transforma7ons   Modeling  tool   Source   Target   MT  rule   metamodel   metamodel   Source   Target   model   model  
  • 8. Overview  of  Model  Transforma7ons   Modeling  tool   Source   Target   MT  rule   metamodel   metamodel   Source   Target   model   model   Model: Description of a concrete system
  • 9. Overview  of  Model  Transforma7ons   Metamodel: Precise spec of a modeling language Modeling  tool   Source   Target   MT  rule   metamodel   metamodel   Source   Target   model   model   Model: Description of a concrete system
  • 10. Overview  of  Model  Transforma7ons   Metamodel: Precise spec of Model Transformation: a modeling language How to generate a target equivalent of an arbitrary source model Modeling  tool   Source   Target   MT  rule   metamodel   metamodel   Source   Target   model   model   Model: Description of a concrete system
  • 11. Overview  of  Model  Transforma7ons   Eclipse  Framework   Model  Transforma7on  Tool   Modeling  tool   Source   Target   MT  rule   metamodel   metamodel   Source   Target   MT  engine   model   model  
  • 12. Overview  of  Model  Transforma7ons   Eclipse  Framework   Model  Transforma7on  Tool   Modeling  tool   Source   Target   MT  rule   metamodel   metamodel   Source   Target   MT  engine   model   model   Transformation engine: Support for querying and manipulating large models
  • 13. Overview  of  Model  Transforma7ons   Eclipse  Framework   Model  Transforma7on  Tool   Modeling  tool   Source   Target   MT  rule   metamodel   metamodel   Source   Target   MT  engine   model   model   Transformation engine: Support for querying and manipulating large models ATL   VIATRA2:   hYp://www.eclipse.org/gmt/VIATRA2/   QVT  
  • 14. Demonstra7ng  example:  Petri  net  Simula7on     Petri  nets   Architecture   Design    Model   o Used  e.g.  in  component   design  analysis   Component   o Places  and  Transi7ons   Design   Model   Simula<on   o State  of  the  net   •  Tokens   Store     Simulator  transforma7on   Query   o In-­‐place  transforma7on   Client   (source  and  target   metamodels  are  iden7cal)   Server   o Uses  both  impera7ve   and  declara7ve  elements   Respond   14  
  • 15. Graph  transforma7on  rules   removeToken  rule   LHS   RHS   Store   Query   Client   Server   Respond   15  
  • 16. Graph  transforma7on  rules   removeToken  rule   LHS   RHS   Store   Query   Client   Server   Respond   16  
  • 17. Graph  transforma7on  rules   removeToken  rule   LHS   RHS   Store   Query   Client   Server   Respond   17  
  • 18. Graph  transforma7on  rules   removeToken  rule   LHS   RHS   Store   Query   Client   Server   Respond   18  
  • 19. Graph  transforma7on  rules   removeToken  rule   LHS   RHS   Store   Query   Client   Server   Respond   19  
  • 20. Graph  transforma7on  rules   removeToken  rule   LHS   RHS   Store   Query   Client   Server   Respond   20  
  • 21. Graph  transforma7on  rules   removeToken  rule   LHS   RHS   Store   Query   Client   Server   Respond   21  
  • 22. Control  Structure   rule  fireTransition(in  T)  =  {    if  (find  isFireable(T))  {        //  remove  tokens  from  source  places        forall  Pl              with  find  sourcePlace(T,Pl)              do  apply  removeToken(Pl);        //  creates  tokens  on  target  places        forall  Pl              with  find  targetPlace(T,Pl)            do  apply  addToken(Pl);    } } 22  
  • 23. Debugging  model  transforma7ons   Basic  debugging  ques7ons   • Why  is  a  certain  statement  executed?   • Why  is  a  certain  model  element  created?   Finding  dependencies   • Hidden  data  dependencies   • Declara7ve  rules   23  
  • 24. Debugging  model  transforma7ons   Basic  debugging  ques7ons   • Why  is  a  certain  statement  executed?   • Why  is  a  certain  model  element  created?   Finding  dependencies   ‘Dynamic  backward   slicing’  problem   • Hidden  data  dependencies   • Declara7ve  rules   24  
  • 25. Program  Slicing     Dependency  analysis   Example     Use  cases     o  Debugging  solware   1.  int  i; o  Impact  analysis   2.  int  sum  =  0; o  ...   3.  int  product  =  1;   Types  of  slicing   4.  for(i  =  1;  i  <  N;  ++i)  { o  Dynamic/sta7c   5.     sum  =  sum  +  i; o  Backward/Forward   6.     product  =  product  *i; 7.  } 8.  write(sum); 9.  write(product); 25  
  • 26. Program  Slicing     Dependency  analysis   Example     Use  cases     o  Debugging  solware   1.  int  i; o  Impact  analysis   2.  int  sum  =  0; o  ...   3.  int  product  =  1;   Types  of  slicing   4.  for(i  =  1;  i  <  N;  ++i)  { o  Dynamic/sta7c   5.     sum  =  sum  +  i; Slicing  criterion:   o  Backward/Forward   6.     product  =  product  *i; a  statement  and  a   7.  } variable   8.  write(sum); 9.  write(product); 26  
  • 27. Program  Slicing     Dependency  analysis   Example     Use  cases   statements   Slice:     the  criterion   o  Debugging  solware   1.  int  i; depends  on   o  Impact  analysis   2.  int  sum  =  0; o  ...   3.  int  product  =  1;   Types  of  slicing   4.  for(i  =  1;  i  <  N;  ++i)  { o  Dynamic/sta7c   5.     sum  =  sum  +  i; o  Backward/Forward   6.     product  =  product  *i; 7.  } 8.  write(sum); 9.  write(product); 27  
  • 28. Program  Slicing     Dependency  analysis   Example     Use  cases   statements   Slice:     the  criterion   o  Debugging  solware   1.  int  i; depends  on   o  Impact  analysis   2.  int  sum  =  0; o  ...   3.  int  product  =  1;   Types  of  slicing   4.  for(i  =  1;  i  <  N;  ++i)  { o  Dynamic/sta7c   5.     sum  =  sum  +  i; o  Backward/Forward   6.     product  =  product  *i; 7.  } 8.  write(sum); 9.  write(product); 28  
  • 29. Slicing  Model  Transforma7ons     Similar  to  program  slicing     BUT:  processing  (input)  models  is  required     Our  approach:   Criterion   Transforma7on   Transforma7on   Model   Slice   transforma7on   Models   slicing   Model  Slice   29  
  • 30. Approach   Input   Transforma7on   model   Program   rule  fireTransition(in  T)  =  {    if  (find  isFireable(T))  {        //  remove  tokens  from  source   places        forall  Pl              with  find  sourcePlace(T,Pl)              do  apply  removeToken(Pl);        //  creates  tokens  on  target   places        forall  Pl              with  find  targetPlace(T,Pl)            do  apply  addToken(Pl);    } }   30  
  • 31. Approach   Input   Transforma7on   1.  Execu7ng  the   Program   model   Transforma7on   rule  fireTransition(in  T)  =  {    if  (find  isFireable(T))  {        //  remove  tokens  from  source   places        forall  Pl              with  find  sourcePlace(T,Pl)              do  apply  removeToken(Pl);        //  creates  tokens  on  target   places        forall  Pl              with  find  targetPlace(T,Pl)            do  apply  addToken(Pl);    } }   31  
  • 32. Approach   Input   Transforma7on   1.  Execu7ng  the   Program   model   Transforma7on   rule  fireTransition(in  T)  =  {    if  (find  isFireable(T))  {        //  remove  tokens  from  source   places Output          forall  Pl   model              with  find  sourcePlace(T,Pl)              do  apply  removeToken(Pl);        //  creates  tokens  on  target   places        forall  Pl              with  find  targetPlace(T,Pl)            do  apply  addToken(Pl);    } }   32  
  • 33. Approach   Input   Transforma7on   1.  Execu7ng  the   Program   model   Transforma7on   rule  fireTransition(in  T)  =  {    if  (find  isFireable(T))  {        //  remove  tokens  from  source   places Output          forall  Pl   model   2.  Genera7ng  an              with  find  sourcePlace(T,Pl)              do  apply  removeToken(Pl); Execu7on  Trace          //  creates  tokens  on  target   places        forall  Pl              with  find  targetPlace(T,Pl)            do  apply  addToken(Pl);    } }   33  
  • 34. Approach   Input   Transforma7on   1.  Execu7ng  the  For  each  statement  record:   Program   model   Transforma7on   •  Variable  Usage   •  Model  Usage   •  Model  Manipula7on   rule  fireTransition(in  T)  =  {    if  (find  isFireable(T))  {        //  remove  tokens  from  source   places Output          forall  Pl   model   2.  Genera7ng  an              with  find  sourcePlace(T,Pl)              do  apply  removeToken(Pl); Execu7on  Trace          //  creates  tokens  on  target   places        forall  Pl              with  find  targetPlace(T,Pl)            do  apply  addToken(Pl);    } }   34  
  • 35. Approach   Input   Transforma7on   1.  Execu7ng  the   Program   model   Transforma7on   rule  fireTransition(in  T)  =  {    if  (find  isFireable(T))  {        //  remove  tokens  from  source   places Output          forall  Pl   model   2.  Genera7ng  an              with  find  sourcePlace(T,Pl)              do  apply  removeToken(Pl); Execu7on  Trace          //  creates  tokens  on  target   places        forall  Pl              with  find  targetPlace(T,Pl)            do  apply  addToken(Pl);    } }   35  
  • 36. Approach   Input   Transforma7on   1.  Execu7ng  the   Program   model   Transforma7on   rule  fireTransition(in  T)  =  {    if  (find  isFireable(T))  {        //  remove  tokens  from  source   places Output          forall  Pl   model   2.  Genera7ng  an              with  find  sourcePlace(T,Pl)              do  apply  removeToken(Pl); Execu7on  Trace          //  creates  tokens  on  target   places        forall  Pl              with  find  targetPlace(T,Pl)            do  apply  addToken(Pl);    } }   3.  Calcula7ng   the  Slice   36  
  • 37. Approach   Input   Transforma7on   1.  Execu7ng  the   Program   model   Transforma7on   Criteria:   Model  element   rule  fireTransition(in  T)  =  {    if  (find  isFireable(T))  {        //  remove  tokens  from  source   places Output          forall  Pl   model   2.  Genera7ng  an              with  find  sourcePlace(T,Pl)              do  apply  removeToken(Pl); Execu7on  Trace          //  creates  tokens  on  target   places        forall  Pl              with  find  targetPlace(T,Pl)            do  apply  addToken(Pl);    } }   3.  Calcula7ng   the  Slice   37  
  • 38. Approach   Input   Transforma7on   1.  Execu7ng  the   Program   model   Transforma7on   Criteria:   Criteria:   Model  element   Program  statement   rule  fireTransition(in  T)  =  {    if  (find  isFireable(T))  { (and  a  variable)   places        //  remove  tokens  from  source   Output          forall  Pl   model   2.  Genera7ng  an              with  find  sourcePlace(T,Pl)              do  apply  removeToken(Pl); Execu7on  Trace          //  creates  tokens  on  target   places        forall  Pl              with  find  targetPlace(T,Pl)            do  apply  addToken(Pl);    } }   3.  Calcula7ng   the  Slice   38  
  • 39. Approach   Input   Transforma7on   1.  Execu7ng  the   Program   model   Transforma7on   rule  fireTransition(in  T)  =  {    if  (find  isFireable(T))  {        //  remove  tokens  from  source   places Output          forall  Pl   model   2.  Genera7ng  an              with  find  sourcePlace(T,Pl)              do  apply  removeToken(Pl); Execu7on  Trace          //  creates  tokens  on  target   places        forall  Pl              with  find  targetPlace(T,Pl)            do  apply  addToken(Pl);    } }   3.  Calcula7ng   the  Slice   39  
  • 40. Approach   Input   Transforma7on   1.  Execu7ng  the   Program   model   Transforma7on   rule  fireTransition(in  T)  =  {    if  (find  isFireable(T))  {        //  remove  tokens  from  source   places Output          forall  Pl   model   2.  Genera7ng  an   •  Traversing  Trace  Records  Backwards              with  find  sourcePlace(T,Pl)              do  apply  removeToken(Pl); Execu7on  Trace          //  creates  tokens  on  target   •  Selec7ng  Dependent  Trace  Records   places        forall  Pl              with  find  targetPlace(T,Pl)            do  apply  addToken(Pl);    } }   3.  Calcula7ng   the  Slice   40  
  • 41. Approach   Input   Transforma7on   1.  Execu7ng  the   Program   model   Transforma7on   rule  fireTransition(in  T)  =  {    if  (find  isFireable(T))  {        //  remove  tokens  from  source   places Output          forall  Pl   model   2.  Genera7ng  an              with  find  sourcePlace(T,Pl)              do  apply  removeToken(Pl); Execu7on  Trace          //  creates  tokens  on  target   places        forall  Pl              with  find  targetPlace(T,Pl)            do  apply  addToken(Pl);    } }   3.  Calcula7ng   the  Slice   41  
  • 42. Approach   Input   Transforma7on   1.  Execu7ng  the   Program   model   Transforma7on   rule  fireTransition(in  T)  =  {    if  (find  isFireable(T))  {        //  remove  tokens  from  source   places Output          forall  Pl   model   2.  Genera7ng  an              with  find  sourcePlace(T,Pl)              do  apply  removeToken(Pl); Execu7on  Trace          //  creates  tokens  on  target   places        forall  Pl              with  find  targetPlace(T,Pl)            do  apply  addToken(Pl);    } }   3.  Calcula7ng   the  Slice   42  
  • 43. Approach   Input   Transforma7on   1.  Execu7ng  the   Program   model   Transforma7on   rule  fireTransition(in  T)  =  {    if  (find  isFireable(T))  {        //  remove  tokens  from  source   places Output          forall  Pl   model   2.  Genera7ng  an              with  find  sourcePlace(T,Pl)              do  apply  removeToken(Pl); Execu7on  Trace          //  creates  tokens  on  target   places        forall  Pl              with  find  targetPlace(T,Pl)            do  apply  addToken(Pl);    } }   Sliced   3.  Calcula7ng   model   the  Slice   43  
  • 44. Slicing  Model  Transforma7ons  –  An  Example   rule  fireTransition(in  T)  =  { (1)      if  (find  isFireable(T))  { (2)   Query          //  remove  tokens  from  source  places        forall  Pl   (3)   Client   Store              with  find  sourcePlace(T,Pl)   (4)              do  apply  removeToken(Pl); (5)          //  creates  tokens  on  target  places Server          forall  Pl   (6)              with  find  targetPlace(T,Pl) (7)  (9)              do  apply  addToken(Pl); (8)  (10)      } Respond   } Code   Instance  model   Criteria:  rule  call  addToken,  variable  Pl Trace  Records:   Lookup:   44  
  • 45. Slicing  Model  Transforma7ons  –  An  Example   rule  fireTransition(in  T)  =  { (1)      if  (find  isFireable(T))  { (2)   Query          //  remove  tokens  from  source  places        forall  Pl   (3)   Client   Store              with  find  sourcePlace(T,Pl)   (4)              do  apply  removeToken(Pl); (5)          //  creates  tokens  on  target  places Server          forall  Pl   (6)              with  find  targetPlace(T,Pl) (7)  (9)              do  apply  addToken(Pl); (8)  (10)      } Respond   } Code   Instance  model   Criteria:  rule  call  addToken,  variable  Pl Trace  Records:   Lookup:   10.  apply  addToken(Pl) Uses  variable:  Pl   Uses  model:  Server   Modifies  model:  Token 45  
  • 46. Slicing  Model  Transforma7ons  –  An  Example   rule  fireTransition(in  T)  =  { (1)      if  (find  isFireable(T))  { (2)   Query          //  remove  tokens  from  source  places        forall  Pl   (3)   Client   Store              with  find  sourcePlace(T,Pl)   (4)              do  apply  removeToken(Pl); (5)          //  creates  tokens  on  target  places Server          forall  Pl   (6)              with  find  targetPlace(T,Pl) (7)  (9)              do  apply  addToken(Pl); (8)  (10)      } Respond   } Code   Instance  model   Criteria:  rule  call  addToken,  variable  Pl Trace  Records:   Lookup:   10.  apply  addToken(Pl) variable  Pl   Uses  variable:  Pl   Uses  model:  Server   Modifies  model:  Token 46  
  • 47. Slicing  Model  Transforma7ons  –  An  Example   rule  fireTransition(in  T)  =  { (1)      if  (find  isFireable(T))  { (2)   Query          //  remove  tokens  from  source  places        forall  Pl   (3)   Client   Store              with  find  sourcePlace(T,Pl)   (4)              do  apply  removeToken(Pl); (5)          //  creates  tokens  on  target  places Server          forall  Pl   (6)              with  find  targetPlace(T,Pl) (7)  (9)              do  apply  addToken(Pl); (8)  (10)      } Respond   } Code   Instance  model   Criteria:  rule  call  addToken,  variable  Pl Trace  Records:   Lookup:   9.  find  targetPlace(T,Pl)   variable  Pl   Modifies  variable:  Pl   Uses  variable:  T   Uses  model:  Server,  Query 47  
  • 48. Slicing  Model  Transforma7ons  –  An  Example   rule  fireTransition(in  T)  =  { (1)      if  (find  isFireable(T))  { (2)   Query          //  remove  tokens  from  source  places        forall  Pl   (3)   Client   Store              with  find  sourcePlace(T,Pl)   (4)              do  apply  removeToken(Pl); (5)          //  creates  tokens  on  target  places Server          forall  Pl   (6)              with  find  targetPlace(T,Pl) (7)  (9)              do  apply  addToken(Pl); (8)  (10)      } Respond   } Code   Instance  model   Criteria:  rule  call  addToken,  variable  Pl Trace  Records:   Lookup:   9.  find  targetPlace(T,Pl)   Data/model   Modifies  variable:  Pl   variable  T   dependency   Uses  variable:  T   Uses  model:  Server,  Query 48  
  • 49. Slicing  Model  Transforma7ons  –  An  Example   rule  fireTransition(in  T)  =  { (1)      if  (find  isFireable(T))  { (2)   Query          //  remove  tokens  from  source  places        forall  Pl   (3)   Client   Store              with  find  sourcePlace(T,Pl)   (4)              do  apply  removeToken(Pl); (5)          //  creates  tokens  on  target  places Server          forall  Pl   (6)              with  find  targetPlace(T,Pl) (7)  (9)              do  apply  addToken(Pl); (8)  (10)      } Respond   } Code   Instance  model   Criteria:  rule  call  addToken,  variable  Pl Trace  Records:   Lookup:   8.  apply  addToken(Pl) Uses  variable:  Pl   variable  T   Uses  model:  Store   Modifies  model:  Token 49  
  • 50. Slicing  Model  Transforma7ons  –  An  Example   rule  fireTransition(in  T)  =  { (1)      if  (find  isFireable(T))  { (2)   Query          //  remove  tokens  from  source  places        forall  Pl   (3)   Client   Store              with  find  sourcePlace(T,Pl)   (4)              do  apply  removeToken(Pl); (5)          //  creates  tokens  on  target  places Server          forall  Pl   (6)              with  find  targetPlace(T,Pl) (7)  (9)              do  apply  addToken(Pl); (8)  (10)      } Respond   } Code   Instance  model   Criteria:  rule  call  addToken,  variable  Pl Trace  Records:   Lookup:   7.  find  targetPlace(T,Pl)   Modifies  variable:  Pl   variable  T   Uses  variable:  T   Uses  model:  Store,  Query 50  
  • 51. Slicing  Model  Transforma7ons  –  An  Example   rule  fireTransition(in  T)  =  { (1)      if  (find  isFireable(T))  { (2)   Query          //  remove  tokens  from  source  places        forall  Pl   (3)   Client   Store              with  find  sourcePlace(T,Pl)   (4)              do  apply  removeToken(Pl); (5)          //  creates  tokens  on  target  places Server          forall  Pl   (6)              with  find  targetPlace(T,Pl) (7)  (9)              do  apply  addToken(Pl); (8)  (10)      } Respond   } Code   Instance  model   Criteria:  rule  call  addToken,  variable  Pl Trace  Records:   Lookup:   6.  forall  Pl     variable  T   51  
  • 52. Slicing  Model  Transforma7ons  –  An  Example   rule  fireTransition(in  T)  =  { (1)      if  (find  isFireable(T))  { (2)   Query          //  remove  tokens  from  source  places        forall  Pl   (3)   Client   Store              with  find  sourcePlace(T,Pl)   (4)              do  apply  removeToken(Pl); (5)          //  creates  tokens  on  target  places Server          forall  Pl   (6)              with  find  targetPlace(T,Pl) (7)  (9)              do  apply  addToken(Pl); (8)  (10)      } Respond   } Code   Instance  model   Criteria:  rule  call  addToken,  variable  Pl Trace  Records:   Lookup:   6.  forall  Pl     Control   variable  T   dependency   52  
  • 53. Slicing  Model  Transforma7ons  –  An  Example   rule  fireTransition(in  T)  =  { (1)      if  (find  isFireable(T))  { (2)   Query          //  remove  tokens  from  source  places        forall  Pl   (3)   Client   Store              with  find  sourcePlace(T,Pl)   (4)              do  apply  removeToken(Pl); (5)          //  creates  tokens  on  target  places Server          forall  Pl   (6)              with  find  targetPlace(T,Pl) (7)  (9)              do  apply  addToken(Pl); (8)  (10)      } Respond   } Code   Instance  model   Criteria:  rule  call  addToken,  variable  Pl Trace  Records:   Lookup:   5.  apply  removeToken(Pl) Uses  variable:  Pl   variable  T   Uses  model:  Client   Removes  model:  Token 53  
  • 54. Slicing  Model  Transforma7ons  –  An  Example   rule  fireTransition(in  T)  =  { (1)      if  (find  isFireable(T))  { (2)   Query          //  remove  tokens  from  source  places        forall  Pl   (3)   Client   Store              with  find  sourcePlace(T,Pl)   (4)              do  apply  removeToken(Pl); (5)          //  creates  tokens  on  target  places Server          forall  Pl   (6)              with  find  targetPlace(T,Pl) (7)  (9)              do  apply  addToken(Pl); (8)  (10)      } Respond   } Code   Instance  model   Criteria:  rule  call  addToken,  variable  Pl Trace  Records:   Lookup:   4.  find  sourcePlace(T,Pl)   Modifies  variable:  Pl   variable  T   Uses  variable:  T   Uses  model:  Client,  Query 54  
  • 55. Slicing  Model  Transforma7ons  –  An  Example   rule  fireTransition(in  T)  =  { (1)      if  (find  isFireable(T))  { (2)   Query          //  remove  tokens  from  source  places        forall  Pl   (3)   Client   Store              with  find  sourcePlace(T,Pl)   (4)              do  apply  removeToken(Pl); (5)          //  creates  tokens  on  target  places Server          forall  Pl   (6)              with  find  targetPlace(T,Pl) (7)  (9)              do  apply  addToken(Pl); (8)  (10)      } Respond   } Code   Instance  model   Criteria:  rule  call  addToken,  variable  Pl Trace  Records:   Lookup:   3.  forall  Pl     variable  T   55  
  • 56. Slicing  Model  Transforma7ons  –  An  Example   rule  fireTransition(in  T)  =  { (1)      if  (find  isFireable(T))  { (2)   Query          //  remove  tokens  from  source  places        forall  Pl   (3)   Client   Store              with  find  sourcePlace(T,Pl)   (4)              do  apply  removeToken(Pl); (5)          //  creates  tokens  on  target  places Server          forall  Pl   (6)              with  find  targetPlace(T,Pl) (7)  (9)              do  apply  addToken(Pl); (8)  (10)      } Respond   } Code   Instance  model   Criteria:  rule  call  addToken,  variable  Pl Trace  Records:   Lookup:   2.  if  (find  isFireable(T))   Uses  variable:  T   variable  T   Uses  model:  Client,  Query   56  
  • 57. Slicing  Model  Transforma7ons  –  An  Example   rule  fireTransition(in  T)  =  { (1)      if  (find  isFireable(T))  { (2)   Query          //  remove  tokens  from  source  places        forall  Pl   (3)   Client   Store              with  find  sourcePlace(T,Pl)   (4)              do  apply  removeToken(Pl); (5)          //  creates  tokens  on  target  places Server          forall  Pl   (6)              with  find  targetPlace(T,Pl) (7)  (9)              do  apply  addToken(Pl); (8)  (10)      } Respond   } Code   Instance  model   Criteria:  rule  call  addToken,  variable  Pl Trace  Records:   Lookup:   2.  if  (find  isFireable(T))   Control   Uses  variable:  T   variable  T   dependency   Uses  model:  Client,  Query   57  
  • 58. Slicing  Model  Transforma7ons  –  An  Example   rule  fireTransition(in  T)  =  { (1)      if  (find  isFireable(T))  { (2)   Query          //  remove  tokens  from  source  places        forall  Pl   (3)   Client   Store              with  find  sourcePlace(T,Pl)   (4)              do  apply  removeToken(Pl); (5)          //  creates  tokens  on  target  places Server          forall  Pl   (6)              with  find  targetPlace(T,Pl) (7)  (9)              do  apply  addToken(Pl); (8)  (10)      } Respond   } Code   Instance  model   Criteria:  rule  call  addToken,  variable  Pl Trace  Records:   Lookup:   1.  rule  fireTransition(in  T)   Modifies:  variable  T   variable  T   58  
  • 59. Slicing  Model  Transforma7ons  –  An  Example   rule  fireTransition(in  T)  =  { (1)      if  (find  isFireable(T))  { (2)   Query          //  remove  tokens  from  source  places        forall  Pl   (3)   Client   Store              with  find  sourcePlace(T,Pl)   (4)              do  apply  removeToken(Pl); (5)          //  creates  tokens  on  target  places Server          forall  Pl   (6)              with  find  targetPlace(T,Pl) (7)  (9)              do  apply  addToken(Pl); (8)  (10)      } Respond   } Code   Instance  model   Criteria:  rule  call  addToken,  variable  Pl Trace  Records:   Lookup:   1.  rule  fireTransition(in  T)   Data/model   Modifies:  variable  T   dependency   59  
  • 60. Implementa7on  Architecture   Model  Transforma7on  Tool   Source   Target   MT  program   metamodel   metamodel   Source   Target   MT  engine   model   model  
  • 61. Implementa7on  Architecture   Model  Transforma7on  Tool   Source   Target   MT  program   metamodel   metamodel   Source   Target   MT  engine   model   model   Execu7on   Trace  
  • 62. Implementa7on  Architecture   Model  Transforma7on  Tool   Source   Target   MT  program   metamodel   metamodel   Source   Target   Trace  metamodel  defined   MT  engine   model   model   for  adaptability   Execu7on   Trace  
  • 63. Implementa7on  Architecture   Model  Transforma7on  Tool   Source   Target   MT  program   metamodel   metamodel   Source   Target   MT  engine   model   model   Execu7on   Trace  
  • 64. Implementa7on  Architecture   Model  Transforma7on  Tool   Source   Target   MT  program   metamodel   metamodel   Source   Target   MT  engine   model   model   Execu7on   Trace   Slicing  algorithm  
  • 65. Implementa7on  Architecture   Model  Transforma7on  Tool   Source   Target   MT  program   metamodel   metamodel   Source   Target   MT  engine   model   model   Execu7on   Trace   Model   Slicing  algorithm   Slice  
  • 66. Implementa7on  Architecture   Model  Transforma7on  Tool   Source   Target   MT  program   metamodel   metamodel   Source   Target   MT  engine   model   model   Execu7on   Trace   Model   Program   Slicing  algorithm   Slice   Slice  
  • 67. Case  Studies   Petri  net   Antworld  Case   simula7on   Study   •  Simple  transforma7on,   •  Complex  simula7on   large  models   •  Ever-­‐growing  models   BPEL2SAL   Reengineering   transforma7on   Case  Study   •  Complex  impera7ve   •  Model  Extrac7on   control  structure   67  
  • 68. Evalua7on   Measurements:   Manually  selected   Ques7ons:   Size  of   slicing  criteria   • Model  slice   • Mul7ple  for   • Independence   • Transforma7on   each   of  model  slice   slice   transforma7on   from  selected   • Covering  all   statement   phases  of  the   • Independence   program   of  program  slice   from  model   instances   68  
  • 69. Evalua7on   Measurements:   Manually  selected   Ques7ons:   Size  of   slicing  criteria   • Model  slice   Data-­‐driven  transforma7ons   • Mul7ple  for   • Independence   each   • Transforma7on  more  impera7ve  style   or   of  model  slice   slice   transforma7on   from  selected   • Covering  all   statement   phases  of  the   • Independence   program   of  program  slice   from  model   instances   69  
  • 70. Lessons  Learned  (Evalua7on  of  Case  Studies)   Petri  net  simula7on   Antworld  Case  Study   •  Transforma7on  slice  largely   •  Transforma7on  slices  more   model  independent   model-­‐dependent   •  Sta7c  slices  would  be  similar   BPEL2SAL  transforma7on   Reengineering  Case  Study   •  Well-­‐separated  phases   •  Many  dependencies  between   •  Few  dependencies  between   phases   •  Small  slices   •  Ignored  model  elements   missing  from  trace  and  slice   •  Small  slices   70  
  • 71. Conclusion   Dynamic  backward  slicing  of  model  transforma7ons   •  Models  and  transforma7on  simultaneously   Implementa7on  and  evalua7on   •  Various  transforma7on  case  studies   •  Using  the  VIATRA2  transforma7on  framework   Future  plans   •  Transforma7on  debugging  support   •  Por7ng  to  other  transforma7ons  tools   •  Back-­‐annota7on  between  trace  and  concrete  syntax  necessary   71