Reverse engineering, sometimes called back engineering, is a process in which software, machines, aircraft, architectural structures and other products are deconstructed to extract design information from them. Often, reverse engineering involves deconstructing individual components of larger products. The reverse engineering process enables you to determine how a part was designed so that you can recreate it. Companies often use this approach when purchasing a replacement part from an original equipment manufacturer (OEM) is not an option.
What Is Reverse Engineering?
Reverse engineering is the process of extracting the knowledge or design blueprints from anything man-made. The concept has been around since long before computers or modern technology, and probably dates back to the days of the industrial revolution.
Reverse engineering is usually conducted to obtain missing knowledge, ideas, and design philosophy when such information is unavailable. In some Foundations cases, the information is owned by someone who isn’t willing to share them. In other cases, the information has been lost or destroyed.
How does the reverse-engineering process work?
The reverse-engineering process is specific to the object on which its being performed. However, no matter the context, there are three general steps common to all reverse-engineering efforts. They include:
- Information extraction. The object being reverse-engineered is studied, information about its design is extracted and that information is examined to determine how the pieces fit together. In software reverse-engineering, this might require gathering source code and related design documents for study. It may also involve the use of tools, such as a disassembler to break apart the program into its constituent parts.
- Modeling. The collected information is abstracted into a conceptual model, with each piece of the model explaining its function in the overall structure. The purpose of this step is to take information specific to the original and abstract it into a general model that can be used to guide the design of new objects or systems. In software reverse-engineering this might take the form of a data flow diagram or a structure chart.
- Review. This involves reviewing the model and testing it in various scenarios to ensure it is a realistic abstraction of the original object or system. In software engineering this might take the form of software testing. Once it is tested, the model can be implemented to reengineer the original object.
Examples of reverse-engineering:
- There are several instances where reverse-engineering is used to disassemble software. A common example is to adapt a program written for use with one microprocessor to another. Other examples include reconstructing lost source code, studying how a program performs certain operations, improving performance and fixing bugs or correcting errors when the source code is not available.
- One example is Phoenix, a U.S. software company that created basic input/output system (BIOS) software, which was compatible with IBM’s proprietary version. To do this, Phoenix reverse-engineered the IBM version in a way that protected them from copyright charges, by recording the steps it followed and not referencing the proprietary code.
Some of the most common uses of reverse engineering:
1. Legacy Parts Replacement
One of the most common reverse engineering applications is legacy parts replacement, which involves examining and reproducing select parts of larger machines to keep them in operation.
For example, a factory might have a large engine compartment that keeps the entire conveyor system running through each day’s work shift. Every once in a while, one of the machine parts will wear out and need to be replaced. If the machine is old, certain parts might no longer be in production, either because the OEM no longer makes the part of is out of business.
While the factory could make a huge investment in a new conveyor system, the preferable option is to retain the same equipment and replace the faulty part. With reverse engineering, you can use a 3D scanner to digitally replicate the design of the defective part. From there, a new copy of the component can be created and installed into the machine.
2. Parts Service or Repair
If a legacy part or a component the OEM no longer supports needs repair or service, it’s useful to have an understanding of how the product works. This knowledge can help to complete the repair accurately and efficiently. If there aren’t any design documents available, a company may use reverse engineering to create them. You can then use this information to inform how you repair or service the part. The data you gain from reverse engineering can help you determine which components you need to replace to fix a given problem. It can also inform your repair process by helping you better understand how best to access, remove and replace a certain part.
3. Failure Analysis
Reverse engineering techniques can play a valuable role in failure analysis. If a machine fails, you may need to take it apart or examine design files to determine why. Once you have this information, you know how to fix or improve the product so that it functions properly again.
Examining a product using reverse engineering can reveal damaged parts of faulty designs. Looking at digital design files created through reverse engineering can also reveal flaws and help inform how you plan to repair a piece of equipment.
4. Parts Improvement
Reverse engineering is also used for parts improvement. You might need to alter a component after conducting a failure analysis, or a particular might just be due for an upgrade. If no replacement or alternative part is available on the market, you could have the part reverse engineered to create a copy of the original design. From there, you could modify the design for improved performance.
If a machine requires stronger joints or weld reinforcements, the faulty parts will be examined for their measurements and redesigned with increased thickness or stronger metals. Through reverse engineering, you can determine which dimensions must be maintained and which aspects you can change. If you could combine two or more parts into a single, more functional component, reverse engineering could bring that fact to light.
5. Diagnostics and Problem-Solving
Reverse engineering can also be used for diagnostics and problem-solving in a sequence of industrial processes. In a factory setting, the flow of operations can sometimes slow due to a faulty or underperforming function. When a manufacturing system consists of numerous machines and components, it can be difficult to pinpoint the source of the problem. Through reverse engineering, you can determine how everything works as one and use that knowledge to identify where things can and do go wrong.