Nuova ricerca

MARCO PICONE

Ricercatore t.d. art. 24 c. 3 lett. B
Dipartimento di Scienze e Metodi dell'Ingegneria
Docente a contratto
Dipartimento di Ingegneria "Enzo Ferrari"

Insegnamento: Distributed and Internet of Things Software Architectures

Digital Automation Engineering (Offerta formativa 2024)

Obiettivi formativi

In termini di conoscenza e comprensione, gli obiettivi del corso sono i seguenti:

 Fornire allo studente una conoscenza di base dei principali principi di funzionamento relativi alle architetture software distribuite con un focus specifico sui pattern di comunicazione, principi di design e pattern di sviluppo
 Analizzare ed applicare i pattern studiati ai sistemi Cyber-Physical e di Internet of Things, con particolare attenzione al tema dell’interoperabilità, alla progettazione e alla sviluppo delle architetture end-to-end;
 Fornire allo studente una conoscenza applicata basata sull'utilizzo delle principali tecniche di sviluppo software, piattaforme, architetture a microservizi attraverso l’utilizzo di scenari reali, un testbed per la sperimentazione ed il deployment, dispositivi IoT in laboratorio e service edge/cloud
 Fornire una visione sui trend tecnologici e di ricerca che riguardano il mondo dei sistemi distribuiti intelligenti e dell’Internet of Things

Prerequisiti

Le uniche conoscenze richieste sono delle basi di programmazione in uno dei linguaggi principali (tra Python, Java, C/C++)

Programma del corso

Il corso è suddiviso in una parte di didattica frontale ed una parte di laboratori ed esercitazioni pratiche. La prima parte è dedicata all'introduzione dei sistemi distribuiti e del relativo sviluppo software con un focus specifico sui pattern di comunicazione e la loro integrazione all'Internet of Things (IoT). Le lezioni forniranno un’analisi dei principali protocolli di comunicazione da utilizzare in funzione del pattern di comunicazione e una descrizione dei principali approcci architetturali, tematiche legate al Web of Things e all’interoperabilità e argomenti relativi al rapporto tra IoT, Cloud ed Edge Computing. La seconda parte è invece dedicata al laboratorio e alla sperimentazione diretta delle tecnologie IoT ed architetture presentate. Gli studenti verranno introdotti ai principali protocolli, linguaggi, piattaforme e librerie di programmazione e ai tool ed approcci di sviluppo di livello applicativo allo stato dell’arte.

La parte di laboratorio termina con l'assegnazione di un progetto (singolo o di gruppo), che consiste nel design e nello sviluppo di un'applicazione IoT completa (sfruttando anche i nodi e i device del laboratorio) e nella successiva stesura di una relazione di progetto. Il voto finale è un valore medio (pesato) dei voti di una prova scritta del progetto.

Il corso è così strutturato (Totale: 6 ECTS, 54 ore):

1. Distributed System & Internet of Things Overview
(1 ECTS – 9 ore)
a. Software Development Patterns Overview
b. Centralized, Decentralized and Distributed Systems
c. Internet of Things & Cyber-Physical Systems
2. Protocols & Communication Patterns
(2 ECTS – 18 ore)
a. RESTful & Request/Response Communication Pattern
b. HTTP & CoAP RESTful Protocols Overview
c. Pub/Sub & Event Driven Communication Pattern
d. Interoperability & Heterogeneity Management
3. Distributed Infrastructure
(1 ECTS – 9 ore)
a. Cloud Computing
b. Edge Computing
c. Cloud, Edge & IoT
d. End-To-End Architecture Design
4. Building Distributed Software Architectures
(2 ECTS – 18 ore)
a. Monolithic & Microservice Architectures
b. Microservices Patterns
c. Event-Driven Microservices
d. Microservice Technologies & Software Design

Metodi didattici

L’insegnamento viene erogato in presenza. Il corso è bilanciato tra lezioni frontali e lezioni pratiche (hands on) in laboratorio sia singole che in gruppo. In aggiunta sono previste due lezioni a carattere seminariale legate al mondo delle aziende che operano nel settore IoT e alla visione futura dei prossimi sviluppi tecnologici.

