On the traceability in a graph roundtrip On the traceability in a graph roundtrip transformation system GRoundTram† transformation system GRoundTram† Soichiro Hidaka National Institute of Informatics Workshop on Bidirectional Transformation (BT2010) Mar. 15th, 2010 †Joint work with Zhenjiang Hu , Kazuhiro Inaba , Hiroyuki Kato (National Institute of Informatics) Kazutaka Matsuda (University of Tokyo) Keisuke Nakano (University of Electro-Communications) Isao Sasano (Shibaura Institute of Technology)
Since BT-ABC-3 (Nov. 2009) • In the BT-ABC-3 – support bidir. interpretation of much-more user-friendly surface syntax – lots of examples added – supports (limited form of) insertion – graph editor is provided – released complete source code in OCaml – 17000 lines of codes including comments • At the time of BT-ABC-4 – More clear formulation of trace information – Deletion support (not implemented yet) – Enhanced handling of insertions – Graph contraction support 2 S. Hidaka Traceability in GRoundTram
GRoundTram • Graph Roundtrip Transformation for Models – to support systematic development of bidirectional model transformation • ground tram – bidirectional ground transportation system (tram usually runs in both directions) • "Ground" ... we would like to provide "basis" – user-level model representation is internally represented by more general graph – base graph manipulation system (graph algebra) to be • powerful enough to express typical model transformation • rigid enough to reason about properties such as well- behavedness 3 S. Hidaka Traceability in GRoundTram
Model Driven Software Development refine refine ……. ….. transform transform M 1 M 2 transform transform …. model for model for implementation analysis design • We want to reflect modification at the downstream to the upstream 4 S. Hidaka Traceability in GRoundTram
Bidirectional Model Transformation Example: Class2RDB Association Association name = "address" name = "phone" src_of src dest src_of src dest Class Class Class name = "Person" name = "Address" name = "Phone" is_persistent = true is_persistent = false is_persistent = true attrs attrs attrs Attribute Attribute Attribute name = "name" name = "addr" name = "number" is_primary = true is_primary = true is_primary = true type type type Table Table PrimitiveDataType PrimitiveDataType name = "Person" name = "Phone" name = "String" name = "Integer" fkeys refs pkey cols cols cols Fkey pkey cols cols Column Column Column Column name = "name" name = "addr" name = "number" name = "number" type = "String" type = "String" type = "Integer" type = "Integer" 5 S. Hidaka Traceability in GRoundTram
Our Target Bidirectional Transformation s t forward Trans. modify s’ t’ backward Trans. 6 S. Hidaka Traceability in GRoundTram
Why UnQL/UnCAL? • Functional (Compositional) • Has clear formal semantics • Has nice user-level syntax 7 S. Hidaka Traceability in GRoundTram
Basic idea of compositional approach in BT s t Id s t t’ T 1 T 2 s 1 t 1 t 1 T 1 � � � � s T t 2 s 2 t 2 T 2 complecation: variable reference S. Hidaka Traceability in GRoundTram 8
Encoding in Graphs • Edge label: primitive data and tag • Set of outgoing edges: collections • edges directed to other node: references to other components 24 41 no date order_of order customer customer 1 3 39 40 1003 "16/12/2008" add email name add add order order_of order order_of email email name 0 2 25 27 29 32 30 31 34 36 38 info code type "kato@biglab" "Kato" info code type no date no date "tanaka@gmail" "tanaka@biglab" "Tanaka" 13 15 17 26 28 19 21 23 5 7 9 11 33 35 37 "IPL of Tokyo" "100-888" contractual "BiG office of Tokyo" "200-777" shipping 1002 "16/10/2008" 1001 "16/07/2008" 12 14 16 18 20 22 4 6 8 10 Issue: coping with bisimulation 9 S. Hidaka Traceability in GRoundTram
A compositional Framework for Bidirectional Model Transformation [1] SAC2009 Model Transformation in UnQL+[1] MQL Model Transformation in UnQL+[1] ( Compositional and Functional ) ( Compositional and Functional ) [Overview] Two methods ICSE2009 for typechecking NIER Tr. desugaring desugaring (incl. editing primitives) (incl. editing primitives) to core language to core language UnCAL graph algebra UnCAL graph algebra ( Graph Construction and Structural Recursion ) ( Graph Construction and Structural Recursion ) Validation Validation Bidirectional Interpreter Bidirectional Interpreter source target source target • Bidirectionalization • Bidirectionalization model model model model •Fusion Optimization •Fusion Optimization 10 S. Hidaka Traceability in GRoundTram
Project site • www.biglab.org Top Demo 11 S. Hidaka Traceability in GRoundTram
Agenda • Traceability – Enriched forward transformation – Tracing source node from target node – Tracing source edges from target edges • Tracing in deletion handling • Tracing in insertion handling • Internal representation and view edited by end-users • Conclusion and future work 12 S. Hidaka Traceability in GRoundTram
UnCAL graph model • Cyclic & • Edge-labeled – All informations are stored in edge 1 labels – Node ids have no particular meanings a c b • Directed • Unordered (branches) 2 3 4 c • Multi-rooted (has entry points as input nodes) a a – Indicated by input markers • Has (optional) output nodes d – Indicated by output markers 5 6 • Unranked – node has arbitrary number of edges d 7 8 Has ε edges • Property : Every UnCAL graph can be normalized up to isomorphism. S. Hidaka Traceability in GRoundTram 13
Source graph example: Customer- centric order information • Customer2Order (Pastor et al. 2007) 24 41 no date order_of order customer customer 1 3 39 40 1003 "16/12/2008" add email name add add order order_of order order_of email email name 0 2 25 27 29 32 30 31 34 36 38 info code type "kato@biglab" "Kato" info code type no date no date "tanaka@gmail" "tanaka@biglab" "Tanaka" 13 15 17 26 28 19 21 23 5 7 9 11 33 35 37 "IPL of Tokyo" "100-888" contractual "BiG office of Tokyo" "200-777" shipping 1002 "16/10/2008" 1001 "16/07/2008" 12 14 16 18 20 22 4 6 8 10 14 S. Hidaka Traceability in GRoundTram
Transformation in UnQL select {order: {date: $date, no: $no, customer_name: $name, addr: $a}} where {customer.order: $o} in $db, {order_of:$c, date:$date, no:$no} in $o, {add:$a, name:$name} in $c, {code:$code, info:$info, type:shipping} in $a 24 41 no date order_of order customer customer 1 3 39 40 1003 "16/12/2008" add email name add add order order_of order order_of email email name 0 2 25 27 29 32 30 31 34 36 38 info code type "kato@biglab" "Kato" info code type no date no date "tanaka@gmail" "tanaka@biglab" "Tanaka" 13 15 17 26 28 19 21 23 5 7 9 11 33 35 37 "IPL of Tokyo" "100-888" contractual "200-777" shipping 1002 "16/10/2008" 1001 "16/07/2008" "BiG office of Tokyo" 12 14 16 18 20 22 4 6 8 10 S. Hidaka Traceability in GRoundTram 15
Target graph example : Order- centric graph select {order: {date: $date, no: $no, customer_name: $name, addr: $a}} where {customer.order: $o} in $db, {order_of:$c, date:$date, no:$no} in $o, {add:$a, name:$name} in $c, {code:$code, info:$info, type:shipping} in $a 23 order order order 24 25 26 no dat e customer_name addr addr no dat e customer_name addr customer_name no dat e 1 3 19 20 5 7 22 9 11 1003 "16/12/2008" "Kato" info code type 1002 "16/10/2008" "Tanaka" 1001 "16/07/2008" 0 2 18 13 15 17 4 6 21 8 10 "BiG office of Tokyo" "200-777" shipping 12 14 16 16 S. Hidaka Traceability in GRoundTram
From UnQL to UnCAL via structural recursion • Extract every subgraph under edges labeled b rec( λ ({$ l ,$ G }). select $ G sfun f({b:$ G }) = $ G where | f({$ l :$ G }) = f($ G ) if $ l = b then $ G else { ε :&})($ db ) {_*. b :$ G } in $ db in f($ db ) UnQL Structural UnCAL UnQL Structural UnCAL Recursion Recursion Property : Every UnQL query can be translated into UnCAL query 17 S. Hidaka Traceability in GRoundTram
Recommend
More recommend