• DocumentCode
    1425657
  • Title

    A C++ data model supporting reachability analysis and dead code detection

  • Author

    Chen, Yih-Farn ; Gansner, Emden R. ; Koutsofios, Eleftherios

  • Author_Institution
    AT&T Labs. Res., Florham Park, NJ, USA
  • Volume
    24
  • Issue
    9
  • fYear
    1998
  • fDate
    9/1/1998 12:00:00 AM
  • Firstpage
    682
  • Lastpage
    694
  • 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
    C language; data structures; inheritance; object-oriented languages; object-oriented programming; reachability analysis; reverse engineering; software libraries; software reusability; systems re-engineering; C++; class inheritance; class visibility analysis; data model; dead code detection; friendship; impact analysis; language complexity; large software projects; program understanding; reachability analysis; regression tests; reverse engineering tools; software project; software repository; software reuse; system reengineering; template instantiation; Buildings; Data models; Information analysis; Reachability analysis; Relational databases; Reverse engineering; Software maintenance; Software testing; Software tools; Tree graphs;
  • fLanguage
    English
  • Journal_Title
    Software Engineering, IEEE Transactions on
  • Publisher
    ieee
  • ISSN
    0098-5589
  • Type

    jour

  • DOI
    10.1109/32.713323
  • Filename
    713323