A Engenharia Reversa surgiu da necessidade de reconstruir sistemas antigos, que são chamados de legados. Engenharia reversa é uma atividade que trabalha com um produto pronto tentando entender como este produto funciona. A Engenharia reversa pode acontecer na TI ou fora dela também, não é uma restrição. Em alguns casos pode ser confundida com plágio, mas não é. Temos também outro conceito importante, a reengenharia, que é o desenvolvimento de algo existente, só que novo. Acontece também com sistemas legados que precisam ser reconstruídos.
Todo sistema tem o seu tempo de vida, desde a criação do projeto, as manutenções e sua morte. O ciclo de vida de um software possui as seguintes fases: Concepção, Construção, Implantação, Implementação, Maturidade, Declínio, Manutenção e Morte.
A TI evolui muito rápido e os sistemas acabam ficando defasados necessitando, em alguns, de serem substituídos. Outro ponto a observar são os aspectos legais, há muitos processos de pirataria e clonagem no mundo. As leis que regulamentam não evoluem na mesma velocidade da tecnologia, o que causa processos intermináveis no mundo a fora.
Outro ponto a observar é que a engenharia reversa pode também gerar problemas de legalidade, as cópias podem ser entendidas como quebra dos direitos autorais. Em países como o Japão a Lei Japonesa de Concorrência Desleal de 1993 proíbe a imitação servil, mesmo no caso de produtos não patenteados, nem protegidos por direitos autorais.