Sistemi distribuiti: concetti di base, paradigmi, modelli e piattaforme. Problematiche principali dei sistemi distribuiti, anche relative alla gestione di aspetti non funzionali, quali fault tolerance e real-time, che rappresentano punti di criticità nella progettazione dei sistemi distribuiti. Gestione dei sistemi distribuiti. Tecnologie di base per lo sviluppo di applicazioni Web.
Paulo Verissimo, Luis Rodrigues “Distributed Systems For Systems Architects”, Kluwer Academic Publisher
Marty Hall, Larry Brown “Core Servlets and Javaserver Pages”, Vol. 1, II Edition
Obiettivi Formativi
Conoscenze:
Principi architetturali alla base dei sistemi distribuiti.
Competenze acquisite
Aspetti metodologici relativi alla progettazione dei sistemi distribuiti.
Metodologie di base per risolvere problemi quali sincronizzazione, coordinamento, condivisione dei dati, allocazione di risorse, consistenza, tolleranza ai guasti e rispetto di vincoli temporali.
Tecnologie per lo sviluppo di applicazioni Web.
Capacità acquisite al termine del corso:
Sviluppo di applicazioni Web, sia pagine web dinamiche che servizi web.
Prerequisiti
Corsi raccomandati: Architetture degli Elaboratori, Sistemi Operativi, Reti di Calcolatori
Metodi Didattici
Numero di ore totali del corso: 225
Numero di ore per studio personale e altre attività formative di tipo individuale: 147
Numero di ore relative alle attività in aula: 60
Numero di ore relative ad attività di laboratorio (lezioni in laboratorio): 18
Altre Informazioni
Orario di ricevimento
Per appuntamento (contattare il docente per telefono o e-mail)
Modalità di verifica apprendimento
Esame orale e un elaborato scritto.
Programma del corso
Concetti di base: reti di calcolatori, multicomputer e sistemi distribuiti; confronto tra sistemi centralizzati e distribuiti; evoluzione dei sistemi distribuiti (dall'accesso remoto al codice mobile); notazioni formali per la modellizzazione di sistemi e proprietà. Indirizzamento e risoluzione dei nomi. Stili di interazione: scambio di messaggi, operazioni remote, comunicazione a gruppi. Tempo, orologi e sincronia. Ordinamento di eventi distribuiti. Principali paradigmi distribuiti di coordinamento. Modelli di computazione distribuita: sincroni e asincroni, cliente-servente con RPC, orientati ai gruppi, memoria distribuita condivisa, bus di messaggi. Piattaforme e sistemi distribuiti: name e directory service, file system distribuito, Distributed Computing Environment, CORBA, WWW, sistemi basati su gruppi.
Sistemi distribuiti fault-tolerant: concetti di base, paradigmi (consenso, membership, comunicazione, replicazione, recovery), e modelli. Sistemi distribuiti real time: concetti di base, paradigmi e modelli principali.
Modulo di laboratorio: Tecnologie di base per lo sviluppo di applicazioni Web (HTML, XML, XML Schema), tecnologie per la costruzione di pagine web dinamiche (Servlet and Java Server Page), tecnologie per la costruzione di servizi web (WSDL, SOAP, WS-BPEL).