Structure and Interpretation of Computer Programs

Ganesh Narayan,K Gopinath,V Sridhar,K. Gopinath,Sridhar Varadarajan
DOI: https://doi.org/10.1109/tase.2008.40
2008-06-01
Abstract:Call graphs depict the static, caller-callee relation between “functions” in a program. With most source/target languages supporting functions as the primitive unit of composition, call graphs naturally form the fundamental control flow representation available to understand/develop software. They are also the substrate on which various inter-procedural analyses are performed and are integral part ofprogram comprehension/testing. Given their universality and usefulness, it is imperative to ask if call graphs exhibit any intrinsic graph theoretic features – across versions, program domains and source languages. This work is an attempt to answer these questions: we present and investigate a set of meaningful graph measures that help us understand call graphs better; we establish how these measures correlate, if any, across different languages and program domains; we also assess the overall, language independent software quality by suitably interpreting these measures.
What problem does this paper attempt to address?