Skip to main content
If you continue browsing this website, you agree to our policies:
  • Condizioni di utilizzo e trattamento dei dati
Continue
x
e-Learning - UNIMIB
  • Home
  • Calendar
  • My Media
  • More
Listen to this page using ReadSpeaker
You are currently using guest access
 Log in
e-Learning - UNIMIB
Home Calendar My Media
Percorso della pagina
  1. Science
  2. Master Degree
  3. Informatica [F1802Q - F1801Q]
  4. Courses
  5. A.A. 2021-2022
  6. 2nd year
  1. Evolution of Software Systems and Reverse Engineering
  2. Summary
Insegnamento Course full name
Evolution of Software Systems and Reverse Engineering
Course ID number
2122-2-F1801Q158
Course summary SYLLABUS

Course Syllabus

  • Italiano ‎(it)‎
  • English ‎(en)‎
Export

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.

Export

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

  1. 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.

Enter

Key information

Field of research
ING-INF/05
ECTS
6
Term
First semester
Activity type
Mandatory to be chosen
Course Length (Hours)
50
Language
English

Staff

    Teacher

  • FA
    Francesca Arcelli Fontana
  • IP
    Ilaria Pigazzini

Students' opinion

View previous A.Y. opinion

Bibliography

Find the books for this course in the Library

Enrolment methods

Manual enrolments
Self enrolment (Student)

You are currently using guest access (Log in)
Policies
Get the mobile app
Powered by Moodle
© 2025 Università degli Studi di Milano-Bicocca
  • Privacy policy
  • Accessibility
  • Statistics