Improving Program Comprehension Through Dynamic Code Analysis
Abstract
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.
References
[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. https://www.cs.colorado.edu/ ~ 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. https://visualvm.github.io/ [Online; accessed 12-December-2017].

This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
When the article is accepted for publication, I, as the author and representative of the coauthors, hereby agree to transfer to Studia Universitatis Babes-Bolyai, Series Informatica, all rights, including those pertaining to electronic forms and transmissions, under existing copyright laws, except for the following, which the author specifically retain: the right to make further copies of all or part of the published article for my use in classroom teaching; the right to reuse all or part of this material in a review or in a textbook of which I am the author; the right to make copies of the published work for internal distribution within the institution that employs me.