Reverse engineering may refer to any of the following:
1. With computer science/programming, reverse engineering means "breaking down" the programming code. Reverse engineering involves discovering how various functions in the code are built, what they do, and how each relates to and interacts with other code functions. Generally, 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.