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. This process involves finding out how various functions in the code are built, what they do, and how each relates to and interacts with other functions in the code. 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 allows variations of existing products that can include improvements as people learn how something works and what could be done to improve on the product.