Bidirectionally Tolerating Inconsistency: Partial Transformations

A foundational property of bidirectional transformations is that they should be correct: that is, the transformation should succeed in restoring consistency between any models it is given. In practice, however, transformation engines sometimes fail to res

  • PDF / 253,890 Bytes
  • 15 Pages / 439.363 x 666.131 pts Page_size
  • 100 Downloads / 166 Views

DOWNLOAD

REPORT


Abstract. A foundational property of bidirectional transformations is that they should be correct: that is, the transformation should succeed in restoring consistency between any models it is given. In practice, however, transformation engines sometimes fail to restore consistency, e.g. because there is no consistent model to return, or because the tool is unable to select a best model to return from among equally good candidates. In this paper, we formalise properties that may nevertheless hold in such circumstances and discuss relationships and implications.

1

Introduction

In software engineering, it has long been understood that data involved in the development of a software system will, at least at certain points, be inconsistent, and that it can be unproductive – or even counterproductive – to try to maintain consistency at all times. Rather, mechanisms are needed to tolerate, manage and understand inconsistency so that it does not threaten the overall aim of the project [3,13,12]. Although consistency is a central notion for bidirectional transformations, tolerating inconsistency has so far not been studied in this context. This paper aims to rectify the situation. In model-driven development, a bidirectional transformation (abbreviated bx) has two jobs. First, it has to be able to say when two models (or more: but in this paper, for clarity of exposition, we will treat only the case of two) are consistent according to the definition embodied in the transformation. Second, it has to be able to take a pair of models and modify a specified one of them so as to restore consistency. The question of what properties are desirable in such a transformation is an interesting one on which there is a growing literature. Most of it, however, does not allow the bx ever to fail, or to put it more positively, to succeed only partially. Consistency is all-or-nothing, and consistency restoration must always succeed for the bx to be considered correct. Practical model transformation engines, by contrast, frequently fail to restore consistency between models when asked to do so. Although it is useful to try to develop languages and tools that will allow this to happen seldom, we suggest that there is also a need for a formal framework which recognises the inevitability of such failure. Without one, we cannot discuss and reason about the good properties that such “imperfect” bx may still have. Since a bx is usually assumed/required to restore perfect consistency, we could think of a bx that does S. Gnesi and A. Rensink (Eds.): FASE 2014, LNCS 8411, pp. 32–46, 2014. c Springer-Verlag Berlin Heidelberg 2014 

Bidirectionally Tolerating Inconsistency: Partial Transformations

33

not as partial, its domain being the pairs of models on which it succeeds in restoring consistency. We shall, in fact, set up a more informative framework than this idea suggests, but, to motivate it, let us first consider three reasons why a bx engine may fail to restore consistency. Let us assume that we are trying to check and, if necessary, restore c