This is the author’s version of a work that was accepted for publication in Journal of Systems and Software. Changes resulting from the publishing process, such as peer review, editing, corrections, structural formatting, and other quality control mechanisms may not be reflected in this document. Changes may have been made to this work since it was submitted for publication. A definitive version was subsequently published in Journal of Systems and Software, VOL 116, (2016) DOI 10.1016/j.jss.2015.08.017Model transformations are key elements of Model Driven Engineering. Current
challenges for transformation languages include improving usability (i.e.,
succinct means to express the transformation intent) and devising powerful
analysis methods.
In this paper, we show how backwards reasoning helps in both respects.
The reasoning is based on a method that, given an OCL expression and a
transformation rule, calculates a constraint that is satisfiable before the rule
application if and only if the original OCL expression is satisfiable afterwards.
With this method we can improve the usability of the rule execution
process by automatically deriving suitable application conditions for a rule
(or rule sequence) to guarantee that applying that rule does not break any
integrity constraint (e.g. meta-model constraints). When combined with
model finders, this method facilitates the validation, verification, testing and
diagnosis of transformations, and we show several applications for both inplace
and exogenous transformations.Work partially funded by the Spanish Ministry of Economy and Competitiveness (projects TIN2008-00444, TIN2011-24139 and TIN2014-52129-R), the Community of Madrid with project SICOMORO (S2013/ICE-3006), the EU Commission with project MONDO (FP7-ICT-2013-10, #611125) and a research grant from UOC-IN3 (Internet Interdisciplinary Institute). We would like to thank Hamza Ed-Douibi for his work on the tool implementation part, and the reviewers for their useful comments