析目标系统的过程，其目的是识别出系统的各个组件以及它们之间的关系，并以其它的形式或在较高的抽象层次上，重建系统的表征（Representations）。 软件逆向工程也可被视作「开发周期的逆行」。在此定义下，对一项软件程序进行逆向工程，类似于逆行传统瀑布模型中的开发步骤，即把实现阶段的输出（即软件程序）还原回在设计阶段所做的构思。软件逆向工程仅仅是一种检测或分析的过程，它并不会更改目标系统（否则就成了软件再工程）。软件防篡改技术被用于遏制对专有软件进行逆向工程及再工程。大部分人都熟悉这个词的第二种用法