ers refers just to the program that abstracts data from a C++ program. CIA++ written in capital letters refers to the system made of that abstractor and all of the tools that use the database it generates. Separation of Information Extraction and Presentation: The process of extracting information from a program and the process of presenting that information should be separate. This eliminates the need for each C++ analysis tool to duplicate the parsing process and allows C++ tools to share the information and present it in different ways. A similar doctrine was developed in the Interlap project. Unfortunately, many C and C++ tools today still violate this basic principle. A Well-Conceived Conceptual Model:A conceptual model based on the entity-relationship model was designed to describe the entities, attributes, and relationships in C++ programs. The model serves as an accurate high level specification for the contents of the program database. Relational Database: To support reuse, C++ stores abstracted information in the form of a relational database. This makes it possible for that information to be accessed by a wide variety of existing database query systems. Incremental Database Construction: C++ builds and maintains a program database for large systems efficiently because it allows incremental updates of a database. When a set of C++ source les is updated, only that portion has to be database. The C program database generated by C has had many new C tools developed on top of it. These tools were developed in a matter of days by using the common database, but different approaches. Some tools were written as awk or ksh scripts that call database query commands. Others are C programs that call a query library. Other applications have been written that use INGRES or Data Share queries to extract information from the C program database. With minor changes to adjust to the different format of the C++
6
abstracted to update the
program database, these tools can be applied to C++ programs. Many new tools can be
developed in a short period of time by sharing the we