Conclusions
Reverse engineering can help you see inside a product and find the hidden strengths and weaknesses. This lets you judge a product more deeply; and reach beyond the typical criteria of functionality, cost, vendor stability, and the attractiveness of the user interface. None of the typical criteria can directly assess the intrinsic quality of an application, but you can assess it with reverse engineering. When you consider the high cost of many software deployments and the low cost of reverse engineering (a few weeks of effort), the benefit that you can obtain with reverse engineering is truly a bargain.
Not only can reverse engineering improve a purchase decision, but it also benefits the software community as a whole. We all know that software costs too much, is of uneven quality, and takes too long to deliver. This is the motivation for software engineering—for taking a systematic and thoughtful approach to building software. Yet we see that software engineering alone is insufficient. Even with software engineering, we still have too much flawed software and the resulting software crisis.
Imagine the consequences if customers started routinely assessing database applications with reverse engineering. This would place evolutionary pressures on the vendors. The inept vendors would be exposed and properly lose business. The proficient vendors would be rewarded with greater sales and the ability of customers to justify paying a higher price. The widespread practice of reverse engineering assessment would help the entire computing profession and complement the benefits of software engineering.
I call on you to try reverse engineering database applications that are serious candidates for purchase, and help everyone improve software quality.
This article is about purchasing applications and complements the four articles on building applications ( [3], [4], [5], [6]). References [1] and [2] provide additional explanation of database reverse engineering.