Structure and Interpretation of Computer Programs
/ Authors
/ 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 of program 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.
Journal: 2008 2nd IFIP/IEEE International Symposium on Theoretical Aspects of Software Engineering
DOI: 10.1109/TASE.2008.40