The term reengineering in the software development describes the adaptation of an existing system, usually with the aim of eliminating present weaknesses and facilitating the implementation of new requirements. A reengineering is also often executed in connection with the porting of the system to a different platform.
In the case that during the execution of a reengineering, no specification or documentation of the software is available, the software needs to be derived from the implementation itself. This process is then called reverse engineering.
Improvement of the software quality
Often, the quality of a software decreases in the course of time due to repeatedly executed functional adaptations. This process is also called software aging. In order to guarantee the quality and maintainability of software in the long run, a reengineering is therefore often necessary.