Debugging into Examples

Leveraging Tests for Program Comprehension
  • Bastian Steinert
  • Michael Perscheid
  • Martin Beck
  • Jens Lincke
  • Robert Hirschfeld
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 5826)


Enhancing and maintaining a complex software system requires detailed understanding of the underlying source code. Gaining this understanding by reading source code is difficult. Since software systems are inherently dynamic, it is complex and time consuming to imagine, for example, the effects of a method’s source code at run-time. The inspection of software systems during execution, as encouraged by debugging tools, contributes to source code comprehension. Leveraged by test cases as entry points, we want to make it easy for developers to experience selected execution paths in their code by debugging into examples. We show how links between test cases and application code can be established by means of dynamic analysis while executing regular tests.


Program comprehension dynamic analysis test coverage 


  1. 1.
    Arisholm, E.: Dynamic Coupling Measures for Object-Oriented Software. In: IEEE International Symposium on Software Metrics (2002)Google Scholar
  2. 2.
    Ball, T.: The Concept of Dynamic Analysis. In: ESEC/FSE-7: Proceedings of the 7th European Software Engineering Conference held jointly with the 7th ACM SIGSOFT International Symposium on Foundations of Software Engineering, London, UK, pp. 216–234. Springer, Heidelberg (1999)Google Scholar
  3. 3.
    Denker, M., Greevy, O., Lanza, M.: Higher Abstractions for Dynamic Analysis. In: 2nd International Workshop on Program Comprehension through DynamicAnalysis (PCODA 2006), pp. 32–38 (2006)Google Scholar
  4. 4.
    Dunsmore, A., Roper, M., Wood, M.: Object-oriented Inspection in the Face of Delocalisation. In: ICSE 2000: Proceedings of the 22nd International Conference on Software Engineering, pp. 467–476. ACM, New York (2000)Google Scholar
  5. 5.
    Gaelli, M.: Modeling Examples to Test and Understand Software. PhD thesis, University of Berne (2006)Google Scholar
  6. 6.
    Greevy, O.: Enriching Reverse Engineering with Feature Analysis. PhD thesis, University of Berne (May 2007)Google Scholar
  7. 7.
    Gschwind, T., Oberleitner, J.: Improving Dynamic Data Analysis with Aspect-Oriented Programming. In: CSMR 2003: Proceedings of the Seventh European Conference on Software Maintenance and Reengineering, Washington, DC, USA, pp. 259–268. IEEE Computer Society, Los Alamitos (2003)CrossRefGoogle Scholar
  8. 8.
    Hirschfeld, R.: AspectS – Aspect-Oriented Programming with Squeak. In: Aksit, M., Mezini, M., Unland, R. (eds.) NODe 2002. LNCS, vol. 2591, pp. 216–232. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  9. 9.
    Ingalls, D., Kaehler, T., Maloney, J., Wallace, S., Kay, A.: Back to the Future: The Story of Squeak, a Practical Smalltalk Written in Itself. In: OOPSLA 1997: Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, pp. 318–326. ACM, New York (1997)Google Scholar
  10. 10.
    Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C.V., Loingtier, J.-M., Irwin, J.: Aspect-oriented Programming. In: Aksit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 220–242. Springer, Heidelberg (1997)CrossRefGoogle Scholar
  11. 11.
    Ko, A.J., Myers, B.A.: Debugging Reinvented: Asking and Answering Why and Why Not Questions about Program Behavior. In: ICSE 2008: Proceedings of the 30th International Conference on Software Engineering, pp. 301–310. ACM Press, New York (2008)Google Scholar
  12. 12.
    Pauw, W.D., Lorenz, D., Vlissides, J., Wegman, M.: Execution Patterns in Object-Oriented Visualization. In: COOTS 1998: Proceedings of the 4th Conference on Object-Oriented Technologies and Systems, Berkeley, CA, USA, pp. 16–16. USENIX Association (1998)Google Scholar
  13. 13.
    Richner, T., Ducasse, S.: Recovering High-Level Views of Object-Oriented Applications from Static and Dynamic Information. In: ICSM 1999: Proceedings of the IEEE International Conference on Software Maintenance, Washington, DC, USA, pp. 13–22. IEEE Computer Society, Los Alamitos (1999)Google Scholar
  14. 14.
    Röthlisberger, D., Greevy, O., Nierstrasz, O.: Feature Driven Browsing. In: ICDL 2007: Proceedings of the 2007 International Conference on Dynamic Languages, Lugano, Switzerland, pp. 79–100. ACM Press, New York (2007)Google Scholar
  15. 15.
    Röthlisberger, D., Greevy, O., Nierstrasz, O.: Exploiting Runtime Information in the IDE. In: ICPC 2008: Proceedings of the 16th IEEE International Conference on Program Comprehension, Washington, DC, USA, pp. 63–72. IEEE Computer Society, Los Alamitos (2008)CrossRefGoogle Scholar
  16. 16.
    Wilde, N., Huitt, R.: Maintenance Support for Object-oriented Programs. IEEE Transactions on Software Engineering 18(12), 1038–1044 (1992)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2009

Authors and Affiliations

  • Bastian Steinert
    • 1
  • Michael Perscheid
    • 1
  • Martin Beck
    • 1
  • Jens Lincke
    • 1
  • Robert Hirschfeld
    • 1
  1. 1.Software Architecture Group, Hasso Plattner InstituteUniversity of PotsdamGermany

Personalised recommendations