A C++ data model supporting reachability analysis and dead code detection
- 1 September 1998
- journal article
- Published by Institute of Electrical and Electronics Engineers (IEEE) in IEEE Transactions on Software Engineering
- Vol. 24 (9) , 682-694
- https://doi.org/10.1109/32.713323
Abstract
A software repository provides a central information source for understanding and reengineering code in a software project. Complex reverse engineering tools can be built by analyzing information stored in the repository without reparsing the original source code. The most critical design aspect of a repository is its data model, which directly affects how effectively the repository supports various analysis tasks. This paper focuses on the design rationales behind a data model for a C++ software repository that supports reachability analysis and dead code detection at the declaration level. These two tasks are frequently needed in large software projects to help remove excess software baggage, select regression tests and support software reuse studies. The language complexity introduced by class inheritance, friendship, and template instantiation in C++ requires a carefully designed model to catch all necessary dependencies for correct reachability analysis. We examine the major design decisions and their consequences in our model and illustrate how future software repositories can be evaluated for completeness at a selected abstraction level. Examples are given to illustrate how our model also supports variants of reachability analysis: impact analysis, class visibility analysis, and dead code detection. Finally, we discuss the implementation and experience of our analysis tools on a few C++ software projects.Keywords
This publication has 19 references indexed in Scilit:
- An empirical study of static call graph extractorsPublished by Institute of Electrical and Electronics Engineers (IEEE) ,2002
- Tools that bind: creating integrated environmentsIEEE Software, 1995
- Automated support for legacy code understandingCommunications of the ACM, 1994
- Investigating reverse engineering technologies for the CAS program understanding projectIBM Systems Journal, 1994
- A reverse‐engineering approach to subsystem structure identificationJournal of Software Maintenance: Research and Practice, 1993
- Developing and integrating ProDAG in the Arcadia environmentPublished by Association for Computing Machinery (ACM) ,1992
- Support for maintaining object-oriented programsIEEE Transactions on Software Engineering, 1992
- PCTE interfaces: supporting tools in software-engineering environmentsIEEE Software, 1989
- Generating editing environments based on relations and attributesACM Transactions on Programming Languages and Systems, 1986
- Rcs — a system for version controlSoftware: Practice and Experience, 1985