Brief Definition of Reverse Engineering
Reverse engineering of technology has been around for some time. When I think of the term 'reverse engineering,' I think primarily of its application in the military. For example, if a certain country possesses a superior fighter jet and it crashes behind enemy lines, the enemy will take the crashed fighter jet, dismantle it, and conduct reverse engineering in order to upgrade their own fighter jet technology. Cell phone manufacturers such as Apple and Samsung also frequently do it to one another, which is why their products often appear to have such similar features.
The same practice is done when companies want to create or revamp software specially tailored to their needs. There is a ton of software on the market that covers a wide range of needs, but may be missing important components. Another software may have those components but lack in another way. So, basically, there is no such thing as a perfect pre-made software. The best option is to take existing software (and even hardware) and conduct reverse engineering.
Say, for instance, you were to look into a Microsoft Excel formula in order to understand where it is coming up with its calculations. You would be conducting a very simple example of reverse engineering.
To figure out how a software and its components are processing 'business rules,' one must thoroughly examine it, such as where it is sourcing data and how it makes its decisions. In other words, you are studying how the software supports the business it was designed for.
Some Instances Where Reverse Engineering Is Needed
- A business wants to better understand how its software is conducting business operations or wants to be aware of the rules being put in place. This is usually the case when software is out of date or the company simply doesn't know what its software is doing but wants to.
- An organization wished to interface systems. To do this, they must first know the data in each system is correct and matches. Creating ongoing interfaces or even one-time data migrations are challenging. Take an integration that involves a company email system. For it to work correctly, you first need to ensure the opt-out preferences are right and stay that way. After the migration, it is vital to double check your work to be sure the old and new settings are the same.
- An organization's software documentation is out of date or has no documentation. Software must have up to date software documentation. Without it, you have no way of understanding how it works. This means you have to go into the system and study the code logic.
Interviewing Users Is an Important Step in Reverse Engineering
Often times organizations want to revamp their software because it doesn't work how they like. I like to call these 'pain points.' When users are asked what they expect in a software, it is usually these pain points that are brought up. Yet, this is an incomplete picture. There may be other things that should be considered as well.
When organizations are making software selections, its users should always be interviewed. Not only does this help software developers understand the needs of a specific organization, but it also helps the developer gain some sort of rapport with them. In this way, the developer can get a wider view of what is going on. With that said, it is always important for organization leaders to get ideas from those who actually do the work using said software every day - user contribution is vital to the reverse engineering process just as much as the actual programming process itself.