Towards Combinators for Bidirectional Model Transformations in Scala
In model-driven engineering (MDE), often models that conform to different metamodels have to be synchronized. Manually implemented model synchronizations that are not simple bijections are hard to maintain and to reason about. Special languages for expressing bidirectional transformations can help in this respect, but existing non-bijective languages are often hard to integrate with other MDE technologies or depend on up-to-date tool support. We embed lenses – a promising term-rewriting-based approach to bidirectional transformations – into the Scala programming language and use lenses for model synchronization. We discuss how this allows for static type-safety and for seamless integration with existing Java-based MDE technologies.
KeywordsModel Transformation Eclipse Modeling Framework Bidirectional Transformation Model Synchronization Eclipse Modeling Framework Model
Unable to display preview. Download preview PDF.
- 2.Foster, J.N., Greenwald, M.B., Moore, J.T., Pierce, B.C., Schmitt, A.: Combinators for Bi-Directional Tree Transformations: A Linguistic Approach to the View Update Problem. In: Proceedings of the 32nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2005, pp. 233–246. ACM (2005)Google Scholar
- 4.Kiselyov, O., Lämmel, R., Schupke, K.: Strongly Typed Heterogeneous Collections. In: Proceedings of the ACM SIGPLAN Workshop on Haskell, pp. 96–107. ACM (2004)Google Scholar
- 5.Nordenberg, J.: Type Lists and Heterogeneously Typed Arrays (2009), http://jnordenberg.blogspot.com/2009/09/type-lists-and-heterogeneously-typed.html
- 6.Sloane, A.M.: Experiences with Domain-Specific Language Embedding in Scala. In: Proceedings of 2nd Int’l Workshop on Domain-Specific Program Development (2008)Google Scholar
- 8.Hidaka, S., Hu, Z., Kato, H., Nakano, K.: A Compositional Approach to Bidirectional Model Transformation. In: ICSE Companion, pp. 235–238 (2009)Google Scholar
- 10.Oliveira, B.C.D.S., Gibbons, J.: Scala for Generic Programmers: Comparing Haskell and Scala Support for Generic Programming. J. Funct. Program. 20, 303–352Google Scholar