SISTEMI DISTRIBUITI

Crediti: 
9
Settore scientifico disciplinare: 
SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI (ING-INF/05)
Anno accademico di offerta: 
2016/2017
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 distribuiti utilizzando le tecnologie presentate 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.

Modalità verifica apprendimento

Sono previste una prova scritta, con domande a risposta aperta relative alla parte teorica del corso, e un progetto software per valutare le capacità pratiche dello studente. Il progetto software sarà valutato per la qualità del sistema realizzato e delle documentazione allegata. Normalmente la prova scritta e il progetto hanno lo stesso peso nel voto finale. Non sono previste prove in itinere.