Visual exploration of function call graphs for feature location in complex software systems
SoftVis '06 Proceedings of the 2006 ACM symposium on Software visualization
Projecting code changes onto execution traces to support localization of recently introduced bugs
Proceedings of the 2009 ACM symposium on Applied Computing
Software Cartography: thematic software visualization with consistent layout
Journal of Software Maintenance and Evolution: Research and Practice - Working Conference on Reverse Engineering (WCRE 2008)
Hi-index | 0.00 |
In this paper we present a prototype tool for locating and understanding features in unfamiliar source code of complex C/C++ software systems. The key concepts of the analysis tool are (1) combining dynamic function call graphs with information on the functions' containment within hierarchically structured modules and (2) providing means of gathering program state information on user-defined locations within the call graph. Starting from a typically huge dynamic call graph logged during feature execution, developers narrow their search for functions implementing the feature's core functionality by successively pruning the graph from feature-irrelevant functions. The assessment whether a function contributes to a feature is performed on various levels of abstraction, namely on (1) module containment, (2) on the function's call relations, and (3) on the way it modifies data. Having sorted out feature-irrelevant functions this way, users are able to analyze the remaining, probably highly feature-relevant functions with other heavy-weight analysis techniques, such as debugging techniques, to get a deep understanding of the feature implementation.