developing and visualizing live model queries

43
Budapest University of Technology and Economics Department of Measurement and Informa<on Systems Developing and Visualizing Live Model Queries Zoltán Ujhelyi, Tamás Szabó István Ráth, Dániel Varró Ábel Hegedüs (demonstrator)

Post on 13-Sep-2014

451 views

Category:

Technology


0 download

DESCRIPTION

1st Analysis of Model Transformations Workshop, 2012 Several important tasks performed by model driven development tools — such as well-formedness constraint validation or model transformations — rely on evaluating model queries. If the model changes rapidly or frequently, it is beneficial to provide live queries that automatically propagate these model changes into the query results. To ease the development and debugging of live queries, the development environment should provide a way to evaluate the query results continuously, helping to understand how the created query works. This presentation presents a generic live model query visualizer that displays and updates the query results depending on their source models. It has been implemented for the EMF-IncQuery framework and presented here for validating BPMN models.

TRANSCRIPT

Page 1: Developing and Visualizing Live Model Queries

Budapest  University  of  Technology  and  Economics  Department  of  Measurement  and  Informa<on  Systems  

Developing  and  Visualizing  Live  Model  Queries  

Zoltán  Ujhelyi,  Tamás  Szabó  István  Ráth,  Dániel  Varró  

Ábel  Hegedüs  (demonstrator)  

Page 2: Developing and Visualizing Live Model Queries

What  is  a  Model  Query?    ModelQuery(A,B)  Cond(A,B)  o  Retrieve  tuples  of  model  elements  A,B  

o  SaOsfying  the  query  condiOon  Cond  

o  Enumerate    one  /  all  instances  

o With  A,B  as    input  or  output  parameters  

2  

Page 3: Developing and Visualizing Live Model Queries

What  is  a  Model  Query?    ModelQuery(A,B)  Cond(A,B)  o  Retrieve  tuples  of  model  elements  A,B  

o  SaOsfying  the  query  condiOon  Cond  

o  Enumerate    one  /  all  instances  

o With  A,B  as    input  or  output  parameters  

3  

AUTOSAR  •  Select  pairs  of  SystemSignal  and  its  signal  group  which  are  not  in  the  same  IPDU  

IMA  •  Find  instances  of  cri;cal  func;ons  not  running  on  different  processors  of  different  chassis  

BPMN  •  Show  sink  ac;vi;es  with  no  outgoing  flow  

Page 4: Developing and Visualizing Live Model Queries

What  is  a  Model  Query?    ModelQuery(A,B)  Cond(A,B)  o  Retrieve  tuples  of  model  elements  A,B  

o  SaOsfying  the  query  condiOon  Cond  

o  Enumerate    one  /  all  instances  

o With  A,B  as    input  or  output  parameters  

4  

AUTOSAR  •  Select  pairs  of  SystemSignal  and  its  signal  group  which  are  not  in  the  same  IPDU  

IMA  •  Find  instances  of  cri;cal  func;ons  not  running  on  different  processors  of  different  chassis  

BPMN  •  Show  sink  ac;vi;es  with  no  outgoing  flow  

Page 5: Developing and Visualizing Live Model Queries

Live  Model  Queries    Live  Query  EvaluaOon:  

Incremental  cache  of  matches  o  Maintain  a  cheap  cache    

(only  memory  overhead)  o  NoOfy  about  relevant  changes  o  Enable  reacOons  to  complex    

   structural  events  

5  

Page 6: Developing and Visualizing Live Model Queries

Live  Model  Queries    Live  Query  EvaluaOon:  

Incremental  cache  of  matches  o  Maintain  a  cheap  cache    

(only  memory  overhead)  o  NoOfy  about  relevant  changes  o  Enable  reacOons  to  complex    

   structural  events  

6  

Page 7: Developing and Visualizing Live Model Queries

Live  Model  Queries    Live  Query  EvaluaOon:  

Incremental  cache  of  matches  o  Maintain  a  cheap  cache    

(only  memory  overhead)  o  NoOfy  about  relevant  changes  o  Enable  reacOons  to  complex    

   structural  events  

7  

Page 8: Developing and Visualizing Live Model Queries

Live  Model  Queries    Live  Query  EvaluaOon:  

Incremental  cache  of  matches  o  Maintain  a  cheap  cache    

