Extracting Facts with Columbus from C++ Code

Rudolf Ferenc, Árpád Beszédes and Tibor Gyimóthy
Fact extraction from software systems is the fundamental building block in the process of understanding the relationships among the system's elements. It is evident that in  real life situations manual fact extraction must be supported by software tools which are able to analyze the subject system and provide useful information about it in various forms. These forms are most useful if they adhere to prescribed schemas and this way promote tool interoperability. In this work we outline our solution to tool supported fact extraction, which is built upon the reverse engineering framework Columbus and is supported by schemas for the C++ language. We describe the extraction process in detail and show how the extracted facts can be used in practice by processing the schema instances. We also introduce new features of the Columbus system not published previously, which among others include compiler wrapping and source code auditing.

Keywords: Reverse engineering, fact extraction, tool interoperability, standard exchange format, schema, C, C++, Columbus, CAN, CANPP