(Full Professor) Francesca Arcelli Fontana
Contents
Introduction to the principal problematics of reverse engineering, software evolution and program comprehension. Studies and analysis on different topics through tools experimentations.
Course objective
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.
Teaching methods
Lessons, exercitations, students experimentations of tools with oral presentation.
Topics
-
Introducton to Software evolution and Reverse Engineering. Legacy systems. Software comprehension and maintainability: principal problems.
-
Techniques and tools for Reverse Engineering and Systems Integration. Introduction and application to model‐driven reverse engineering.
-
Object‐oriented patterns for reverse engineering.
-
Software quality metrics and software quality assessment. Application Portfolio Management: problems, tools, techniques and metrics.
-
Modernization of legacy systems: Migration of legacy systems towards SOA architecture. Unified approach for reverse engineering of data and software.
-
Tools and techniques for design pattern detection in the code. Data mining techniques for design pattern detection. Tools for software architecture reconstruction.
-
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.
-
Techniques of hacking, decompiling and code obfuscation. Static and dynamic analysis for reverse engineering.