A subset of reverse engineering in which domain knowledge, external information,
and deduction or fuzzy reasoning are added to the observations of the subject
system to identify meaningful higher-level abstractions beyond those obtained
directly by examining the system itself. [Chikofsky&Cross 1990]
Design recovery recreates design abstractions from a combination of code, existing
design documentation (if available), personal experience, and general knowledge
about problem and application domains. Design recovery must reproduce all of the
information required for a person to fully understand what a program does, how it
does it, why it does it, and so forth. Thus, it deals with a far wider range of
information than found in conventional software engineering representations or
code. [Biggerstaff 1989]