Reverse engineering may refer to any of the following:
1. When referring to computer science/programming, reverse engineering means to "break down" the programming code. Reverse engineering involves finding out how various functions in the code are built, what they do, and how each relates to and interacts with other code functions. Generally speaking, the purpose is to fix errors in the software engineer's code, or create a program like the one being deconstructed.
2. Manufactured products (both by machine and by hand) can also be reverse-engineered. The products are taken apart and dissected to learn and understand how they work mechanically, why they work, and what part they play in the functionality of the whole product. Reverse engineering facilitates variants of existing products. Improvements often come as people learn how something works and what could be done to make it better.