Automating the tedious and error-prone portions of analysis and design. Automating testing and version control. Software reengineering is a methodology that addresses the problem of aging or legacy software. It seeks to upgrade such software that works by extracting the logic of the system, thereby creating a new system without starting from scratch. Revision of design and program specifications.
Reverse engineering extracts the business specifications from older software.
Reverse engineering tools analyze the existing program code, file, and database descriptions to produce a structured specification of the system. This specification can be combined with new specifications to provide the basis of the new system.