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.
Altre informazioni
- - -
Obiettivi agenda 2030 per lo sviluppo sostenibile
- - -