Introduction to software maintenance, defect management, corrective, adaptive and perfective maintenance. Evolution of legacy software systems. Program comprehension techniques, reverse engineering, restructuring, refactoring of software systems. Software re-engineering, data reverse engineering. Software reuse. Impact analysis, regression testing.
This course aims to provide students with advanced understanding of concepts and techniques of software maintainability, and applied use of configuration management tools and reverse engineering through a team project work and research investigation.