Ethics
When I reverse engineer vendor software, my purpose is not to uncover the vendor's secrets so that my client can re-create the software. First, that would be unethical. Second, reimplementation is usually uneconomical, and I would view it as a last resort. Rather, my purpose is to assess the software's merit, to get past the hidden assumptions and the sales claims. Reverse engineering deepens my understanding of a product and lets me communicate with a vendor.
Unfortunately, many persons still regard reverse engineering as sinister. They completely misunderstand the intent, perhaps because hardware reverse engineering is often done to re-create the product. However, this is not the case in database reverse engineering, and there is nothing at all wrong with a customer discovering what is truly for sale.
My clients openly ask vendors for their database structure and tell them why they want it. If the vendor refuses, my clients tell them they will be penalized in the evaluation. Most vendors acquiesce and settle for a nondisclosure agreement. I urge my clients to agree to reasonable nondisclosure terms.
Some vendors find reverse engineering threatening, but it is threatening only to the inept vendors. The superb vendors should welcome the technology; it makes their excellence visible for all to see in a manner that is much more credible than mere words or a sales ad. This kind of credibility cannot be bought.
Reverse engineering has further benefits for skilled vendors. When customers are assured of quality, they can justify paying a premium price, and they become more interested in collateral products. A customer will pay more for software that has fewer maintenance problems and is simpler to deploy.
Reverse engineering causes a shift in business practices, and fosters a culture of openness. The vendors put forth their products for customers to judge. Reverse engineering exposes the strengths and weaknesses of products and causes an evolutionary bias toward excellence. Reverse engineering induces vendors to upgrade their software engineering practices so that they can survive the scrutiny.