Abstract
Model-to-text (M2T) transforms are a class of software applications that translate a structured input into text output. The input models to such transforms are complex, and faults in the models that cause an M2T transform to generate an incorrect or incomplete output can be hard to debug. We present an approach based on dynamic tainting to assist transform users in debugging input models. The approach instruments the transform code to associate taint marks with the input-model elements, and propagate the marks to the output text. The taint marks identify the input-model elements that either contribute to an output string, or cause potentially incorrect paths to be executed through the transform, which results in an incorrect or a missing string in the output. We implemented our approach for XSL-based transforms and conducted empirical studies. Our results illustrate that the approach can significantly reduce the fault search space and, in many cases, precisely identify the input-model faults. The main benefit of our approach is that it automates, with a high degree of accuracy, a debugging task that can be tedious to perform manually.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Agrawal, H., DeMillo, R.A., Spafford, E.H.: Debugging with dynamic slicing and backtracking. Software—Practice and Experience 23(6), 589–616 (1993)
Agrawal, H., Horgan, J.R., London, S., Wong, W.E.: Fault localization using execution slices and dataflow tests. In: Proc. of the Intl. Symp. on Softw. Reliability Eng., pp. 143–151 (1995)
Aho, A.V., Sethi, R., Ullman, J.D.: Compilers, Principles, Techniques, and Tools. Addison-Wesley Publishing Company, Reading (1986)
Baxter, I.D.: Design maintenance systems. ACM Commun. 35(4), 73–89 (1992)
Clause, J., Li, W., Orso, A.: Dytan: A generic dynamic taint analysis framework. In: Proc. of the Intl. Symp. on Softw. Testing and Analysis, pp. 196–206 (2007)
Clause, J., Orso, A.: Penumbra: Automatically identifying failure-relevant inputs using dynamic tainting. In: Proc. of the Intl. Symp. on Softw. Testing and Analysis, pp. 249–259 (2009)
Czarnecki, K., Helsen, S.: Classification of model transformation approaches. In: Proc. of the OOPSLA 2003 Workshop on Generative Techniques in the Context of Model-Driven Architecture (2003)
DeMillo, R.A., Pan, H., Spafford, E.H.: Critical slicing for software fault localization. In: Proc. of the Intl. Symp. on Softw. Testing and Analysis, pp. 121–134 (1996)
Dinh-Trong, T., Ghosh, S., France, R., Baudry, B., Fleury, F.: A taxonomy of faults for UML models. In: Proc. of the 2nd Workshop on Model Design and Validation (2005)
Drivalos, N., Kolovos, D., Paige, R., Fernandes, K.: Engineering a DSL for software traceability. Software Language Engineering, 151–167 (2009)
Ferrante, J., Ottenstein, K.J., Warren, J.D.: The program dependence graph and its use in optimization. ACM Trans. Progr. Lang. Syst. 9(3), 319–349 (1987)
Halfond, W., Orso, A., Manolios, P.: Using positive tainting and syntax-aware evaluation to counter SQL injection attacks. In: Proc. of the ACM SIGSOFT Symp. on the Foundations of Softw. Eng., pp. 175–185 (November 2006)
Jones, J.A., Harrold, M.J., Stasko, J.: Visualization of test information to assist fault localization. In: Proc. of the 24th Intl. Conf. on Softw. Eng., pp. 467–477 (May 2002)
Kolovos, D.: Establishing correspondences between models with the epsilon comparison language. In: Model Driven Architecture-Foundations and Applications, pp. 146–157
Korel, B., Laski, J.: Dynamic program slicing. Information Processing Letters 29(3), 155–163 (1988)
Masri, W., Podgurski, A., Leon, D.: Detecting and debugging insecure information flows. In: Proc. of the Intl. Symp. on Softw. Reliability Eng., pp. 198–209 (2004)
Newsome, J., Song, D.X.: Dynamic taint analysis for automatic detection, analysis, and signature generation of exploits on commodity software. In: Proc. of the Network and Distributed System Security Symp. (2005)
Offutt, J., Xu, W.: Generating test cases for web services using data perturbation. Softw. Eng. Notes 29(5), 1–10 (2004)
Renieres, M., Reiss, S.P.: Fault localization with nearest neighbor queries. In: Proc. of the 18th Intl. Conf. on Automated Softw. Eng., pp. 30–39 (2003)
Schmidt, D.C.: Model-driven engineering. IEEE Computer 39(2), 25–31 (2006)
Sterling, C.D., Olsson, R.A.: Automated bug isolation via program chipping. Software—Practice and Experience 37(10), 1061–1086 (2007)
Van Gorp, P., Keller, A., Janssens, D.: Transformation language integration based on profiles and higher order transformations. In: Gašević, D., Lämmel, R., Van Wyk, E. (eds.) SLE 2008. LNCS, vol. 5452, pp. 208–226. Springer, Heidelberg (2009)
Zeller, A., Hildebrandt, R.: Simplifying and isolating failure-inducing input. IEEE Trans. Software Eng. 28(2), 183–200 (2002)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2010 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Dhoolia, P., Mani, S., Sinha, V.S., Sinha, S. (2010). Debugging Model-Transformation Failures Using Dynamic Tainting. In: D’Hondt, T. (eds) ECOOP 2010 – Object-Oriented Programming. ECOOP 2010. Lecture Notes in Computer Science, vol 6183. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-14107-2_3
Download citation
DOI: https://doi.org/10.1007/978-3-642-14107-2_3
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-14106-5
Online ISBN: 978-3-642-14107-2
eBook Packages: Computer ScienceComputer Science (R0)