A.A. - Anno corso
2004/2003
Nome:
Tecnologie Informatiche per la Gestione Aziendale
Professore:
Ore totali lezioni:
49
Ore totali esercitazioni:
21
Ore totale laboratorio:
20
Propedeuticità:
Sistemi Informativi
Crediti:
0
Obiettivi:
Le finalità del corso sono:
· far conoscere agli allievi i concetti base dei sistemi distribuiti;
· introdurre una tecnologia middleware di base per lo sviluppo di un sistema informativo.

Obiettivo del corso è portare lo studente a:
· conoscere i principi e le tecniche di base di programmazione distribuita;
· conoscere le problematiche, le soluzioni e le tecnologie dei sistemi distribuiti con particolare riferimento ai requisiti di prestazioni, affidabilità e sicurezza;
· conoscere una tecnologia middleware di base per la programmazione distribuita;
saper progettare e realizzare un semplice, ma completo, sistema informativo distribuito a più livelli.


Programma:
Il linguaggio Java: concetti e costrutti di base
Tipi primitivi ed operatori. Classi ed oggetti. Campi, metodi e costruttori. Variabili. Assegnamenti, inizializzazioni e conversioni di tipo. Gestione della memoria e garbage collection. Array e stringhe. Commenti, commenti di documentazione e strumento javadoc. Pacchetti, Ereditarietà, Interfacce, Classi Astratte e finali. Le eccezioni. I flussi e la serializzazione.

Principi e tecniche di programmazione distribuita
Il modello cliente servitore. Primitive di comunicazione: semantica e modalità di denominazione. La programmazione di rete mediante l’interfaccia socket. Esemplificazione con il linguaggio Java. Il problema dei produttori e consumatori. La chiamata di procedura remota: architettura e semantiche. Server con e senza stato. Esemplificazione con SUN RPC. Il modello ad oggetti distribuiti e l’invocazione remota di metodi. Esemplificazione con Java RMI. Elementi di programmazione concorrente a memoria condivisa. Il problema della mutua esclusione e della sincronizzazione sullo stato di una risorsa. Esemplificazione con i Java thread. Accesso ad un database relazionale. Esemplificazione con JDBC.

Principi e tecniche di progettazione di sistemi distribuiti
Sistemi distribuiti sincroni ed asincroni. Il problema dell’agreement e della rilevazione dei guasti nei sistemi distribuiti. Il problema della sincronizzazione dei clock e sua rilevanza in ambito aziendale: il sistema IBM DCE Time Service. Soluzioni architetturali e tecnologiche orientate alle prestazioni ed all’affidabilitá dei server. Speed up e soluzioni off-the-shelf per migliorare lo speedup. Impatto della gerarchia di memoria sullo speedup. I sistemi RAID. Le architetture UMA, NUMA e di clustering. I multiprocessori SMP. Analisi di alcune soluzioni commerciali: IBM ed Unisys.La sicurezza delle informazioni aziendali: requisiti, politiche e meccanismi. Il problema dell’autenticazione: dalle password alle infrastrutture a chiave pubblica. Il Single-Sign On. Il controllo degli accessi: le politiche discrezionali (DAC) obbligatorie (MAC) e basate sui ruoli (RBAC).


Testi:
· B. Eckel, Thinking in Java - Edizione italiana, Apogeo, 2002
· E. Ansuini, A. Llioy, A. Massari, M. Mecella, E. Melis, M. Mezzalama, G. Raiss, G. Santucci e C. Simonelli, Sistemi Informativi, Volume V - Sistemi Distribuiti, Franco Angeli, 2001.
· Paolo Ancilotti e Maurelio Boari, Principi e tecniche di programmazione concorrente, UTET Libreria, 1987.
· George Colouris, Jean Dollimore e Tim Kindberg, Distributed Systems, Concepts and Design. Third Edition Addison-Wesley, 2001.
· Dispense fornite dal docente.


Esami:
L'esame si svolge, di norma, come segue:

a) discussione e verifica del progetto assegnato al candidato;
b) prova orale.

L’esito positivo della prova di cui al punto A vale anche negli appelli successivi.

Il voto finale tiene conto sia della preparazione raggiunta dal candidato (sulla base del progetto e della prova orale), sia della capacità di esprimersi in un linguaggio tecnico appropriato (in Italiano o in Inglese).


Link utili:
Last modified: Thursday, 29 September 2011, 3:28 PM