Source code audit and Reversing
Source code analysis becomes important when a company's proprietary software has to be checked for weak spots before release.
Reverse Engineering, on the other hand, is the ability to disassemble completed software and hardware without determining the source code the products work with.
Reverse Engineering is often used to find out how malware actually knows where data flows to, or to find out what went wrong in a newer version of a closed software product has been corrected.