86733 - SYSTEMS INTEGRATION

Scheda insegnamento

Anno Accademico 2017/2018

Conoscenze e abilità da conseguire

Al termine del corso lo studente: conosce i principi fondamentali della virtualizzazione, dei sistemi di gestione dell'identità, dei sistemi di protezione delle reti (firewall in particolare); conosce i principali fattori che ostacolano il dispiegamento di servizi e applicazioni distribuiti, in contesti eterogenei in termini di utenti, servizi e sistemi operativi; conosce i principali metodi e strumenti utilizzabili per progettare e dispiegare applicazioni distribuite; conosce i principali protocolli, sistemi e strumenti per consentire l'interazione tra servizi di base offerti da sistemi operativi diversi; conosce le principali piattaforme di gestione di cloud on premise; conosce i principali protocolli, strumenti e piattaforme per configurare, dispiegare, manutenere e monitorare, in modo centralizzato e automatizzato, sistemi, servizi e applicazioni distribuiti.

Programma/Contenuti

Il corso fornisce le conoscenze e le abilità della figura professionale del Systems Integration and Testing Engineer.

Sono indispensabili, per la comprensione dei contenuti del corso, solide conoscenze pregresse maturate nei corsi di programmazione, sistemi operativi e reti di calcolatori.

  • La figura professionale del Systems Integration and Testing Engineer, i suoi task e le sue competenze.
  • Casi di studio più significativi.
  • Richiami sulla Gestione locale di un sistema.
  • Cenni su sicurezza dei sistemi informatici, delle server farm e delle reti. Protocolli e utilities, ssh, tls/ssl, dtls.
  • Richiami di gestione delle reti, strumenti essenziali, filtering, iptables/netfilter.
  • Protocolli di rete (OPC) per interazioni con sistemi industriali (PLC).
  • Cenni su Protezione delle reti locali e delle server farm, Firewall e protocolli per superamento di firewall, Proxy/Relay, protocolli e strumenti per proxying, Socks.
  • Principi di Virtualizzazione. Piattaforme di virtualizzazione. Container. Applicazioni della virtualizzazione: dalle server farm agli smartphone.
  • Cenni su Piattaforme di Gestione di Cloud on premise.
  • IDentity Management (IDM). IDM a base Windows (Active Directory, LDAP) e Linux (Kerberos, openLDAP) .
  • Interazioni tra sistemi Windows e Linux, esempi, casi di studio.

  • Architetture a Microservizi: architetture software language-independent a componenti. Bus dei messaggi (a livello kernel, locali e in cloud). Esempi notevoli di architetture a Microservizi in ambito locale e in ambito cloud.
  • Gestione centralizzata di servizi distribuiti e sviluppo di applicazioni di supporto: Monitoraggio centralizzato, protocolli, applicazioni, SNMP, Nagios e altri applicativi similari. Configurazione centralizzata. Autenticazione centralizzata. Manutenzione centralizzata. Sviluppo di applicazioni distribuite, in particolare per monitoraggio e configurazione dinamica di sistemi locali e distribuiti.

Testi/Bibliografia

dispense del docente pubblicate sul sito personale a partire dall'inizio delle lezioni (vedi link)

Metodi didattici

Lezioni Frontali e Esercitazioni in aula e in laboratorio informatico.

I fondamenti teorici sono esposti durante le lezioni frontali. Numerosi esercizi pratici sono svolti in aula ad anticipare gli esercizi che gli studenti dovranno successivamente svolgere nelle esercitazioni guidate in laboratorio, con la supervisione del docente.

Estensioni delle esercitazioni sono regolarmente suggerite, e le soluzioni pubblicate sul web, allo scopo di promuovere e favorire lo studio individuale e le attività di laboratorio autonome.

Alcune esercitazioni in aula e in laboratorio sono dedicate a simulare lo svolgimento della prova teorico/pratica e dello sviluppo del progetto, che costituiscono le due prove d'esame.

Modalità di verifica dell'apprendimento

L'esame consiste di due prove, la seconda delle quali è opzionale:

i) una verifica teorico/pratica delle conoscenza degli aspetti teorici e pratici della disciplina, effettuata mediante una prova scritta;

ii) opzionalmente, una successiva verifica delle abilità pratiche, delle capacità progettuali e delle capacità di approfondimento e apprendimento autonomo, conseguite dallo studente, mediante lo sviluppo di un progetto, finalizzato in una discussione del lavoro svolto; il progetto viene svolto in piccoli gruppi di non più di 4 persone. L'assegnamento del progetto viene effettuato su richiesta del gruppo, solo dopo che tutti i componenti del gruppo hanno superato la prova teorica con voto sufficiente.

La prova teorico/pratica consiste di una prova scritta che dura 2 ore e prevede risposte aperte ad una serie di domande ed alcuni semplici esercizi. La prova teorico/pratica scritta spazia tra tutti gli argomenti presentati durante il corso.

La prova teorico/pratica permette di raggiungere un voto massimo di 24 trentesimi. Il progetto è opzionale e permette di aggiungere fino a 12 punti al voto della prova teorica.

Superata la prova teorico/pratica c'è un anno di tempo per chiedere la verbalizzazione del voto. In quel periodo di un anno, chi vuole svolgere il progetto deve i) accordarsi col docente stabilendo le specifiche del progetto, ii) sviluppare il progetto concordato, iii) svolgere una discussione finale col docente riguardante il progetto concordato e sviluppato.

Il progetto viene svolto con gli stessi strumenti software che gli studenti utilizzano durante le esercitazioni di laboratorio svolte all'interno del corso.

Strumenti a supporto della didattica

Lezioni: proiezione di diapositive a disposizione via Web e dimostrazioni pratiche dei concetti, algoritmi, tecniche, API e strumenti esposti nelle discussioni a lezione. Le dimostrazioni pratiche utilizzano script e files che sono preventivamente messi a disposizione nella pagina web del corso. In tal modo, gli studenti possono meglio seguire le dimostrazioni e replicarle durante la stessa lezione sui loro laptop, verificando personalmente lo sviluppo delle operazioni e individuando e proponendo immediatamente al docente eventuali dubbi, così da sollecitare al massimo l'interazione tra studenti e docente durante le lezioni.

Attività in laboratorio: il docente guida gli studenti nell'imparare progressivamente gli strumenti, le API e le strategie di risoluzione dei problemi concernenti tutti gli argomenti del corso. A ciascuno studente è fornito un proprio ambiente di lavoro virtualizzato, in cui lo studente opera con i privilegi di amministratore di sistema, in modo da effettuare realisticamente procedure operative di amministrazione dei sistemi.

Link ad altre eventuali informazioni

http://www.cs.unibo.it/~ghini/didattica/systemsintegration/index.html

Orario di ricevimento

Consulta il sito web di Vittorio Ghini

Consulta il sito web di Ciro Barbone

Consulta il sito web di