• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Dynamic Backward Slicing of Model Transformations
 

Dynamic Backward Slicing of Model Transformations

on

  • 432 views

A presentation held at ICST 2012 in Montreal, Canada. The presentation relies on a joint work of Zoltán Ujhelyi, Ákos Horváth and Dániel Varró from the Fault Tolerant Systems Research group at ...

A presentation held at ICST 2012 in Montreal, Canada. The presentation relies on a joint work of Zoltán Ujhelyi, Ákos Horváth and Dániel Varró from the Fault Tolerant Systems Research group at the Budapest University of Technology and Economics.

Statistics

Views

Total Views
432
Views on SlideShare
432
Embed Views
0

Actions

Likes
0
Downloads
3
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial LicenseCC Attribution-NonCommercial License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Dynamic Backward Slicing of Model Transformations Dynamic Backward Slicing of Model Transformations Presentation Transcript

    • 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 ofa 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   placesOutput          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   placesOutput          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   placesOutput          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   placesOutput          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   placesOutput          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   placesOutput          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   placesOutput          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   placesOutput          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   placesOutput          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   placesOutput          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   placesOutput          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