(only  memory  overhead)  o  NoOfy  about  relevant  changes  o  Enable  reacOons  to  complex    

   structural  events  

•  Find  all  contexts  a  MT  rule  is  applicable  for  

•  Live  MT  rules:  triggered  automaOcally  upon  change  

Live  Model  Queries  for    Model  TransformaOons  

•  Find  all  violaOons  of    a  well-­‐formedness  constraint  

•  Immediate  re-­‐validaOon    upon  model  change  

Live  Model  Queries  for    Early  ValidaOon  

•  See  talk  tomorrow  at  11:30  

Live  Model  Queries  for    Traceability  Management  

8  

Page 9: Developing and Visualizing Live Model Queries

Example:  ValidaOon  of  BPMN  Models    BPMN  models  

o Describing  business  processes  o Models  control  and  dataflow  •  Flowchart-­‐like  notaOon  

9  

Page 10: Developing and Visualizing Live Model Queries

Example:  ValidaOon  of  BPMN  Models   Well-­‐formedness  validaOon  during  ediOng  

o Sink  AcOvity:  acOvity  without  outgoing  edge  

10  

Page 11: Developing and Visualizing Live Model Queries

Example:  ValidaOon  of  BPMN  Models   Well-­‐formedness  validaOon  during  ediOng  

o Sink  AcOvity:  acOvity  without  outgoing  edge  

11  

Page 12: Developing and Visualizing Live Model Queries

EMF-­‐IncQuery  Framework  

Page 13: Developing and Visualizing Live Model Queries

EMF-­‐IncQuery:  Architecture  Overview  Application

Framework

API

RETE Core INCQUERY Core

Application code

Query specification

Generated pattern matcher

Generative tooling

Interpreted pattern matcher

Validation Engine

Derived feature support

INCQUERY Base

Page 14: Developing and Visualizing Live Model Queries

EMF-­‐IncQuery:  Architecture  Overview  Application

Framework

API

RETE Core INCQUERY Core

Application code

Query specification

Generated pattern matcher

Generative tooling

Interpreted pattern matcher

Validation Engine

Derived feature support

INCQUERY Base

•  Graph pattern-based query language

•  Xtext2-based tooling •  Execution, testing and

debugging for queries

Page 15: Developing and Visualizing Live Model Queries

EMF-­‐IncQuery:  Architecture  Overview  Application

Framework

API

RETE Core INCQUERY Core

Application code

Query specification

Generated pattern matcher

Generative tooling

Interpreted pattern matcher

Validation Engine

Derived feature support

INCQUERY Base

Typesafe query wrappers (DTOs) for easy integration

•  Graph pattern-based query language

•  Xtext2-based tooling •  Execution, testing and

debugging for queries

Page 16: Developing and Visualizing Live Model Queries

EMF-­‐IncQuery:  Architecture  Overview  Application

Framework

API

RETE Core INCQUERY Core

Application code

Query specification

Generated pattern matcher

Generative tooling

Interpreted pattern matcher

Validation Engine

Derived feature support

INCQUERY Base

Efficient maintenance of derived attributes and references

Typesafe query wrappers (DTOs) for easy integration

On-the-fly validation and problem marker management

•  Easy-to-use API for query management

•  Support for programmed and dynamic queries

•  Fully dynamic parameterization

•  Graph pattern-based query language

•  Xtext2-based tooling •  Execution, testing and

debugging for queries

Page 17: Developing and Visualizing Live Model Queries

EMF-­‐IncQuery:  Architecture  Overview  Application

Framework

API

RETE Core INCQUERY Core

Application code

Query specification

Generated pattern matcher

Generative tooling

Interpreted pattern matcher

Validation Engine

Derived feature support

INCQUERY Base

Efficient maintenance of derived attributes and references

Typesafe query wrappers (DTOs) for easy integration

High performance backward getters and transitive closure

Scalable evaluation for complex queries (over 2 000 000 EObjects)

On-the-fly validation and problem marker management

•  Easy-to-use API for query management

•  Support for programmed and dynamic queries

•  Fully dynamic parameterization

•  Graph pattern-based query language

•  Xtext2-based tooling •  Execution, testing and

debugging for queries

Page 18: Developing and Visualizing Live Model Queries

Simple  Graph  Pajern  in  EMF-­‐IncQuery  pattern  sequenceFlowEdge          

