Computing repair trees for resolving inconsistencies in design models

Resolving inconsistencies in software models is a complex task because the number of repairs grows exponentially. Existing approaches thus emphasize on selected repairs only but doing so diminishes their usefulness. This paper copes with the large number of repairs by focusing on what caused an inconsistency and presenting repairs as a linearly growing repair tree. The cause is computed by examining the run-time evaluation of the inconsistency to understand where and why it failed. The individual changes that make up repairs are then modeled in a repair tree as alternatives and sequences reflecting the syntactic structure of the inconsistent design rule. The approach is automated and tool supported. Its scalability was empirically evaluated on 29 UML models and 18 OCL design rules where we show that the approach computes repair trees in milliseconds on average. We believe that the approach is applicable to arbitrary modeling and constraint languages.

[1]  Michael Winikoff,et al.  An agent-oriented approach to change propagation in software maintenance , 2011, Autonomous Agents and Multi-Agent Systems.

[2]  Tom Mens,et al.  Detecting model inconsistency through operation-based model construction , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[3]  Robert Balzer,et al.  Tolerating Inconsistency , 1991, [1989] Proceedings of the 5th International Software Process Workshop.

[4]  Lothar Schmitz,et al.  Managing inconsistent repositories via prioritized repairs , 2004, DocEng '04.

[5]  Ákos Horváth,et al.  Quick fix generation for DSMLs , 2011, 2011 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).

[6]  Sarfraz Khurshid,et al.  Juzi: a tool for repairing complex data structures , 2008, ICSE.

[7]  Krzysztof Czarnecki,et al.  Verifying feature-based model templates against well-formedness OCL constraints , 2006, GPCE '06.

[8]  Alexander Egyed,et al.  Automatically Detecting and Tracking Inconsistencies in Software Design Models , 2011, IEEE Transactions on Software Engineering.

[9]  Alexander Egyed,et al.  Instant consistency checking for the UML , 2006, ICSE.

[10]  Alexander Egyed,et al.  Positive effects of utilizing relationships between inconsistencies for more effective inconsistency resolution: NIER track , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[11]  Gregor Engels,et al.  Using UML activities for system-on-chip design and synthesis , 2006, MoDELS'06.

[12]  Alexander Egyed,et al.  Incremental Consistency Checking of Dynamic Constraints , 2010, FASE.

[13]  Licia Capra,et al.  xlinkit: a consistency checking and smart link generation service , 2002, TOIT.

[14]  Sarfraz Khurshid,et al.  Constraint-based program debugging using data structure repair , 2011, 2011 Fourth IEEE International Conference on Software Testing, Verification and Validation.

[15]  Alexander Egyed,et al.  Generating and Evaluating Choices for Fixing Inconsistencies in UML Design Models , 2008, 2008 23rd IEEE/ACM International Conference on Automated Software Engineering.

[16]  John C. Grundy,et al.  Inconsistency Management for Multiple-View Software Development Environments , 1998, IEEE Trans. Software Eng..

[17]  Alexander Egyed,et al.  Fixing Inconsistencies in UML Design Models , 2007, 29th International Conference on Software Engineering (ICSE'07).

[18]  Tom Mens,et al.  Resolving Model Inconsistencies with Automated Planning , 2010, LWI@ASE.

[19]  Ragnhild Van Der Straeten,et al.  Model refactorings through rule-based inconsistency resolution , 2006, SAC.

[20]  Reda Bendraou,et al.  Towards Automated Inconsistency Handling in Design Models , 2010, CAiSE.

[21]  Haiyan Zhao,et al.  Supporting automatic model inconsistency fixing , 2009, ESEC/SIGSOFT FSE.

[22]  Wolfgang Emmerich,et al.  Consistency management with repair actions , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..