A Case Study in Software Reengineering

Software reengineering results from several needs including fixing defects (corrective reengineering), modifying the software to address weaknesses or to mitigate potential malfunctions (preventive reengineering), and extending the software to accommodate changes in its external environment (adaptive reengineering). This paper describes a case study in perfective and adaptive reengineering. The rationale for the reengineering decisions, the results of the project, lessons learned and the current state of the system are described.