Reverse Engineering

Software
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.

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

Bibliographies
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:

Organizations

Conferences
For those willing to put up with the rigors of travels to locations such as Rio and the Riviera, for the sake of great beaches 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