The process of extracting software system information (including documentation) from source code [IEEE Std 1219-1998]
Reverse engineering is the process of analyzing a subject system to: identify the system's components and their interrelationships and; create representations of the system in another form or at a higher level of abstraction. Reverse engineering generally involves extracting design artifacts and building or synthesizing abstractions that are less implementation-dependent. Reverse engineering in and of itself does not involve changing the subject system or creating a new system based on the reverse-engineered subject system. It is a process of examination, not a process of change or replication.