(Flow:SequenceEdge,  Src:Activity,  Dst:Activity)=  { SequenceEdge.source(Flow,  Src); SequenceEdge.target(Flow,  Dst);

}

18  

Src  :  AcOvity  

Dst:  AcOvity  

Flow:  SequenceEdge  

target  source  

Page 19: Developing and Visualizing Live Model Queries

And  Some  More  Complex  Examples…  pattern  hasOutEdge(A:  Activity)  {    find  sequenceFlowEdge(_Fr,  A,  _Other);  }  or  {    find  messageFlowEdge(_Fr,  A,  _Other); } pattern  sinkActivityNames(Name)  {

Activity(A); Activity.name(A,  Name); neg  find  hasOutEdge(A);

} 19  

Pajern  composiOon  (for  reuse)  

NegaOve  composiOon  (negaOon,  quanOficaOon)  

Page 20: Developing and Visualizing Live Model Queries

EMF-­‐INCQUERY  Development  Tools  

Page 21: Developing and Visualizing Live Model Queries

EMF-­‐INCQUERY  Development  Tools  

EMF  Instance  Model  

Query  Explorer  

Pajern  Editor  

Page 22: Developing and Visualizing Live Model Queries

EMF-­‐INCQUERY  Development  Tools  

EMF  Instance  Model  

Query  Explorer  

Pajern  Editor  

Page 23: Developing and Visualizing Live Model Queries

EMF-­‐INCQUERY  Development  Tools  

EMF  Instance  Model  

Query  Explorer  

Pajern  Editor  

Query  results  recalculated    on-­‐the-­‐fly  

•  Works  with  most    EMF  editors    out-­‐of-­‐the-­‐box  

•  Reveals  matches    as  selecOon  

Page 24: Developing and Visualizing Live Model Queries

Visualiza<on  of  Live  Model  Queries  in  EMF-­‐IncQuery  

Page 25: Developing and Visualizing Live Model Queries

Requirements  for  Query  VisualizaOon  

Genericity  • MulOple  Model  Sources  • Model  Editors  • Current  SelecOon  

Incrementality  • Query  Changes  • Model  Changes  

Traceability  • Query  DefiniOons  •  Input  Model  

PresentaOon  •  Filtering  • Grouping  

25  

Page 26: Developing and Visualizing Live Model Queries

Proposed  Architecture  of  Query  Visualizer  

26  

Query  Engine  

Query  Repository  

Other  Model  Sources  

Edited  Query  Edited  Query  

Model  Editors  

Filtered  group  of  queries  

Query  Result  Viewer  

Query  DefiniOon  

Query  Results  

Connectors  

Query  Result  Deltas  

Model  and  NoOficaOons  

Page 27: Developing and Visualizing Live Model Queries

Model  Source  Connectors  for  Genericity    Different  model  sources  

o Graphical  (e.g  BPMN,  UML)  o Textual  (e.g.  OCL)  o Different  implementaOon  technologies  

Model  source  connectors    OperaOons  

o Open  model  o Send  noOficaOon  upon  model  change  

o Get  current  selecOon  o Close  editor  

27  

Query  Engine  

Other  Model  Sources  

Edited  Query  Edited  Query  Model  Editors  

Connectors  Model  and  NoOficaOons  

Genericity• Multiple Model Sources• Model  Editors• Current  Selection

Incrementality• Query  Changes• Model  Changes

Traceability• Query  Definitions• Input  Model

Presentation• Filtering• Grouping

Page 28: Developing and Visualizing Live Model Queries

Query-­‐based  Indexing  for  Incrementality    Update  query  results  

incrementally  upon  o  Model  updates  

•  E.g.  using  the  built-­‐in  editor  •  Engine:  handles  this  case  internally  

o  Query  updates  •  E.g.  using  the  query  editor  •  Engine:  rebuilds  internal  model  indexes  

• Contains  model  elements  accessed  by  the  query  

• Populated  by  an  exhausOve  model  traversal  (can  be  slow!)  

• Goal:  Avoid  unnecessary  re-­‐traversal  

Query-­‐based  indexing  

• “Wildcard  mode”:    index  every  model  element  

• Higher  memory  consumpOon  

Strategy  1:    Generic  model  indexer  

• IniOalize  several  pajerns  together  

Strategy  2:    Group  iniOalizaOon  

28  