Le lezioni del corso (sia per quanto riguarda la parte di didattica frontale che di laboratorio) verteranno sull'uso di slide (fornite regolarmente agli studenti), con materiale esclusivo per il corso e anche con i riferimenti precisi ai libri di testo e ad altri articoli/materiale didattico adottato. L’insegnamento è erogato in lingua inglese e la frequenza non è obbligatoria, ma consigliata.

Testi di riferimento

Le slide utilizzate durante il corso sia della parte teorica che di laboratorio, e gli esercizi svolti in laboratorio assieme alle loro soluzioni saranno resi disponibili sulla piattaforma ufficiale dedicata al corso.

Gli studenti potranno approfondire i contenuti del corso attraverso i seguenti testi di studio consigliati:

- J. P. Vasseur and A. Dunkels, “Interconnecting Smart Objects with IP,” Morgan Kaufmann, 2010
- Monolith to Microservices: Evolutionary Patterns to Transform Your Monolith. Sam Newman. 2019
- Building Event-Driven Microservices: Leveraging Organizational Data at Scale. Adam Bellemare. 2020
- Architecture Patterns With Python: Enabling Test-Driven Development, Domain-Driven Design, and Event-Driven. Bob Gregory
Harry J.W. Percival. 2020

Verifica dell'apprendimento

L’esame è costituito dalle seguenti prove:

1) Esame scritto (indicativamente 4 domande) sugli aspetti teorici e progettuali legati al mondo IoT e agli argomenti presentati a lezione. La durata della prova scritta è di 2 ore. Alla prova scritta sarà assegnato un punteggio tra 0 e 30. L'esame si ritiene superato se il voto è maggiore o uguale a 18.
2) Realizzazione di un progetto (singolo e/o in gruppo di massimo 3 persone) partendo da una lista di progetti e argomenti presentati a lezione, con relazione e discussione della stesso in sede di esame

Il voto finale è il valore medio dei voti nella prova scritta e del progetto e la lode è assegnata dal docente nel caso di risultati meritevoli in entrambe le prove.

Le modalità di svolgimento e di consegna del progetto saranno presentate in modo approfondito a lezione e saranno indicate sulla pagina Moodle dell’insegnamento. Il progetto può essere consegnato una sola volta nell’anno accademico e rimane valido per tutto l’anno accademico (appelli da gennaio a settembre inclusi).

Gli esami si svolgono in presenza secondo il calendario ufficiale degli appelli d’esame. Non sono previste prove intermedie.

Lo studente che intenda sostenere l’esame in un dato appello è tenuto a iscriversi per tempo all’appello stesso, utilizzando la piattaforma Esse3. Al termine di ogni appello i voti verranno caricati su Esse3. Gli studenti potranno decidere di rifiutare il voto entro la data che sarà comunicata contestualmente all’invio dei risultati. Quando lo studente ha passato con successo entrambe le prove (voto >=18) sarà contattato per rivedere il voto finale e per comunicare la sua decisione di accettare oppure no il risultato. Alla fine in caso di accettazione del voto, il risultato sarà caricato su Esse3.

Risultati attesi

(1) Conoscenza e capacità di comprensione.
Capacità di applicare conoscenza e comprensione degli argomenti presentati

(2) Capacità di applicare conoscenza e comprensione.
Capacità di progettare, programmare e gestire i moderni sistemi distribuiti e IoT

(3) Autonomia di giudizio.
Capacità di valutare scelte architetturali e progettuali sui sistemi pervasivi e distribuiti.

(4) Abilità comunicative.
Il progetto e la sua presentazione permetteranno di organizzare e presentare con adeguato linguaggio tecnico i risultati del proprio studio e lavoro.

(5) Capacità di apprendimento.
Le attività descritte consentiranno allo studente di acquisire gli strumenti metodologici per potere provvedere autonomamente al proprio aggiornamento, particolarmente cruciale in un ambito dove le tecnologie sono in continua evoluzione