Reengineering oprogramowania został opisany przez Chikofskiego i Crossa w 1990 w ich pracy[1], jako badania i zmiana systemu do rekonstytuowania (odtworzenia/przywrócenia) go w nowej formie. Mniej formalnie, reengineering jest modyfikacją systemu oprogramowania, który ma miejsce po jego inżynierii odwrotnej, ogólnie aby dodawać nowe funkcje lub wprowadzić korekty błędów.
Cały proces jest często błędnie zwany inżynierią odwrotną; jakkolwiek, dokładniej jest powiedzieć, że inżynieria odwrotna jest wstępnym badaniem systemu, a reengineering jest późniejszą zmianą (opartą na wstępnym badaniu, czyli na inżynierii wstecznej).