One of the most critical issues in large-scale software development and maintenance is the rapidly growing size and complexity of software systems. As a result of this rapid growth there is a need to better understand the relation-ships between the different parts of a large software system. In this paper we present a reverse engineering framework called Columbus that is able to analyze large C++ projects, and a schema for C++ that prescribes the form of the ex-tracted data. The flexible architecture of the Columbus sys-tem with a powerful C++ analyzer and schema makes it a versatile and readily extendible toolset for reverse engineer-ing. This tool is free for scientific and educational purposes and we fervently hope that it will assist ac...