there and back again · 2011. 1. 8. · there and back again bidirectional computation for software...

64
Bidirectional Computation Bidirectional Computation is WANTED in SE BiX: A Bidirectional Tree Transformation Language Bidirectional Graph Computation: Bidirectionalizing ATL Conclusion There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November 12, 2008 Zhenjiang Hu There and Back Again

Upload: others

Post on 29-Oct-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

There and Back AgainBidirectional Computation for Software Engineering

Zhenjiang Hu

GRACE CenterNational Institute of Informaticc

November 12, 2008

Zhenjiang Hu There and Back Again

Page 2: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

How do you synchronize your calenders?

Zhenjiang Hu There and Back Again

Page 3: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

DefinitionBasic PropertiesDirect Applications

Bidirectional Computation (Bidirectional Transformation)

Zhenjiang Hu There and Back Again

Page 4: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

DefinitionBasic PropertiesDirect Applications

Bidirectional Computation (Bidirectional Transformation)

src tgt

Zhenjiang Hu There and Back Again

Page 5: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

DefinitionBasic PropertiesDirect Applications

Bidirectional Computation (Bidirectional Transformation)

src tgt

Zhenjiang Hu There and Back Again

Page 6: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

DefinitionBasic PropertiesDirect Applications

Bidirectional Computation (Bidirectional Transformation)

src tgt

tgt’

mod

Zhenjiang Hu There and Back Again

Page 7: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

DefinitionBasic PropertiesDirect Applications

Bidirectional Computation (Bidirectional Transformation)

src tgt

tgt’

mod

src’

Zhenjiang Hu There and Back Again

Page 8: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

DefinitionBasic PropertiesDirect Applications

Bidirectional Computation (Bidirectional Transformation)

src tgt

tgt’

mod

src’

Zhenjiang Hu There and Back Again

Page 9: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

DefinitionBasic PropertiesDirect Applications

Bidirectional Computation (Bidirectional Transformation)

src tgt

tgt’

mod

src’

get

put

It consists of a pair of computation forward and backward.

Zhenjiang Hu There and Back Again

Page 10: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

DefinitionBasic PropertiesDirect Applications

Stability

No change on the target implies no change on the source.

src tgt

tgt

no modification

src

get

put

put(get(s), s) = s

Zhenjiang Hu There and Back Again

Page 11: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

DefinitionBasic PropertiesDirect Applications

Reflectivity

Permitted changes on the target should be reflected to the source.

src tgt

tgt’

mod

src’

get

put

get(put(t ′, s)) = t ′

Zhenjiang Hu There and Back Again

Page 12: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

DefinitionBasic PropertiesDirect Applications

View Updating

Reflect changes on the view to the original relational database.

DB View

Ref: many studies in the database community[Bancilhon&Spyratos:81, Dayal&Bernstein, Gottlob et. al.:88 ]

Zhenjiang Hu There and Back Again

Page 13: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

DefinitionBasic PropertiesDirect Applications

Replicated Data Synchronization

Synchronization of data in different formats.

Ref: the Harmony project in Univ. of Pennsylvania[Pierce et. al: POPL’05, PODS’06, POPL’08].

Zhenjiang Hu There and Back Again

Page 14: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

Bidirectional Computation is WANTED in SE

Zhenjiang Hu There and Back Again

Page 15: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

Bidirectional Computation is WANTED in SE

Zhenjiang Hu There and Back Again

Page 16: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

Bidirectional Transformation in ABC

ABC: Architecture-Based Component composition (Peking Univ.)

Zhenjiang Hu There and Back Again

Page 17: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

Bidirectional Transformation in ABC

ABC: Architecture-Based Component composition (Peking Univ.)

Hu & Mei: Natural Science Funds for Distinguished Oversea Young Scholars

(2006-2008). Welcome to our workshop next January.

Zhenjiang Hu There and Back Again

Page 18: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

Challenges of BC for SE

Software Artifacts: Graphs

Software Development: Graph Transformations

Zhenjiang Hu There and Back Again

Page 19: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

Challenges of BC for SE

Software Artifacts: Graphs

Software Development: Graph Transformations

Perdita Stevens: Bidirectional Model Transformations in QVT:

Semantic Issues and Open Questions, Best Paper in MoDELS2007.

It is a big challenge to design a powerful language for

specifying graph computation with clear bidirectional

semantics that can support practical software

development.

Zhenjiang Hu There and Back Again

Page 20: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

BiXHow Powerful is BiX?

Languages for Bidirectional Computation

Languages with both forward and backward computationsemantics:

src tgt

tgtsrc

get

put

