ABSTRACT

Executive summary: Software reengineering deals with rebuilding and/or restructuring legacy systems to make them more maintainable and more extensible at a lower cost in time and effort. When documentation of a legacy system does not exist, the reengineering effort may be preceded by a reverse engineering activity. Alternately, the first step in reengineering may be reviewing and updating existing documentation. Reengineering may also involve restructuring of the system architecture and design, and potentially moving to a more modern programming, language, operating system, and so on. Reengineering may also involve changing the data structures associated with the system. Typically, reengineering does not entail changes to the functionality of the system. The term “reengineering” is often applied to the movement known as “business process reengineering” popularized by Hammer, Champy, and others.