2014 Volume 31 Issue 2 Pages 2_44-2_56
A bidirectional transformation consists of pairs of transformations — a forward transformation produces a target view from a source, while a backward transformation puts back modifications on the view to the source — satisfying sensible roundtrip properties. Bidirectional transforms, originating from the view update problem in the database community, are gaining more and more interests from researchers in programming languages as a novel programming model for data synchronization, and researchers in software engineering as a new approach to evolutionary software development. In this article, we would like to outline the history, basic principles, tools, and applications of bidirectional transformations, from different views of programming languages, software engineering, and databases.