Business Benefits
In the past, there have been four bases for evaluating software: functionality, cost, vendor stability, and the attractiveness of the user interface. Reverse engineering adds a fifth criterion: quality. You can discern how well the database of an application has been designed and conceived.
You can assess the quality of both the database design and the conceptual model underlying the database. If a product has a flawed database, it is likely to be ruined and have messy programming. In contrast, a product with a sound database has quality that is likely to pervade other aspects of the software.
Unfortunately, many applications have flawed databases. Roughly half the databases I have studied have major errors. Some have dangling references to data that have been deleted. Others have severe conceptual misunderstandings that ripple through their structure. Therefore, you cannot assume correctness; you must check the database.
Table 1-Characteristics of Forward Engineering and Reverse Engineering. Reverse Engineering Requires a Different Mindset.
Forward Engineering |
Reverse Engineering |
Given requirements, develop an application. |
Given an application, deduce tentative requirements. |
More certain. The developer has requirements and must deliver an application that implements them. |
Less certain. An implementation can yield different requirements depending on the reverse engineer's interpretation. |
Prescriptive. Developers are told how to work. |
Adaptive. The reverse engineer must find out what the developer actually did. |
More mature. Skilled staff readily available. |
Less mature. Skilled staff sparse. |
Time-consuming (months to years of work). |
Can be performed 10 to 100 times faster than forward engineering (days to weeks of work). |
The model must be correct and complete or the application will fail. |
The model can be imperfect. Salvaging partial information is still useful. |
Aside from providing a means to assess software quality, reverse engineering has additional benefits:
Understanding. Few vendors provide models to help you understand their application. However, the database structure is often there for the asking, and you can use reverse engineering to construct your own models. Models can help you understand both the scope and content of a vendor product. You can set aside the sales claims and better judge the capabilities and limitations. You find out what is really being sold rather than just take a chance.
Negotiation. The vendors emphasize their strengths. Reverse engineering makes you aware of some of their weaknesses, so you will have a stronger hand in negotiations.
Communication. Reverse engineering can make it easier to talk with vendors. The vendors may have their own assumptions, architecture, and mindsetall of which provide a context for their explanation of an application. If you aren't familiar with their context, it can be difficult to understand what they mean. With reverse engineering, you get inside the vendor's mind and can converse with their terminology.
Data conversion. There is often legacy data to migrate to the vendor product. You must understand both the source and target before converting data.
The bottom line is that reverse engineering can deepen your understanding of vendor products and help you make better decisions. The payoff is striking when you consider that a software purchase and deployment can cost millions of dollars and that a reverse engineering assessment can be performed in as little as a few weeks.