Zhenjiang Hu There and Back Again

Page 21: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

BiXHow Powerful is BiX?

BiX: A Bidirectional XML Transformation Language

Zhenjiang Hu There and Back Again

Page 22: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

BiXHow Powerful is BiX?

BiX: A Bidirectional XML Transformation Language

Inv: an injective language for revertible computation[MPC’04, APLAS’04]

X: a domain-specific bidirectional language for interactivedocument construction (with the dup primitive)[ACM PEPM’04, HOCS:08]

BiX: a bidirectional transformation language for general XMLprocessing (with function definitions and local bindings)[ACM PEPM’07]

... A general bidirectional functional language [ACM ICFP’07]

Zhenjiang Hu There and Back Again

Page 23: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

BiXHow Powerful is BiX?

BiX: A Bidirectional XML Transformation Language

Inv: an injective language for revertible computation[MPC’04, APLAS’04]

X: a domain-specific bidirectional language for interactivedocument construction (with the dup primitive)[ACM PEPM’04, HOCS:08]

BiX: a bidirectional transformation language for general XMLprocessing (with function definitions and local bindings)[ACM PEPM’07]

... A general bidirectional functional language [ACM ICFP’07]

Write forward transformation and get backward transformation for free!

Zhenjiang Hu There and Back Again

Page 24: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

BiXHow Powerful is BiX?

BiX

A Combinator-based language

Zhenjiang Hu There and Back Again

Page 25: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

BiXHow Powerful is BiX?

BiX

A Combinator-based language

Primitive bidirectional transformations for tree manipulation,which is extensible.

Zhenjiang Hu There and Back Again

Page 26: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

BiXHow Powerful is BiX?

BiX

A Combinator-based language

Primitive bidirectional transformations for tree manipulation,which is extensible.Combinators for composing smaller bidirectionaltransformations

Zhenjiang Hu There and Back Again

Page 27: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

BiXHow Powerful is BiX?

BiX

A Combinator-based language

Primitive bidirectional transformations for tree manipulation,which is extensible.Combinators for composing smaller bidirectionaltransformations

We only need to prepare a pair of transformations for eachprimitive bidirectional transformation, other backwardtransformations are obtained for free.

Zhenjiang Hu There and Back Again

Page 28: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

BiXHow Powerful is BiX?

Primitive Bi-Transformations

Primitive bidirectional transformations for tree manipulation:

for tree destruction, e.g.,

xid

xleftchild

for tree construction, e.g.,

xconst t

xdup

xnewroot n

Zhenjiang Hu There and Back Again

Page 29: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

BiXHow Powerful is BiX?

xid

Identity Transformation

Zhenjiang Hu There and Back Again

Page 30: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

BiXHow Powerful is BiX?

xid

Identity Transformation

s s

Zhenjiang Hu There and Back Again

Page 31: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

BiXHow Powerful is BiX?

xid

Identity Transformation

s s

t’

mod

Zhenjiang Hu There and Back Again

Page 32: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

BiXHow Powerful is BiX?

xid

Identity Transformation

s s

t’

mod

t’

get

put

Zhenjiang Hu There and Back Again

Page 33: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

BiXHow Powerful is BiX?

xid

Identity Transformation

s s

t’

mod

t’

get

put

get s = s

put t ′ s = t ′

Zhenjiang Hu There and Back Again

Page 34: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

BiXHow Powerful is BiX?

xleftchild

Select the leftmost child of the root

Zhenjiang Hu There and Back Again

Page 35: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

BiXHow Powerful is BiX?

xleftchild

Select the leftmost child of the root

s1 sn· · ·

s1

Zhenjiang Hu There and Back Again

Page 36: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

BiXHow Powerful is BiX?

xleftchild

Select the leftmost child of the root

s1 sn· · ·

s1

s ′1

mod

Zhenjiang Hu There and Back Again

Page 37: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

BiXHow Powerful is BiX?

xleftchild

Select the leftmost child of the root

s1 sn· · ·

s1

s ′1

mod

s ′1 sn· · ·

get

put

Zhenjiang Hu There and Back Again

Page 38: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

BiXHow Powerful is BiX?

xleftchild

Select the leftmost child of the root

s1 sn· · ·

s1

s ′1

mod

s ′1 sn· · ·

get

put

get (Node n [s1, . . . , sn]) = s1put s ′1 (Node n [s1, . . . , sn]) = Node n [s ′1, . . . , sn]

Zhenjiang Hu There and Back Again

Page 39: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

BiXHow Powerful is BiX?

Combinators

Used to construct bigger bidirectional transformations bycomposing smaller bidirectional transformations.

