Reengineering and refactoring
Various information technologies may exist for many years that many companies use regularly and are critical to their business processes. They may use software which has gone through many versions and upgrades, and come to a point where the software needs to be completely reworked. This may occur for many reasons: the software isn’t stable, or runs slow; it’s impossible to extend it any further, or the software has been developed using old technologies and languages and now needs to be migrated to new platforms using up-to-date technologies.
Sometimes there may not be any other choice but to reengineer or refactor a software application or system. Both processes are difficult, time consuming, and costly, but at the same time these investments can reduce support costs, increase sales and productivity of employees, as well as attract new clients.
Reengineering produces software developed from the beginning using new technologies without modifying its external functional behavior or existing functionality. Refactoring produces software that is redeveloped completely or partially on the same technology using the existing parts of source code. Both approaches entail teams consisting of highly experienced business analysts, architects, developers and testers who know all aspects of refactoring and reengineering. All processes are inextricably linked to the quality control process which ensures the appropriate quality of new software.