Anno di corso: 1

Anno di corso: 2

Crediti: 6
Crediti: 6
Crediti: 6
Crediti: 6
Crediti: 6
Crediti: 6
Crediti: 12
Tipo: A scelta dello studente
Crediti: 3
Tipo: Lingua/Prova Finale
Crediti: 33
Tipo: Lingua/Prova Finale

EVOLUZIONE DEI SISTEMI SOFTWARE E REVERSE ENGINEERING

Scheda dell'insegnamento

Anno accademico di regolamento: 
2015/2016
Anno di corso: 
2
Anno accademico di erogazione: 
2016/2017
Tipo di attività: 
Obbligatorio a scelta
Crediti: 
6
Ciclo: 
Primo Semestre
Ore di attivita' didattica: 
50
Prerequisiti: 

Conoscenza approfondita del linguaggio Java.

Moduli

Metodi di valutazione

Tipo di esame: 
Scritto e Orale Separati
Modalita' di verifica dell'apprendimento: 

Slides del docente, articoli, survey e tutorial forniti dal docente, tesi di laurea e di dottorato svolte presso il laboratorio di ricerca ESSeRE.

Valutazione: 
Voto Finale

Obiettivi formativi

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 e manutenzione del software.

Contenuti

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 systems verso architetture SOA. Approccio 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 e code smell nel codice, il loro refactoring. Impatto delle tecniche di refactoring sulla qualità del codice.. Analisi di correlazione fra code smell e metriche.

8 Tecniche di hacking, decompiling and code obfuscation. Analisi statica e dinamica per la reverse engineering .

Bibliografia consigliata

Slides del docente, articoli, survey e tutorial forniti dal docente, tesi di laurea e di dottorato svolte presso il laboratorio di ricerca ESSeRE.

Metodi didattici

Lezioni frontali esercitazioni, approfondimenti di alcuni contenuti o sperimentazione di alcuni strumenti e presentazione da parte degli studenti.