RCS—a system for version control
Software—Practice & Experience
Generating editing environments based on relations and attributes
ACM Transactions on Programming Languages and Systems (TOPLAS)
An example of dynamic binding in C++
Journal of Object-Oriented Programming
The C Information Abstraction System
IEEE Transactions on Software Engineering
Software—Practice & Experience - Unix tools
GENOA: a customizable language- and front-end independent code analyzer
ICSE '92 Proceedings of the 14th international conference on Software engineering
Developing and integrating ProDAG in the Arcadia environment
SDE 5 Proceedings of the fifth ACM SIGSOFT symposium on Software development environments
Support for Maintaining Object-Oriented Programs
IEEE Transactions on Software Engineering - Special issue on software maintenance
Automated support for legacy code understanding
Communications of the ACM
Generating testing and analysis tools with Aria
ACM Transactions on Software Engineering and Methodology (TOSEM)
An empirical study of static call graph extractors
Proceedings of the 18th international conference on Software engineering
Practical reusable UNIX software
TestTube: a system for selective regression testing
ICSE '94 Proceedings of the 16th international conference on Software engineering
The entity-relationship model—toward a unified view of data
ACM Transactions on Database Systems (TODS) - Special issue: papers from the international conference on very large data bases: September 22–24, 1975, Framingham, MA
Tools That Bind: Creating Integrated Environments
IEEE Software
A Technique for Drawing Directed Graphs
IEEE Transactions on Software Engineering
An Objective Reuse Metric: Model and Methology
Proceedings of the 5th European Software Engineering Conference
Grappa: A GRAPh PAckage in Java
GD '97 Proceedings of the 5th International Symposium on Graph Drawing
Ciao: a graphical navigator for software and document repositories
ICSM '95 Proceedings of the International Conference on Software Maintenance
Extracting library-based object-oriented applications
SIGSOFT '00/FSE-8 Proceedings of the 8th ACM SIGSOFT international symposium on Foundations of software engineering: twenty-first century applications
ACM SIGSOFT Software Engineering Notes
Practical extraction techniques for Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
An Approach for Recovering Distributed System Architectures
Automated Software Engineering
Visualizing and Analyzing Software Infrastructures
IEEE Software
Representing and Accessing Extracted Information
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
Compiler Hacking for Source Code Analysis
Software Quality Control
Hypertext support for the information needs of software maintainers
Journal of Software Maintenance and Evolution: Research and Practice
Efficient Relational Calculation for Software Analysis
IEEE Transactions on Software Engineering
Empirical Validation of Object-Oriented Metrics on Open Source Software for Fault Prediction
IEEE Transactions on Software Engineering
Relational programming with CrocoPat
Proceedings of the 28th international conference on Software engineering
GXL: a graph-based standard exchange format for reengineering
Science of Computer Programming - Software analysis, evolution and re-engineering
Sourcerer: An internet-scale software repository
SUITE '09 Proceedings of the 2009 ICSE Workshop on Search-Driven Development-Users, Infrastructure, Tools and Evaluation
Fostering synergies: how semantic web technology could influence software repositories
Proceedings of 2010 ICSE Workshop on Search-driven Development: Users, Infrastructure, Tools and Evaluation
Automated support for building behavioral models of event-driven systems
FASE'06 Proceedings of the 9th international conference on Fundamental Approaches to Software Engineering
Sourcerer: An infrastructure for large-scale collection and analysis of open-source code
Science of Computer Programming
Software trustworthiness 2.0-A semantic web enabled global source code analysis approach
Journal of Systems and Software
Hi-index | 0.00 |
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.