Reverse Engineering


Within the overall process of software evolution or software maintenance falls the specific task of understanding the existing system. This is non-trivial; estimates are that up to 50% of the software maintenance task consists of program comprehension. This is due to many factors, not the least of which is the `cardinal, fundamental law of programming':

It's harder to read code than to write it.

Reverse engineering, or program comprehension, is the focus of a number of professional organizations and academic research groups. The following internet resources provide a range of related information, ranging from introductory tutorials to publication of the latest research.

On-line introductions to the terminology and techniques of understanding existing software include:

There's a large body of published materials covering the research and practice of reverse engineering. A list of these writings is available at:

Academic and Government Sites
There are a number of academic and government groups which are focused on legacy code and reverse engineering:


For those willing to put up with the rigors of travels to locations such as Florida and Hawaii, for the sake of a suntan enlarging and sharing their knowledge, there are number of related conferences:

Related Subjects
Reverse engineering of software has multiple meanings. The focus of this page, and Imagix Corporation, is on reverse engineering as a way to improve understanding of source code; a taxonomy is available to place this within the context of forward engineering and reengineering. For the alternative meaning of reverse engineering, involving executable binaries, a starting point for a web search can be found at the Decompilation Wiki.

Reverse engineering and source
code analysis - related sites