Operational abstractions of model transforms

Model transforms convert a model to another model or text. Transforms play a key role in model-driven engineering; therefore, it is essential for a transform user to understand the transform semantics. However, examining the transform code to obtain such understanding can be cumbersome and impractical. To address this, we present an operational abstraction of model transforms. The abstraction captures the essential transformation semantics in terms of the structure of the output and the influence of input-model elements on output fragments. Thus, the abstraction supports the transform user's perspective, which is focused on inputs and outputs, and is unconcerned with implementation details. We present an automated approach that uses a combination of selective path enumeration, forced execution of enumerated paths, and an offline trace-merging analysis to synthesize operational abstractions. We discuss different applications of the abstraction. We implemented our approach for XSLT-based model transforms and conducted empirical studies. Our results indicate that selective path enumeration can be highly effective in reducing the scope of path exploration, while ensuring that the abstraction is complete. Our user study illustrates that the abstraction can improve user efficiency in debugging faulty input models. Our final study shows the feasibility of using abstractions for two metamodel management tasks.

[1]  Benoit Baudry,et al.  Automatic Model Generation Strategies for Model Transformation Testing , 2009, ICMT@TOOLS.

[2]  Dawson R. Engler,et al.  KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs , 2008, OSDI.

[3]  Martin C. Rinard,et al.  Automatically identifying critical input regions and code in applications , 2010, ISSTA '10.

[4]  Andrian Marcus,et al.  On the Use of Automated Text Summarization Techniques for Summarizing Source Code , 2010, 2010 17th Working Conference on Reverse Engineering.

[5]  Martin Glinz,et al.  Estimating footprints of model operations , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[6]  Thomas W. Reps,et al.  Extracting Output Formats from Executables , 2006, 2006 13th Working Conference on Reverse Engineering.

[7]  Jim Steel,et al.  Metamodel-based Test Generation for Model Transformations: an Algorithm and a Tool , 2006, 2006 17th International Symposium on Software Reliability Engineering.

[8]  Saurabh Sinha,et al.  Automated support for repairing input-model faults , 2010, ASE.

[9]  Emily Hill,et al.  Towards automatically generating summary comments for Java methods , 2010, ASE.

[10]  Christopher Krügel,et al.  Exploring Multiple Execution Paths for Malware Analysis , 2007, 2007 IEEE Symposium on Security and Privacy (SP '07).

[11]  Tibor Gyimóthy,et al.  An efficient relevant slicing method for debugging , 1999, ESEC/FSE-7.

[12]  David A. Carrington,et al.  Verifying metamodel coverage of model transformations , 2006, Australian Software Engineering Conference (ASWEC'06).

[13]  Tzi-cker Chiueh,et al.  A Forced Sampled Execution Approach to Kernel Rootkit Identification , 2007, RAID.

[14]  Gregg Rothermel,et al.  Interprocedural control dependence , 2001, TSEM.

[15]  Wei Liu,et al.  PathExpander: Architectural Support for Increasing the Path Coverage of Dynamic Bug Detection , 2006, 2006 39th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO'06).

[16]  Dawei Qi,et al.  Path exploration based on symbolic output , 2013, TSEM.

[17]  Anders Møller,et al.  Static Validation of XSL Transformations , 2005 .

[18]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[19]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1984, TOPL.

[20]  Koushik Sen,et al.  DART: directed automated random testing , 2005, PLDI '05.

[21]  Alessandro Orso,et al.  Penumbra: automatically identifying failure-relevant inputs using dynamic tainting , 2009, ISSTA.

[22]  Alessandro Orso,et al.  Execution Hijacking: Improving Dynamic Analysis by Flying off Course , 2011, 2011 Fourth IEEE International Conference on Software Testing, Verification and Validation.

[23]  Xiangyu Zhang,et al.  Locating faults through automated predicate switching , 2006, ICSE.

[24]  Jean-Marc Jézéquel,et al.  Meta-model Pruning , 2009, MoDELS.

[25]  Saurabh Sinha,et al.  Debugging Model-Transformation Failures Using Dynamic Tainting , 2010, ECOOP.

[26]  Ira D. Baxter,et al.  Design maintenance systems , 1991, CACM.

[27]  Raúl A. Santelices,et al.  Exploiting program dependencies for scalable multiple-path symbolic execution , 2010, ISSTA '10.