Course Syllabus
Obiettivi
Lo
studente acquisirà competenze relative alle problematiche principali dell'evoluzione
del software e della reverse engineering, sarà in grado di effettuare analisi e
utilizzare diversi strumenti di reverse engineering e di supporto alla comprensione,
evoluzione e manutenzione del software.
Contenuti sintetici
Introduzione alle principali problematiche di reverse engineering, software evolution e program comprehension. Approfondimenti di alcuni argomenti e sperimentazioni di diversi tool.
Programma esteso
1 Introduzione alla Software evolution, Reverse Engineering, Sistemi Legacy. Comprensione e manutenzione del software.
2 Tecniche e tools per la Reverse Engineering e l'Integrazione di sistemi. Introduzione e applicazione della model-driven reverse engineering.
3 Pattern object-oriented per la reverse engineering;
4 Metriche di Qualità del Software , software quality assessment. Application Portfolio Management: problemi, tools, tecniche e metriche.
5. Modernizazione dei sistemi legacy: Migrazione dei sistemi legacy verso micro services.
Approcio unificato alla reverse engineering dei dati e del software.
6. Tool e tecniche per la design pattern detection nel codice. Tecniche di data mining per la design pattern detection. Tools per la software architecture reconstruction.
7. Riconoscimento di antipattern, code smell e architectural smells nel codice, il loro refactoring. Impatto delle tecniche di refactoring sulla qualità del codice.
8. Esempi di diverse analisi empiriche: Analisi di correlazione fra diverse metriche di qualità del codice e violazioni del codice e design; Analisi della prediction di problemi del software attraverso tecniche di machine Learning e data mining..
9. Tecniche di hacking, decompiling and code obfuscation. Analisi statica e dinamica per la reverse engineering .
10. Tecniche e strumenti per l'identificazione e gestione del Technical Debt.
Prerequisiti
Conoscenza approfondita del linguaggio Java,
Conoscenza dei design patterns.
Modalità didattica
Nel periodo di emergenza Covid-19 le lezioni si svolgeranno molto probabilmente in modalità mista: parziale presenza e lezioni videoregistrate asincrone/sincrone.
Lezioni frontali ed esercitazioni, approfondimenti di alcuni contenuti e sperimentazione di alcuni strumenti in aula attraverso presentazione da parte degli studenti.
Il corso viene erogato in italiano, ma se uno studente straniero è presente, il corso può essere erogato in inglese.
Materiale didattico
Slides del docente, articoli, survey e tutorial forniti dal docente, tesi di laurea e di dottorato svolte presso il laboratorio di ricerca Essere e presso altre Università straniere con cui il laboratorio collabora.
Testo
Ingegneria del Software, Sommerville, solo 3 capitoli.
Object Oriented Reeengineering patters, Oscar Nierstrasz -Disponibile online
La maggior parte del materiale su cui dovrete studiare sarà disponibile on line.
Periodo di erogazione dell'insegnamento
I semestre
Modalità di verifica del profitto e valutazione
Due task assegnati durante il corso che prevedono una presentazione in aula. Valutazione 0-3 punti.
Un progetto finale singolo o al massimo in due studenti relativo alla sperimentazione di alcuni tool di reverse engineering e/o analisi empiriche. Valutazione 0-22 punti
Discussione orale sul progetto finale. Valutazione 0-8 punti.
Orario di ricevimento
Per appuntamento.
Aims
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.
Contents
Introduction to the principal problematics of reverse engineering, software evolution and program comprehension. Deep study of some topics with different tools experimentations.
Detailed program
1 Introduction 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, code and architectural smell detection, their refactoring. Impact of refactoring techniques on the code quality.
8. Empirical analysis of different kinds: Correlation analysis among code smells and metrics, Prediction analysis of code anomalies or different other problems through machine learning techniques.
8 Techniques of hacking, decompiling and code obfuscation. Static and dynamic analysis for reverse engineering.
9. Tools and techniques for Managing Technical Debt.
Prerequisites
Knowledge of Java Language.
Knowledge
of design patterns.
Teaching form
- During the emergency of COVID-19, propbably the lessons will be given in a blended learning way (some lessons in distance learning and some lessons at the Department building).
Lessons, exercitations, students experimentatons of tools with oral presentation.
The course can be offered in Italian or in English language, according to the students attending the course.
Textbook and teaching resource
Slides, papers, online books, survey and tutorial, Master and PhD thesis
Ingegneria del Software, Sommerville, only 3 chapters
Object Oriented Reeengineering patters, Oscar Nierstrasz -available online
Most of the material to prepare the exam will be available on line.
Semester
I semester
Assessment method
Final exam with a project or experimentation of some tools of reverse engineering.
Project done alone or in maximum two students. Evaluation 0-22 points.
Oral discussion on the project. Evaluation 0-8 points.
One or two tasks assigned during the course with a presentation. Evaluation 0-3 points.
Office hours
On appointment.