Title
The essence of bidirectional programming.
Abstract
Bidirectional transformations (BXs), programs with a forward transformation and a backward transformation that maintain consistency between input and output, are routinely written in ways that do not let programmers specify their behavior completely. Several bidirectional programming languages exist to aid programmers in writing BXs with increased maintainability but decreased expressiveness. Such languages allow programmers to write BXs as one program for both directions, which is easier to maintain than separate programs for each direction. However, the maintainability provided by existing bidirectional languages comes at the cost of expressiveness because the ambiguity of synchronization is solved by default strategies which are hidden from programmers. The programmers’ inability to influence synchronization strategies has led to the proposal of a vast number of approaches that consider tailor-made synchronization strategies for particular applications. In this paper, we argue that such ambiguity is essential for BX and advocate that the synchronization strategy should not be hidden from programmers but considered from the start. We propose a novel approach to specifying so-called well-behaved bidirectional programs by their backward transformations, capable of expressing all aspects of a BX while retaining maintainability. Soundness of our approach results from a systematic analysis, based on existing mathematical concepts, of the instrumental laws of well-behaved BXs. We show that well-behaved BXs are uniquely determined by their backward transformations and corresponding forward transformations can be obtained for free.
Year
DOI
Venue
2015
10.1007/s11432-015-5316-8
SCIENCE CHINA Information Sciences
Keywords
DocType
Volume
bidirectional transformation, software adaption and coevolution, bidirectional programming, 双向变换, 语言设计, 数据同步, 软件自适应, 软件进化
Journal
58
Issue
ISSN
Citations 
5
1869-1919
9
PageRank 
References 
Authors
0.48
18
3
Name
Order
Citations
PageRank
Sebastian Fischer1221.12
Zhenjiang Hu2134199.25
Hugo Pacheco314611.71