Behavior Preservation in Model Refactoring using DPO Transformations with Borrowed Contexts
G. Rangel(1)
L. Lambers(1)
H. Ehrig (1),
B. König(2)
P. Baldan(3),
(1) Computer Science Department, Technical University of Berlin, Germany
(2)Institut für Informatik und interaktive Systeme,
Universität Duisburg-Essen, Germany.
(3) Dipartimento di Matematica Pura e Applicata, Università di Padova, Italia.
Abstract:
Behavior preservation, namely the fact that the behavior of a model is
not altered by the transformations, is a crucial property in
refactoring. The most common approaches to behavior preservation rely
basically on checking given models and their refactored versions. In
this paper we introduce a more general technique for checking behavior
preservation of refactorings defined by graph transformation rules. We
use double pushout (DPO) rewriting with borrowed contexts, and,
exploiting the fact that observational equivalence is a congruence, we
show how to check refactoring rules for behavior preservation without
the need of considering specific models. When rules are
behavior-preserving, their application will never change behavior,
i.e., every model and its refactored version will have the same
behavior. However, often there are refactoring rules describing
intermediate steps of the transformation, which are not
behavior-preserving, although the full refactoring does preserve the
behavior. For these cases we present a procedure to combine
refactoring rules to behavior-preserving concurrent productions in
order to ensure behavior preservation. An example of refactoring for
finite automata is given to illustrate the theory.