Anno di corso: 1

Anno di corso: 2

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

TECNOLOGIE ED APPLICAZIONI DEI SISTEMI DISTRIBUITI

Scheda dell'insegnamento

Anno accademico di regolamento: 
2017/2018
Anno di corso: 
2
Anno accademico di erogazione: 
2018/2019
Tipo di attività: 
Obbligatorio a scelta
Lingua: 
Italiano
Crediti: 
6
Ciclo: 
Primo Semestre
Ore di attivita' didattica: 
48
Prerequisiti: 

Conoscenze approfondite di funzionamento delle reti e dei principi di progettazione e realizzazione di applicazioni distribuite.

Moduli

Metodi di valutazione

Modalita' di verifica dell'apprendimento: 

L'esame consta di una prova scritta con domande aperte e chiuse (su argomenti di lezione e di laboratorio) del valore di punti 28.
Le domande aperte possono essere semplici esercizi sugli argomenti del laboratorio.
Struttura della prova scritta:
- parte generale: 10 domande chiuse + 2 aperte [10*2+2*4=28 punti)

Chi ha frequentato i laboratori può ottenere 5 punti supplementari così assegnati:
1 punto per la frequenza (>=75%)
1 punto per la partecipazione attiva (svolgimento delle esercitazioni in aula)
3 punti per lo svolgimento dell'esercizio finale (concordato con il docente)

L'esame può essere integrato da una prova orale su richiesta del docente e/o dello studente.
La prova orale può determinare un incremento o un decremento del voto dello scritto.

Prove in itinere
La prova scritta può essere sostituita dallo svolgimento di due prove in itinere.
Ciascuna prova è composta da domande aperte e chiuse, + semplici esercizi sugli argomenti del laboratorio per complessivi 33 punti.
L'accesso alla seconda prova si ottiene con un punteggio maggiore o uguale a 18 punti nella prima prova.
Il voto della prova scritta è dato dalla media delle due prove. Non sono previste prove di recupero.

VOTO FINALE = VOTO PROVA SCRITTA + PUNTI LABORATORIO (se frequentato) + (eventuale integrazione orale)

Valutazione: 
Voto Finale

Obiettivi formativi

Lo scopo del corso è fornire allo studente gli elementi fondamentali per comprendere e progettare applicazioni di distribuite e a servizi. Al termine del corso lo studente conoscerà i principali modelli di sistemi distribuiti basati su tecnologia Cloud e le caratteristiche fondamentali delle architetture e degli strumenti per la loro realizzazione.

Con questo bagaglio di conoscenze sarà in grado di analizzare e progettare sistemi basati su tecnologia a microservizi e container.

Contenuti

Le attuali applicazioni distribuite utilizzano il Web come piattaforma di riferimento e il concetto di servizio come metafora per la realizzazione di componenti autonomi che realizzano le funzionalità necessarie. L'insegnamento studia i principi e i modelli delle tecnologie software distribuite e il loro impatto sulla progettazione delle applicazioni di "Cloud Computing" e "Internet of Things" (IoT).

Durante l'insegnamento verrà analizzata in particolare l'evoluzione dei paradigmi di progettazione delle architetture software distribuite e dei servizi che le popolano. Inoltre, una consistente parte dell'insegnamento è dedicata all’approfondimento delle tecnologie a microservizi e container, con esercitazioni pratiche.

Programma esteso

Introduzione al corso. Evoluzione di Internet e del Web: convergenza di reti, device e applicazioni. Il modello architetturale REST (Web API): Web of Services, Web of Data, e Web of Things.
Sistemi service-oriented: Definizione di servizio, modelli organizzativi a servizi, architettura dei sistemi orientati ai servizi (SOA). Processi di business e servizi. Modelli e principi di cloud e fog computing e loro impatto sul piano organizzativo e di architettura delle soluzioni: i modelli di "system of records" e "system of engagement".
Cloud Computing: concetti fondamentali, virtualizzazione. Architetture XaaS (anything-as-a-service). Architetture a servizi per ecosistemi “smart”: smart city, smart building, smart mobility, ecc. Principi di interoperabilità di IoT e altri tipi di sistemi.
Architetture a microservizi: concetti fondamentali, pattern architetturali. Modelli di sviluppo DevOps (cenni). Architetture a container: concetti fondamentali, pattern architetturali. Principi di monitoring, deployment at scale e sicurezza (cenni).
Laboratorio: Progettazione e realizzazione di applicazioni a microservizi e container con tecnologia Docker. Svluppo e integrazione di servizi IoT.

Bibliografia consigliata

Non c’è un unico testo di riferimento. Verranno indicati articoli e risorse sul sito di elearning.

Metodi didattici

Il corso prevede lezioni ed esercitazioni (laboratorio) in aula con attività di studio individuale supportate da materiali didattici in e-learning