Reverse engineering can extract design information from source code The abstraction level of a reverse engineering process refers to the sophistication of the design information that can be extracted from source code Ideally, the abstraction level should be as high as possible The reverse engineering process should be capable of Deriving procedural design representations (a low-level abstraction) Program and data structure information (a somewhat higher level of abstraction) Object models, data flow models (a relatively high level of abstraction) Entity relationship models (a high level of abstraction). As the abstraction level increases, information will allow easier understanding of the program Interactivity refers to the degree to which the human is “integrated” with automated tools to create an effective reverse engineering process In most cases, as the abstraction level increases, interactivity must increase The directionality of the reverse engineering process is one-way, all information extracted from the source code is provided to the software engineer