Sequential composition: x1 ; x2

Parallel composition: x1 || x2

Map to each: xmap x

Conditional: xif p x1 x2

Zhenjiang Hu There and Back Again

Page 40: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

BiXHow Powerful is BiX?

Sequential Composition

src tgt

x1

tgt’

x2

src tgt’

x1 ; x2

get(x1 ; x2) s = getx2(getx1

s)

put(x1 ; x2) t ′ s = putx1(putx2

t ′ (getx1s)) s

Zhenjiang Hu There and Back Again

Page 41: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

BiXHow Powerful is BiX?

Parallel Composition

s1 t1

x1

s2 t2

x2

s1 s2 t1 t2

x1 || x2

Zhenjiang Hu There and Back Again

Page 42: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

BiXHow Powerful is BiX?

Map-to-each

si ti

x

s1 sn· · ·

t1 tn

· · ·xmap x

Zhenjiang Hu There and Back Again

Page 43: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

BiXHow Powerful is BiX?

Conditional

If p s holds, then

s tx1

s txif p x1 x2

otherwise,

s tx2

s txif p x1 x2

Zhenjiang Hu There and Back Again

Page 44: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

BiXHow Powerful is BiX?

How Powerful is BiX?

The core XSLT can be bidirectionalized with BiX [JSSST CS’07]

The core XQuery can be bidirectionalized with BiX [ACM PEPM’07]

http://www.ipl.t.u-tokyo.ac.jp/˜liu/BiXQuery.html

Zhenjiang Hu There and Back Again

Page 45: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

BiXHow Powerful is BiX?

Application: Web Site Maintenance

Vu-X: update web pages on browsers in the WYSIWYG manner.

Ref: [PEPM’07, WSE’08]. (About 20,000 loc in BiX)

Zhenjiang Hu There and Back Again

Page 46: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

BiXHow Powerful is BiX?

Application: Web Site Maintenance

Vu-X: update web pages on browsers in the WYSIWYG manner.

http://www.psdlab.org/vux/

Zhenjiang Hu There and Back Again

Page 47: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

ATLBidirectionalizing ATLA Small Demo

Can you bidirectionalize ATL, a popular modeltransformation language?

Zhenjiang Hu There and Back Again

Page 48: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

ATLBidirectionalizing ATLA Small Demo

ATL

ATL (ATLAS Transformation Language) is a modeltransformation language for describing unidirectional modeltransformations.

Developed by the ATLAS Group (INRIA & LINA).

Has more than 100 transformation examples and manynontrivial use cases.

Zhenjiang Hu There and Back Again

Page 49: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

ATLBidirectionalizing ATLA Small Demo

A Simple Model Transformation: UML2Java

A UML Model

<Class name=”Book” description=”a demo class”>

<attrs name=”title” type=”String”/>

<attrs name=”price” type=”Double”/>

</Class><Class name=” draft Authors”/>

A Java Model

<Class name=”Book”>

<fields name=” title” type=”String”/>

<fields name=” price” type=”Double”/>

</Class>

Zhenjiang Hu There and Back Again

Page 50: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

ATLBidirectionalizing ATLA Small Demo

The Simple Model Transformation in ATL

module UML2Java;

create OUT : Java from IN : UML;

rule Class2Class {from u : UML!Class (

not u.name.startsWith(’ draft ’))to j : Java!Class (

name ← u.name,fields← u.attrs

)}

rule Attribute2Field {from a : UML!Attributeto f : Java!Field (

name ← ’ ’ + a.name,type ← a.type

)}

Zhenjiang Hu There and Back Again

Page 51: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

ATLBidirectionalizing ATLA Small Demo

Bidirectionalzing ATL with BiX+ [ASE 2007]

Zhenjiang Hu There and Back Again

Page 52: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

ATLBidirectionalizing ATLA Small Demo

A Model Transformation in ATL

...

rule Attribute2Field {from a : UML!Attributeto f : Java!Field (

name ← ’ ’ + a.name,type ← a.type

)}

Zhenjiang Hu There and Back Again

Page 53: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

ATLBidirectionalizing ATLA Small Demo

ATL Byte Code

push "UML!Attribute"

push "IN"

call "S.allInstancesFrom(S):QJ"

iterate

store "a"

push "Java!Field"

new

store "f"

load "f"

push "_"

load "a"

get "name"

call "S.Concatenate(S):S"

set "name"

load "f"

load "a"

get "type"

set "type"

enditerate

Zhenjiang Hu There and Back Again

Page 54: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

ATLBidirectionalizing ATLA Small Demo

