The paper describes a knowledge-based framework for the development of program reverse and forward engineering. The substratum for this framework is an object-oriented environment for knowledge-based applications (XRL) written in Common Lisp. The approach starts from the idea that forward and reverse engineering are evolutive, knowledge intensive activities. Regarding the development of knowledge-based systems, knowledge acquisition is considered as a modelling activity that implies not only the evolution of the knowledge base of the system but also the evolution of the mental model that the human experts actually use. Therefore, an integrated collection of tools and techniques that support the construction, evolution, and usage of knowledge-based models of programming concepts and constructs, is provided. An evolutive taxonomy of re-usable program components related to programming concepts is also viewed as essential to the approach. One of the main applications written in the knowledge-based framework is the development of an intelligent reverse engineering system of FORTRAN programs. After obtaining a high level description of an analysed program, this description may be refined to C or pseudocode.