This paper presents an approach to reengineering knowledge based systems. Commonly, reengineering is used to modify systems that have functioned for many years, but are no longer able to accomplish the tasks required, and therefore need to be updated. Reengineering can also be used to modify and extend the knowledge contained in these systems. This is an intricate task if the systems are large, complex and poorly documented. The rules in the knowledge base must be gathered, analyzed and understood. In this paper, we apply reengineering to the knowledge and the functionality of knowledge-based systems. The outcome of the reengineering process is presented in graphic representations using Unified
Modeling Language diagrams.