Interpreting ATL Byte Codes by BiX+

instructions descriptionpush push a constant to the stackpop pop the top of the stackstore store a value into a local variableload load value from local variableif branch if the top of the stack is true

iterate delimitate the beginning of iteration on collection elementsenditerate delimitate the end of iteration on collection elementscall call a methodnew create a new model elementget fetch an attribute of a model elementset set an attribute of a model element

We omit the detailed discussion here.

Zhenjiang Hu There and Back Again

Page 55: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

ATLBidirectionalizing ATLA Small Demo

A Small Demo

A UML Model

<Class name=”Book” description=”a demo class”>

<attrs name=”title” type=”String”/>

<attrs name=”price” type=”Double”/>

</Class><Class name=” draft Authors”/>

A Java Model

<Class name=”Book”>

<fields name=” title” type=”String”/>

<fields name=” price” type=”Double”/>

</Class>

Zhenjiang Hu There and Back Again

Page 56: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

ATLBidirectionalizing ATLA Small Demo

A Small Demo

A UML Model

<Class name=”Book” description=”a demo class”>

<attrs name=”title” type=”String”/>

<attrs name=”price” type=”Double”/>

<attrs name=”authors” type=”String”/>

</Class><Class name=” draft Authors”/>

A Java Model

<Class name=”Book”>

<fields name=” title” type=”String”/>

<fields name=” price” type=”Double”/>

<comment text=” bookTitle cannot be null”/>

</Class>

Zhenjiang Hu There and Back Again

Page 57: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

ATLBidirectionalizing ATLA Small Demo

A Small Demo

A UML Model

<Class name=”Book” description=”a demo class”>

<attrs name=”title” type=”String”/>

<attrs name=”price” type=”Double”/>

<attrs name=”authors” type=”String”/>

</Class><Class name=” draft Authors”/>

A Java Model

<Class name=”Book”>

<fields name=” title” type=”String”/>

<fields name=” price” type=”Double”/>

<attrs name=”authors” type=”String”/>

<comment text=” bookTitle cannot be null”/>

</Class>Zhenjiang Hu There and Back Again

Page 58: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

ATLBidirectionalizing ATLA Small Demo

Try it!

http://www.ipl.t.u-tokyo.ac.jp/˜xiong/modelSynchronization.html

Zhenjiang Hu There and Back Again

Page 59: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

Conclusion

Bidirectional transformation is fun!

Static ⇒ dynamic

Bidirectional transformation is useful!

Synchronization of data in different formatsDocument developmentSoftware Engineering

Bidirectional transformation is challenging!

Semantic issues, compositional construction, developmentenvironment, ...

Zhenjiang Hu There and Back Again

Page 60: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

Conclusion

Bidirectional transformation is fun!

Static ⇒ dynamic

Bidirectional transformation is useful!

Synchronization of data in different formatsDocument developmentSoftware Engineering

Bidirectional transformation is challenging!

Semantic issues, compositional construction, developmentenvironment, ...

⇓Linguistic Foundation for Bidirectional Graph Transformation

http://research.nii.ac.jp/˜hu/project/bix.html

Zhenjiang Hu There and Back Again

Page 61: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

Collaborators

University of TokyoE-Society Project (2004-)

Masato TakeichiKazutaka MatsudaYingfei XiongKeisuke Nakano (OB)Dongxi Liu (OB)Susumu Hayashi (OB)Shin-Cheng Mu (OB)

Peking UniversityNSF for DistinguishedOversea Young Scholars(2006-)

Hong MeiHaiyan ZhaoGang HuangHui SongYingfei Xiong

National Institute of InformaticsGrand-Challenge Project at NII (2008-)

Soichiro HidakaHiroyuki Kato

Zhenjiang Hu There and Back Again

Page 62: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

There and Back Again

Zhenjiang Hu There and Back Again

Page 63: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

There and Back Again

Thank You!

Zhenjiang Hu There and Back Again

Page 64: There and Back Again · 2011. 1. 8. · There and Back Again Bidirectional Computation for Software Engineering Zhenjiang Hu GRACE Center National Institute of Informaticc November

Bidirectional ComputationBidirectional Computation is WANTED in SE

BiX: A Bidirectional Tree Transformation LanguageBidirectional Graph Computation: Bidirectionalizing ATL

Conclusion

GRACE Int’l Meeting on Bidirectional Transformation

The first Dagstuhl-style seminars in Asia

Shonan Village Center (Japan), December 15th-18th, 2008

Organizers: Zhenjiang Hu, Nate Foster, Krzysztof Czarnecki

Zhenjiang Hu There and Back Again