SISTEMI DISTRIBUITI

Crediti: 
9
Settore scientifico disciplinare: 
SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI (ING-INF/05)
Anno accademico di offerta: 
2017/2018
Semestre dell'insegnamento: 
Secondo Semestre
Lingua di insegnamento: 

Italiano

Obiettivi formativi

Il corso intende fornire una conoscenza approfondita sugli algoritmi usati per garantire il buon funzionamento di un sistema distribuito, sulle architetture e i modelli che li caratterizzano e sulle tecniche e su alcune tecnologie utilizzate per il loro sviluppo.
Inoltre, il corso ha l’obiettivo di fornire la capacità di utilizzare la conoscenza acquisita e l’esperienza accumulata durante le esercitazioni per individuare le migliori soluzioni distribuite di un problema e per realizzarne delle implementazioni soddisfacenti sia per quanto riguarda la qualità del sistema realizzato e sia per quanto riguarda il costo dello sviluppo.

Prerequisiti

Ingegneria del Software, Basi di Dati.

Contenuti dell'insegnamento

Il corso presenta le caratteristiche principali dei sistemi distribuiti e le tecniche e tecnologie per il loro sviluppo. In particolare, il corso affronta i seguenti argomenti: le architetture e i modelli di calcolo, la progettazione e l’analisi delle prestazioni, i linguaggi per la programmazione concorrente e distribuita, i middleware, le tecniche per la risoluzione dei nomi, la sincronizzazione e la coordinazione, la replicazione, la tolleranza ai guasti, la sicurezza, le transazioni distribuite, i sistemi orientati ai servizi, i sistemi multi-agente, il modellamento e la simulazione, le tecnologie di sviluppo, e le applicazioni.

Programma esteso

Introduzione
Architetture e modelli di calcolo
Progettazione e analisi delle prestazioni
Linguaggi per la programmazione concorrente e distribuita
Middleware
Tecniche per la risoluzione dei nomi
Sincronizzazione e coordinazione
Replicazione
Tolleranza ai guasti
Sicurezza
Transazioni distribuite
Sistemi orientati ai servizi
Sistemi multi-agente
Modellamento e simulazione
Tecnologie di sviluppo
Applicazioni

Bibliografia

G. Coulouris, J. Dollimore, T. Kindber. Distributed Systems - Concepts and Design, Addison Wesley, Fifth Edition, 2012.

Metodi didattici

Il corso si basa su lezioni teoriche ed esercitazioni in laboratorio. In particolare le attività di laboratorio, saranno dedicate allo sviluppo di alcuni sistemi software utilizzando il linguaggio Java e gli strumenti presentati durante il corso. In queste attività, gli studenti opereranno individualmente, chiaramente sotto la guida e con il supporto del docente del corso e senza precludere positive interazioni tra gli studenti.
Le slide utilizzate a supporto delle lezioni verranno caricate sulla piattaforma Elly prima di ogni lezione. Per scaricare le slide è necessaria l’iscrizione al corso on line. Le slide vengono considerate parte integrante del materiale didattico. Quindi gli studenti non frequentanti devono controllare il materiale didattico e le indicazioni fornite dal docente disponibili sulla piattaforma Elly.

Modalità verifica apprendimento

Sono previste una prova scritta e una prova pratica. La prova scritta si basa su otto domande a risposta aperta a cui rispondere senza l'aiuto di appunti e libri Queste domande hanno lo scopo di valutare la conoscenza acquisita sugli argomenti discussi durante il corso. La durata della prova scritta è pari a 1 ora e trenta minuti e la prova è valutata con scala 0-30. il voto della prova scritta viene comunicato nell’arco di due settimane successive alla prova tramite pubblicazione su Elly. La prova pratica consiste nello sviluppo di un sistema software e può essere svolta dagli studenti in modo individuale o in gruppi con massimo 2 persone. Questa prova ha lo scopo principale di valutare la capacità di applicare la conoscenza acquisita durante il corso. Inoltre, la valutazione della prova dipenderà dalla qualità del sistema sviluppato, della relativa documentazione e della presentazione orale (con l’uso di slide) del sistema. La prova è valutata con scala 0-30 e il voto viene comunicato al termine della presentazione del sistema realizzato. L’esame è superato se il risultato di entrambe le prove è maggiore o uguale a 18. Il voto finale è uguale alla media aritmetica dei voti delle due prove. La lode può essere assegnata nel caso del raggiungimento del massimo punteggio su entrambe le prove.