(Associate Professor) Arcelli Fontana Francesca

(Post-Doc Research Fellow) Zanoni Marco

(PhD Student) Roveda Riccardo

Introduction to the principal problematics of reverse engineering, software evolution and program comprehension. Deep study of some topics with different 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 experimentatons 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.

Other contents of the course can be found on http://elearning.unimib.it/course/view.php?id=7186