Integration of static and dynamic code analysis for understanding legacy source code

Authors Wilhelm Kirchmayr
Michael Moser
Ludwig Nocke
Josef Pichler
Rudolf Tober
Title Integration of static and dynamic code analysis for understanding legacy source code
Booktitle Proceedings of the International Conference on Software Maintenance and Evolution (ICSME 2016)
Type in proceedings
Publisher IEEE
ISBN 978-1-5090-3806-0
DOI 10.1109/ICSME.2016.70
Month October
Year 2016
Pages 543-552
SCCH ID# 16062

In software development we are faced with the problem to comprehend and take over source code from other developers. The key challenge is to understand the underlying specification implemented by the software system. Regaining this understanding is more difficult when the source code is the only reliable source of information, documentation is outdated or only present in fragments, and original developers are not available anymore. Unfortunately, we encounter such situations frequently for scientific and engineering software systems, developed in industry. For instance, process models in the steelmaking domain are developed and maintained over decades by single engineers. If such an engineer leaves the company, he/she literally leaves behind a legacy system for another person (or team). We propose tool support combining static and dynamic program analysis to tackle this challenge. Using static program analysis we extract the input/output behavior from program source code and present the extracted information besides the analyzed source code, providing seamless navigation between both views. Dynamic program analysis allows developers to examine input/output behavior for single program executions and thereby gain insight into standard behavior and exceptional cases. In this paper we present requirements on tool support integrating static and dynamic code analysis, briefly describe the implementation of the tool and report on its application to a C++ program source in the industry. Furthermore, we discuss challenges in the present implementation as well as the potential and limitations of using the tool in general.