FAQ about Software Reverse Engineering

This article from Chilling Effets Clearinghouse answers the following frequently asked questions about reverse engineering of software:

Q: What is reverse engineering?
Q: How does reverse engineering differ from other types of engineering?
Q: What stages are involved in the reverse engineering process?
Q: What is disassembly or decompilation of a computer software program?
Q: What is the difference between source code and object code?
Q: What is interoperability?
Q: What are the different uses of reverse engineering?
Q: Is reverse engineering legal?
Q: What 'copying' of computer programs is permitted under copyright law?
Q: Is the making of an intermediate copy in the reverse engineering process copyright infringement?
Q: What elements of a computer program are copyrightable?
Q: How does a court determine the difference between the ideas and expressions in a computer program?
Q: Are the functional elements of a software program protected by copyright?
Q: Is reverse engineering affected by patent law?
Q: Does trade secret protection of information contained within a product restrict reverse engineering?
Q: Should a reverse engineer worry about the original product manufacturer's trademarks?
Q: What kind of proof is necessary to show the copying of a computer program?
Q: What is UCITA?
Q: What is the difference between a license and a sale of a product?
Q: What are shrink-wrap, click-wrap, and browse-wrap licenses?
Q: Are licensing provisions prohibiting reverse engineering enforceable?
Q: Is the reverse engineering of a technological protection measure illegal under the DMCA?
Q: What are the limitations of the interoperability criteria for the DMCA's reverse engineering