This course explains and applies best practices to analyze and understand existing software systems; Use heuristics and tools to detect shortcomings in the design and implementation of software systems; Apply tests and re-factoring techniques to systematically remove the shortcoming and forward engineering techniques to re-built the software for fitness of purpose.


CLO: 1. Explain the concepts and technique of software reengineering.
CLO: 2. Apply reengineering techniques to maintain and modify software systems.
CLO: 3. Analyze and understand maintenance related problems associated with object-oriented software systems.
CLO: 4. Able to perform complex design reengineering and reverse engineering problems


  1. Introduction to Software Re-Engineering
  2. Software Evolution
  3. Legacy Systems
  4. RE-Engineering Techniques overview (reverse engineering, restructuring & forward propagation)
  5. Reverse Engineering & its techniques
  6. Refactoring code to analysis artifacts
  7. Refactoring code to architecture
  8. Object Oriented Re-engineering Patterns
  9. Program Comprehension
  10. Code restructuring
  11. Quality issues in re-engineering processes
  12. Tool support for Re-engineering, Challenges & Stakeholder aspiration
  13. Software maintenance and re-engineering economics
  14. Student Project demonstrations