Abstract-In this paper, we explain how inheritance and dynamic binding make object-oriented programs difficult to maintain, and we give a concrete example of the problems that arise. We show that the difficulty lies in the fact that conventional tools are poorly suited for work with object-oriented languages, and we argue that semantics-based tools are essential 'for effective maintenance of object-oriented programs.We then describe a system we have developed for working with C++ programs. This system comprises a relational database system for information about programs and an interactive database interface integrated with a te&t editor. We describe our system architecture, detail the database relations, provide informal evidence on the system's effectiveness, and compare it to other research with similar goals.Index Terms-C++, object-oriented languages and environments, programming environments, semantic analysis of code, software maintenance, software representation in relational databases.