Genericity• Multiple Model Sources• Model  Editors• Current  Selection

Incrementality• Query  Changes• Model  Changes

Traceability• Query  Definitions• Input  Model

Presentation• Filtering• Grouping

Page 29: Developing and Visualizing Live Model Queries

Traceability  and  NavigaOon   Maintaining  source  models  and  queries  

  Support  for  navigaOng  to/highlighOng  o Corresponding  query  definiOons  •  HighlighOng  funcOonality  in  the  query  editor  

o Referenced  model  element(s)  •  Editor-­‐dependent  implementaOon  •  Model  source  connector    handles  funcOonality  

29  

Genericity• Multiple Model Sources• Model  Editors• Current  Selection

Incrementality• Query  Changes• Model  Changes

Traceability• Query  Definitions• Input  Model

Presentation• Filtering• Grouping

Query  Engine  

Query  Repository  

Other  Model  Sources  

Edited  Query  Edited  Query  Model  Editors  

Query  Result  Viewer  

Connectors  

Query  Editor  

Page 30: Developing and Visualizing Live Model Queries

EMF  Instance  Model  

Query  Explorer  

Pajern  Editor  

Traceability  in  Query  Visualizer  

Page 31: Developing and Visualizing Live Model Queries

EMF  Instance  Model  

Query  Explorer  

Pajern  Editor  

Traceability  in  Query  Visualizer  

Page 32: Developing and Visualizing Live Model Queries

Grouping  and  Filtering  for  PresentaOon    Define  query  groups  („related”  queries)  o StaOc  groups  •  E.g.  Namespaces  

o Dynamic  groups  •  E.g.  Dependency  based  

  Filtering  o Filter  visible  queries  •  Uses  hints  from  developer  •  Manual  overriding  

o Filter  query  results  •  By  binding  query  parameters  

32  

Genericity• Multiple Model Sources• Model  Editors• Current  Selection

Incrementality• Query  Changes• Model  Changes

Traceability• Query  Definitions• Input  Model

Presentation• Filtering• Grouping

Query  Result  Viewer  

Query  DefiniOons  

Query  Results  

Query  Result  Deltas  

Page 33: Developing and Visualizing Live Model Queries

Result  Viewer  

33  

Page 34: Developing and Visualizing Live Model Queries

Result  Viewer  

34  

Szöveg  Different  model  sources  

Page 35: Developing and Visualizing Live Model Queries

Result  Viewer  

35  

Loaded  Queries  

Page 36: Developing and Visualizing Live Model Queries

Result  Viewer  

36  

Query  Results  

Page 37: Developing and Visualizing Live Model Queries

Filtering  Visible  Queries  

37  

Page 38: Developing and Visualizing Live Model Queries

Filtering  Visible  Queries  

38  

Elements  in  Query  Registry  

Page 39: Developing and Visualizing Live Model Queries

Filtering  Visible  Queries  

39  

Queries  Loaded  

Page 40: Developing and Visualizing Live Model Queries

Query  Result  Filtering  

40  

Page 41: Developing and Visualizing Live Model Queries

Query  Result  Filtering  

41  

Page 42: Developing and Visualizing Live Model Queries

Conclusions  and  Future  Work  

42  

Query  Engine  

Query  Repository  

Other  Model  Sources  

Edited  Query  Edited  Query  

Model  Editors  

Filtered  group  of  queries  

Query  Result  Viewer  

Query  DefiniOon  

Query  Results  

Connectors  

Query  Result  Deltas  

Model  and  NoOficaOons  

R1.  Genericity  R3.  Traceability  

R3.  Traceability  R4.  PresentaOon  

R2.  Incrementality  

R4.  PresentaOon  

Page 43: Developing and Visualizing Live Model Queries

Conclusions  and  Future  Work  

43  

Query  Engine  

Query  Repository  

Other  Model  Sources  

Edited  Query  Edited  Query  

Model  Editors  

Filtered  group  of  queries  

Query  Result  Viewer  

Query  DefiniOon  

Query  Results  

Connectors  

Query  Result  Deltas  

Model  and  NoOficaOons  

R1.  Genericity  R3.  Traceability  

R3.  Traceability  R4.  PresentaOon  

R2.  Incrementality  

R4.  PresentaOon  Future  Plans  •  Analysis-­‐based  grouping  •  Graph-­‐based  result  visualizaOon