Improving Program Comprehension Through Dynamic Code Analysis

  • Robert Francisc Vida Department of Computer Science, Faculty of Mathematics and Computer Science, Babeș-Bolyai University, Cluj-Napoca, Romania


Most of the software that is currently being developed in the industry tends to be very complex and it is safe to assume that a lot of future software projects will keep escalating in their complexity. This means that developers need to keep track of numerous aspects of their system at all time and that new additions to the team will have difficulty adjusting to projects. In this paper, we will propose a set of techniques that combine already existing dynamic code analysis concepts to resolve the aforementioned problems, which can be summarized as being program comprehension difficulties. To do this we introduce a few novel software analysis and visualization techniques that facilitate program comprehension. The approach proposed within this paper allows for easy identification of semantic information, data available at execution time, which might be difficult or even impossible to portray in an easy to understand representation using existing software visualization techniques. During this paper we will be considering traditional object oriented programming languages, however these ideas should be useful in the context of other programming paradigms as well.


[1] Hiralal Agrawal and Joseph R. Horgan. Dynamic program slicing. SIGPLAN Not., 25(6):246–256, June 1990.
[2] Usman Akhlaq and Muhammad Usman Yousaf. Impact of software comprehension in software maintenance and evolution. Master’s thesis, Blekinge Institute of Technology, 2010. Chapter 8.
[3] Thomas Ball. The concept of dynamic analysis. SIGSOFT Softw. Eng. Notes, 24(6):216–234, October 1999.
[4] Mario Barrenechea. Program analysis. ~ kena/ classes/5828/s12/presentation-materials/barrenecheamario.pdf, . [Online; accessed 5-September-2017].
[5] Emilio Coppa, Camil Demetrescu, and Irene Finocchi. Input-sensitive profiling. SIG-PLAN Not., 47(6):89–98, June 2012.
[6] Denis Gracanin, Kresimir Matkovic, and Mohamed Eltoweissy. Software visualization. Innovations in Systems and Software Engineering, A NASA Journal, 1(2):221–230, September 2005.
[7] Susan L. Graham, Peter B. Kessler, and Marshall K. Mckusick. Gprof: A call graph execution profiler. SIGPLAN Not., 17(6):120–126, June 1982.
[8] Wilhelm Kirchmayr, Michael Moser, Ludwig Nocke, Josef Pichler, and Rudolf Tober. Integration of static and dynamic code analysis for understanding legacy source code. 2016 IEEE International Conference on Software Maintenance and Evolution (ICSME), pages 543–552, 2016.
[9] Michael Prince. Does active learning work? a review of the research. Journal of Engineering Education, 93(3):223–231, 2004.
[10] Roger Sessions. The it complexity crisis: Danger and opportunity. Technical report, ObjectWatch, 2009.
[11] Priyadarshi Tripathy and Kshirasagar Naik. A Practitioner’s Approach, Software Evolution and Maintenance, chapter 8. John Wiley & Sons, Inc., New York, NY, USA, 2014.
[12] Jonas Trmper, Jrgen Dllner, and Alexandru C. Telea. Multiscale visual comparison of execution traces. In Proceedings of the 21st International Conference on Program Comprehension, pages 53–62, 2013.
[13] Visual vm. [Online; accessed 12-December-2017].
How to Cite
VIDA, Robert Francisc. Improving Program Comprehension Through Dynamic Code Analysis. Studia Universitatis Babeș-Bolyai Informatica, [S.l.], v. 62, n. 2, p. 69-82, dec. 2017. ISSN 2065-9601. Available at: <>. Date accessed: 29 nov. 2020. doi: