Dettaglio insegnamento

PROGETTAZIONE E IMPLEMENTAZIONE DI SISTEMI SOFTWARE IN RETE

MF0244

Insegnamento
PROGETTAZIONE E IMPLEMENTAZIONE DI SISTEMI SOFTWARE IN RETE
Codice
MF0244
Anno Accademico
2023/2024
Anno regolamento
2021/2022
Corso di studio
INFORMATICA
Curriculum
000 - CORSO GENERICO
Responsabile didattico
-
CFU
9
Ore di lezione
72
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB - Obbligatoria
Anno
3
Periodo
Annuale
Sede
VERCELLI
Lingua insegnamento
Italiano
Contenuti
- Architettura delle reti informatiche locali, incluse reti wireless
- Servizi multimediali in rete
- Principi di base sull’architettura delle applicazioni distribuite basate su microservizi
- Internet of Things
- Sviluppo di un’applicazione distribuita basata su microservizi
Testi di riferimento
Libro di testo:
James F. Kurose, Keith W. Ross, Reti di Calcolatori e Internet - Un approccio top-down , Settima o Ottava Edizione, Addison Wesley (2017 o 2022)

Per consultazione:
C. Richardson Microservices Patterns. With Examples in Java
Manning Publications (2018)
Obiettivi formativi
Conoscere le principali tecniche e protocolli alla base del funzionamento delle reti locali con e senza fili. Conoscere le principali caratteristiche e i protocolli specifici delle applicazioni multimediali in rete.
Acquisire le competenze necessarie a progettare un'applicazione distribuita basata su microservizi, dalla specifica dei requisiti, alla progettazione, alla implementazione e collaudo dell’applicazione.
Sviluppare la capacità di lavorare in gruppo per lo svolgimento del progetto, utilizzando strumenti di lavoro collaborativo in rete per interagire e organizzare il lavoro in team.
Prerequisiti
Lo studente deve avere acquisito le nozioni base relative alle reti
informatiche (corso di Reti -I), la progettazione del software (Ingegneria
del Software e Programmazione ad Oggetti), della programmazione
WEB (Metodologie di Programmazione per il Web) e Sicurezza (Cybersecurity I).
Metodi didattici
Il corso si avvale di:
- Lezioni frontali
- Fasi di lavoro guidato in laboratorio
- Fasi di lavoro individuali e in gruppo autogestite
Altre informazioni
Sulla piattaforma DIR sono disponibili le slide utilizzate a lezione, esempi di esercizi simili a quelli proposti all'esame scritto sulla parte di teoria, esempi di programmi completi da utilizzare per il lavoro in laboratorio.
Attraverso la piattaforma gitlab del dipartimento gli studenti possono condividere on-line la documentazione e il software prodotto durante lo sviluppo dell’applicazione richiesta come progetto finale.
Modalità di verifica dell'apprendimento
La verifica dell'apprendimento di conoscenze e competenze si articola in due fasi:
- Un esame scritto sulla parte del programma di teoria con domande ed esercizi.
- Dimostrazione del funzionamento del progetto sviluppato con colloquio di gruppo che include la verifica delle competenze acquisite a livello individuale.
Il voto finale viene concordato dai docenti del corso tenendo conto del risultato raggiunto in ciascuna fase di verifica. E’ necessario raggiungere la sufficienza su entrambi gli aspetti: teoria e progetto.
Programma esteso
Il corso comprende due parti:
1. Teoria delle reti locali con e senza fili e applicazioni multimediali in rete:
a) Il livello data-link:
- Caratterizzazione del servizio e delle funzionalità.
- Interfacciamento al livello rete: ARP Principi dei protocolli per l'accesso a mezzi condivisi: CSMA/CD, CSMA/CA, CDMA.
- Ethernet, Ethernet-switch.
- Wi-Fi, Access Point, protocolli della classe 802.11.
- Bluetooth (cenni): architettura, utilizzazione nella IoT
- ZigBee (cenni): architettura, utilizzazione nell'IoT
b) Trasmissione multimediale su rete Internet:
- Requisiti del traffico multimediale in contrapposizione al traffico dati
tradizionale
- Streaming audio-video.
c) Architetture per applicazioni distribuite in rete:
- Caratterizzazione dell’ambiente: reti private, IoT
- Architetture guidate dagli eventi contrapposte alle architetture Client-
Server.
- Comunicazione tramite relay in rete pubblica con particolare riferimento ai message-broker
- API Rest: principi generali

2. Modulo di Laboratorio: Sviluppo di un'applicazione distribuita in rete basata su microservizi.
a) Ambiente a disposizione:
- Rete locale “privata” dotata di un insieme di nodi adatti alla
implementazione di applicazioni IoT.
- Host a disposizione: Raspberry PI
- Protocollo di comunicazione supportato: MQTT + HTTP
- Autorizzazione basata su OAuth 2.0 usando token

- Cloud dell'Ateneo dotato delle piattaforme studiate a lezione: Mosquitto.
b) Lavoro da svolgere da parte dello studente.
Nel percorso didattico del modulo di laboratorio lo studente deve
sviluppare il progetto utilizzando le tecniche di progettazione apprese nel
corso di ingegneria del software, metodologie di programmazione web, programmazione a oggetti e sicurezza. Il linguaggio di implementazione consigliato è Java (eventualmente appoggiandosi a framework adatti allo scopo) ma può anche
essere scelto liberamente dallo studente (per esempio C#, Javascript,
Python).
c) Attività preliminare guidata dal docente:
- Preparazione metodologica al progetto: analisi della struttura delle
moderne applicazioni di rete basate su message-brokers, con sperimentazione del broker open source Mosquitto.
- Paradigma di comunicazione basato su Publish-Subscribe (protocollo MQTT)
d) Sviluppo del Progetto: Allo studente verrà assegnata un’applicazione
distribuita nel dominio IoT che dovrà essere sviluppata in gruppo secondo le classiche fasi previste nell'ingegneria del software (potendo contare in ogni fase sulla possibilità di verificare le scelte compiute con i docenti):
- Analisi dei requisiti che devono essere soddisfatti e definizione delle
specifiche per il software da progettare.
- Progettazione dell'architettura, specifica dei componenti, dei moduli e delle classi. Interazione dei componenti.
- Implementazione del software progettato.
- Validazione e analisi delle prestazioni ottenute
- Stesura della documentazione relativa ad ogni fase.
Risultati di apprendimento attesi
Conoscenza e capacità di comprensione: gli studenti dovranno conoscere le principali architetture e caratteristiche delle reti informatiche locali con e senza fili; i servizi offerti dal livello data-link ed il loro interfacciamento con il livello di rete; le caratteristiche ed i requisiti della trasmissione di dati multimediali; i principi base e le tecniche usate per realizzare applicazioni distribuite a microservizi.
Capacità di applicare conoscenza e comprensione: gli studenti dovranno essere in grado di applicare le conoscenze acquisite per sviluppare un’applicazione basata su microservizi che si interfacci con dispositivi IoT connessi ad una rete locale. Nella progettazione dell’applicazione gli studenti dovranno adottare le tecniche/ metodologie acquisite durante il corso di ingegneria del software.
Autonomia di giudizio: nello sviluppo dell’applicazione gli studenti dovranno essere in grado in modo autonomo di analizzare differenti soluzioni architetturali e scelte implementative, identificarne i vantaggi e svantaggi e selezionare le soluzioni più appropriate.
Abilità comunicative: gli studenti dovranno essere in grado di esporre in modo sintetico le caratteristiche della propria applicazione e le scelte architetturali o implementative fatte argomentandone la loro efficacia.
Capacità di apprendere: gli studenti dovranno interagire con diversi dispositivi e piattaforme sviluppati in accordo ai principi generali acquisiti durante il corso, ma che offrono interfacce specifiche differenti. Gli studenti dovranno quindi essere in grado di apprendere in modo autonomo le caratteristiche peculiari dei servizi offerti e sviluppare un’applicazione capace di interagire con essi.
Ultimo aggiornamento:09-09-2026 00:14:31