Skip to main content
If you continue browsing this website, you agree to our policies:
  • Condizioni di utilizzo e trattamento dei dati
Continue
x
If you continue browsing this website, you agree to our policies:
  • Condizioni di utilizzo e trattamento dei dati
Continue
x
e-Learning - UNIMIB
  • Home
  • More
Listen to this page using ReadSpeaker
You are currently using guest access
 Log in
e-Learning - UNIMIB
Home
Percorso della pagina
  1. Science
  2. Master Degree
  3. Informatica [F1802Q - F1801Q]
  4. Courses
  5. A.A. 2022-2023
  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
2223-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.
Analisi della qualità del software
Sperimentazioni e confronto di diversi tool di supporto alla reverse engineering e valutazone del debito tecnico.

Programma esteso

1 Introduzione alla Software evolution, Reverse Engineering, Sistemi Legacy. Comprensione e manutenzione del software.

2 Tecniche e tools per la Reverse Engineering.

3 Pbject-oriented patterns per la reverse engineering e reeengineering.

4 Metriche di Qualità del Software , software quality assessment. Application Portfolio Management: problemi, tools, tecniche e metriche.

  1. Modernizazione dei sistemi legacy: Migrazione dei sistemi legacy verso micro services.

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

  3. Riconoscimento di antipattern, code smell e architectural smells nel codice, il loro refactoring. Impatto delle tecniche di refactoring sulla qualità del codice.

  4. Esempi di diverse analisi empiriche: Analisi di correlazione fra diverse metriche di qualità del codice e violazioni del codice e del design; Analisi della prediction di problemi del software attraverso tecniche di machine Learning e data mining.

  5. Introduzione a tecniche di hacking, decompiling and code obfuscation per la protezione del codice. 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

Le lezioni si dovrebbero svolgere in presenza.

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 se richiesto in italiano, ma se uno studente straniero è presente, il corso verrà 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.

Testi:

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

Uno o due task assegnati durante il corso che prevedono una presentazione in aula. Valutazione nel range di 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 sui dati raccolti dai tool utilizzati per il progetto. 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. Introduction and application to model-driven reverse engineering.

3 Object-oriented patterns for reverse engineering and reengineering.

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 and microservice architecture.

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.

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

  2. Introduction to techniques of hacking, decompiling and code obfuscation to protect code. Static and dynamic analysis for reverse engineering.

10.. Tools and techniques for Managing Technical Debt.

Prerequisites

Knowledge of Java Language.

Knowledge of design patterns.

Teaching form

The lessons will be given in presence.

Lessons, exercitations, students experimentatons of tools with an 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
Degree Course Type
2-year Master Degreee
Language
English

Staff

    Teacher

  • FA
    Francesca Arcelli Fontana
  • DB
    Daniela Briola

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