Abstract
Finding runtime faults in object-oriented code can be very difficult even with the aid of modern runtime debuggers. Failures may manifest themselves due to decisions in the code that were executed much earlier in the program. Tracing execution paths and values backward from a failure to the faulty code can be a daunting task. We propose a fault finding approach that uses unit tests to exercise source code in order to trace object-method execution paths. This is similar to reverse-engineering techniques used to create Sequence Diagrams from code. It is often too complex to debug a program using a large set of reverse-engineered Sequence Diagrams each obtained from an individual execution. Therefore, our approach partitions and aggregates individual execution paths into into fault and non-fault revealing categories. By examining the differences between fault and non-fault paths, we are left with a simplified graph. The graph can then be transformed into a useful Sequence Diagram that may reveal the location of the faulty code.
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., Horgan, J., London, S., Wong, W.: Fault Localization using Execution Slices and Dataflow Tests. In: Proceedings of the IEEE International Symposium on Software Reliability Engineering, pp. 143–151. IEEE Computer Society Press, Los Alamitos (1995)
Briand, L., Labiche, Y., Miao, Y.: Towards the Reverse Engineering of UML Sequence Diagrams. In: IEEE 10th Working Conference on Reverse Engineering, IEEE Computer Society Press, Los Alamitos (2003)
Binder, R.: Testing Object-Oriented Systems Models, Patterns, and Tools. Object Technology Series. Addison Wesley, Reading, Massachusetts (1999)
Briand, L., Labiche, Y.: A UML-based Approach to System Testing. In: Gogolla, M., Kobryn, C. (eds.) UML 2001. LNCS, vol. 2185, pp. 194–208. Springer, Heidelberg (2001)
De Pauw, W., Jensen, E., Mitchell, N., Sevitsky, G., Vlissides, J., Yang, J.: Visualizing the Execution of Java Programs. In: Diehl, S. (ed.) Software Visualization. LNCS, vol. 2269, pp. 151–162. Springer, Heidelberg (2002)
Eagan, J., Harrold, M.J., Jones, J., Stasko, J.: Technical note: Visually Encoding Program Test Information to Find Faults in Software. In: Proceedings of IEEE Information Visualization, pp. 33–36. IEEE Computer Society Press, Los Alamitos (2001)
Jacobs, T., Musial, B.: Interactive Visual Debugging with UML. In: SoftVis 2003. Proceedings of the 2003 ACM Symposium on Software Visualization, pp. 115–122. ACM Press, New York (2003)
Jerding, D.F., Stasko, J.T., Ball, T.: Visualizing Interactions in Program Executions. In: Proceedings International Conference on Software Engineering, pp. 360–370 (1997)
Jones, J., Harrold, M., Stasko, J.: Visualization of Test Information to Assist Fault Localization. In: Proceedings of the 24th International Conference on Software Engineering, pp. 467–477 (2002)
Kollman, R., Gogolla, M.: Capturing Dynamic Program Behavior with UML Collaboration Diagrams. In: Proceedings CSMR, pp. 58–67 (2001)
Larman, C.: Applying UML and Patterns, 3rd edn. Prentice-Hall, Englewood Cliffs (2005)
DeMillo, R., Pan, H., Spafford, E.: Failure and Fault Analysis For Software Debugging. In: Proceedings of the Computer Software and Applications Conference, pp. 515–521 (1997)
Object Management Group, UML 2.0 Draft Specification (2005), http://www.omg.org/uml
Oechsle, R., Schmitt, T.: JAVAVIS: Automatic Program Visualization with Object and Sequence Diagrams Using the Java Debug Interface (JDI). In: Diehl, S. (ed.) Software Visualization. LNCS, vol. 2269, pp. 176–190. Springer, Heidelberg (2002)
Richner, T., Ducasse, S.: Using Dynamic Information for the Iterative Recovery of Collaborations and Roles. In: Proceedings International Conference on Software Maintenance, pp. 34–43 (2002)
Systa, T., Koskimies, K., Muller, H.: Shimba – An Environment for Reverse Engineering Java Software Systems. Software – Practice and Experience 31(4), 371–394 (2001)
Telles, M., Hsieh, Y.: The Science of Debugging, The Coriolis Group, Scottsdale, AZ (2001)
Vans, M., von Mayrhauser, A., Somlo, G.: Program Understanding Behavior during Corrective Maintenance of Large-scale Software. Int. Journal Human-Computer Studies 51, 31–70 (1999)
Walker, R.J., Murphy, G.C., Freeman-Benson, B., Wright, D., Swanson, D., Isaak, J.: Visualizing Dynamic Software System Information through High-Level Models. In: Proceedings OOPSLA, pp. 271–283 (1998)
xSlice: A Tool for Program Debugging, http://xsuds.argreenhouse.com/html-man/coverpage.html
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 2007 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Pilskalns, O., Wallace, S., Ilas, F. (2007). Runtime Debugging Using Reverse-Engineered UML. In: Engels, G., Opdyke, B., Schmidt, D.C., Weil, F. (eds) Model Driven Engineering Languages and Systems. MODELS 2007. Lecture Notes in Computer Science, vol 4735. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-75209-7_41
Download citation
DOI: https://doi.org/10.1007/978-3-540-75209-7_41
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-75208-0
Online ISBN: 978-3-540-75209-7
eBook Packages: Computer ScienceComputer Science (R0)