Software Evolution and Reverse Engineering

(Full Professor)  Francesca Arcelli Fontana


Introduction to the principal problematics of reverse engineering, software evolution and program comprehension. Studies and analysis on  different topics through tools experimentations.


The student will learn all the principal techniques used to support software evolution and reverse engineering. The student will be able to use different tools useful for reverse engineering, program comprehension and software maintainability.


Lessons, exercitations, students experimentations of tools with oral presentation.


  1. Introducton to Software evolution and Reverse Engineering. Legacy systems. Software comprehension and maintainability: principal problems.
  2. Techniques and tools for  Reverse Engineering and Systems Integration. Introduction and application to model‐driven reverse engineering.
  3. Object‐oriented  patterns for  reverse engineering.
  4. Software quality metrics  and software quality  assessment. Application Portfolio Management: problems, tools, techniques and metrics.
  5. Modernization of legacy systems: Migration of  legacy systems towards SOA architecture. Unified approach for  reverse engineering of data and software.
  6. Tools and techniques for  design pattern detection in the code.  Data mining techniques for design pattern detection. Tools for software architecture reconstruction.
  7. Antipattern and code smell detection in the code, their refactoring. Impact of refactoring techniques on the code quality. Correlation analysis among code smells and metrics.
  8. Techniques of hacking, decompiling and code obfuscation. Static and  dynamic analysis for  reverse engineering.