TECNOLOGIE PER I SISTEMI DISTRIBUITI E IL WEB CON LABORATORIO
Anno accademico 2018/2019 - 3° anno - Curriculum B- TECNOLOGIE PER I SISTEMI DISTRIBUITI E IL WEB: Giuseppe PAPPALARDO
- LABORATORIO: Giuseppe PAPPALARDO
Organizzazione didattica: 225 ore d'impegno totale, 153 di studio individuale, 36 di lezione frontale, 24 di esercitazione, 12 di laboratorio
Semestre: 1°
Obiettivi formativi
- TECNOLOGIE PER I SISTEMI DISTRIBUITI E IL WEB
Conoscenza e capacità di comprensione (knowledge and understanding): verrano acquisite conoscenza e comprensione dei fondamenti concettuali (nozioni di base e architetturali, principali classi di problemi) su cui poggiano le soluzioni di impiego corrente per lo sviluppo dei sistemi distribuiti e, in particolare, delle applicazioni web lato server.
Capacità di applicare conoscenza e comprensione (applying knowledge and understanding): lo studente sarà in grado di impiegare soluzioni e paradigmi appresi nel corso, in modo da costituire un efficace bagaglio di competenze, necessarie per la progettazione di sistemi distribuiti e applicazioni Web lato server.
Autonomia di giudizio (making judgements): lo studente sarà in grado di valutare comparativamente i meriti e i limiti delle soluzioni di impiego corrente, nell'industria del software, per le problematiche e gli scenari tipici della progettazione distribuita e Web (lato server).
Abilità comunicative (communication skills): lo studente apprenderà terminologia e paradigmi specifici dei sistemi distribuiti e dello sviluppo Web lato server e acquisirà le abilità comunicative appropriate per esprimere e discutere, ad un livello tecnico rigoroso, le problematiche di interesse.
Capacità di apprendimento (learning skills): lo studente sarà in grado di documentarsi e approfondire le proprie conoscenze mediante la consultazione delle fonti disponibili (libri di testo e/o risorse on line), eventualmente applicando le informazioni acquisite in contesti concreti. - LABORATORIO
Conoscenza e capacità di comprensione (knowledge and understanding): verrano acquisite conoscenza e comprensione delle principali tecnologie per lo sviluppo di sistemi distribuiti e, in particolare, delle applicazioni web lato server.
Capacità di applicare conoscenza e comprensione (applying knowledge and understanding): lo studente sarà in grado di impiegare le tecnologie introdotte e sperimentate nel corso, in modo da acquisire capacità operative e progettuali nello sviluppo e gestione di sistemi distribuiti e applicazioni web (lato server).
Autonomia di giudizio (making judgements): lo studente sarà in grado di valutare comparativamente i vantaggi e i limiti delle principali tecnologie disponibili per sviluppo e gestione di sistemi distribuiti e web (lato server).
Abilità comunicative (communication skills): lo studente apprenderà la terminologia specifica dei sistemi distribuiti e web e acquisirà le abilità comunicative appropriate per esprimere e discutere, ad un livello tecnico rigoroso, le problematiche di interesse.
Capacità di apprendimento (learning skills): lo studente sarà in grado di utilizzare la documentazione tecnica delle soluzioni e tecnologie di uso corrente per i sistemi distribuiti e web, al fine di impiegarle concretamente nelle attività di amministrazione e sviluppo.
Modalità di svolgimento dell'insegnamento
- TECNOLOGIE PER I SISTEMI DISTRIBUITI E IL WEB
Lezioni frontali in aula
- LABORATORIO
Sessioni di laboratorio con esercitazioni
Prerequisiti richiesti
- TECNOLOGIE PER I SISTEMI DISTRIBUITI E IL WEB
- Capacità di pensare in termini algoritmici (corso di Programmazione)
- Conoscenza di problematiche e soluzioni della programmazione concorrente (trattata nel corso di Sistemi Operativi)
- Conoscenza dei principali concetti, meccanismi e protocolli della rete Internet (corso di Reti di calcolatori)
- LABORATORIO
- Conoscenza dei linguaggi C e Java.
- Capacità di sviluppo di codice di natura sistemistica nei linguaggi C e Java.
- Conoscenza operativa dei sistemi Unix.
- Conoscenza delle principali system call Unix
- Conoscenza di problematiche e soluzioni della programmazione concorrente
Frequenza lezioni
- TECNOLOGIE PER I SISTEMI DISTRIBUITI E IL WEB
Consigliata, per il raggiungimento di una piena comprensione del materiale presentato.
- LABORATORIO
Fortemente consigliata, per il raggiungimento di una piena capacità operativa mediante le tecnologie presentate.
Contenuti del corso
- TECNOLOGIE PER I SISTEMI DISTRIBUITI E IL WEB
Verranno presentati, a livello di concetti, paradigmi e aspetti architetturali, i seguenti argomenti:
- Applicazioni client-server basate su socket
- Applicazioni client-server basate su invocazioni remote di codice
- Thread Linux in C
- Thread Java
- Architettura 3-tier per un sistema distribuito: client, web/application server e back-end database
- Servlet e web application
- Web services SOAP e REST
- LABORATORIO
Verranno presentati, puntando a conferire agli allievi capacità operative e di sviluppo, i seguenti argomenti:
- Sviluppo in C e Java di sistemi client-server basate su socket
- Sviluppo di applicazioni client-server basate su invocazioni remote di codice, in C (RPC Sun) e Java (RMI)
- Programmazione multithreaded in C sotto Linux e Java
- Sviluppo di applicazioni Web e servlet anche con IDE Netbeans/Eclipse
- Deployment di applicazioni Web con l'application server Apache Tomcat
- Web services SOAP e REST
- Pattern MVC e servizi REST
- Linguaggio e librerie Python per thin client
Testi di riferimento
- TECNOLOGIE PER I SISTEMI DISTRIBUITI E IL WEB
- Note del docente (pubblicate attraverso il portale Studium
- Deitel H. M., Deitel P. J. Java: Tecniche avanzate di programmazione. Apogeo. (in biblioteca)
- Documentazione online Java, https://docs.oracle.com/javase/tutorial/
- Documentazione online Java Enterprise Edition, https://docs.oracle.com/javaee/7/tutorial/
- LABORATORIO
- Note fornite dal docente e reperibili attraverso il portale Studium
- Deitel H. M., Deitel P. J. Java: Tecniche avanzate di programmazione. Apogeo. (in biblioteca)
- Documentazione online Java, https://docs.oracle.com/javase/tutorial/
- Documentazione online Java Enterprise Edition, https://docs.oracle.com/javaee/7/tutorial/
Programmazione del corso
TECNOLOGIE PER I SISTEMI DISTRIBUITI E IL WEB | |||
Argomenti | Riferimenti testi | ||
---|---|---|---|
1 | Introduzione ai sistemi concorrenti e distribuiti e al corso. | 1 | |
2 | Socket: introduzione e system call principali. | 1 | |
3 | Socket: Cliente di esempio. Semantica di read() e write(). Socket non bloccanti. | 1 | |
4 | Socket: Indirizzi IP e delle socket. DNS e interfaccia la resolver. | 1 | |
5 | Socket: Comunicazione connectionless. send() e receive(). | 1 | |
6 | Socket in linguaggio Java. | 1,2,3 | |
7 | Java: Remote Method Invocation | 2,3 | |
8 | Remote Procedure Call in C | 1 | |
9 | Java Servlet: concetti | 1,4 | |
10 | Web Application: principi e concetti | 1,4 | |
11 | Web services: SOAP | 1 | |
12 | Web services: REST con JSON | 1 | |
LABORATORIO | |||
Argomenti | Riferimenti testi | ||
1 | Sviluppo di un server parallelo mediante socket | 1 | |
2 | Sviluppo di un sistema client-server con protocollo applicativo mediante socket | 1 | |
3 | Sviluppo di un sistema client-server con Remote Procedure Call RPC Sun | 1 | |
4 | Impiego della socket API Java | 1,2,3 | |
5 | Sviluppo di un sistema client-server con Remote Method Invocation RMI Java | 1,2,3 | |
6 | Sviluppo di applicazioni multi-threaded in ambiente Linux | 1 | |
7 | Sviluppo di applicazioni multi-threaded Java | 1,2,3 | |
8 | Sviluppo di una Web Application | 1,4 | |
9 | Le servlet Java | 1,2,4 | |
10 | L'application server Apache Tomcat e il deployment delle Web App | 1,4 | |
11 | Il backend (database) di una Web App: tecnologie Java | 1,2,4 | |
12 | Sviluppo di Web App nell'ambiente IDE Netbeans | 1 | |
13 | Sviluppo di Web App nell'ambiente IDE Eclipse | 1 | |
14 | Sviluppo di Web Services SOAP | 1 | |
15 | Sviluppo di Web Services REST e linguaggio di interscambio JSON | 1 | |
16 | Sviluppo di thin client in linguaggio Python | 1 | |
17 | Pattern MVC per lo sviluppo di Web App | 1 |
Verifica dell'apprendimento
Modalità di verifica dell'apprendimento
- TECNOLOGIE PER I SISTEMI DISTRIBUITI E IL WEB
Discussione orale degli argomenti del corso a partire dalla correzione della prova di laboratorio.
- LABORATORIO
Prove di laboratorio, consistenti nell'implementazione di codice che faccia ricorso alle tecnologie presentate nel corso (nel suo complesso).
Esempi di domande e/o esercizi frequenti
- TECNOLOGIE PER I SISTEMI DISTRIBUITI E IL WEB
- Sistemi client-server basati su socket.
- Uso dei thread Posix.
- Architettura 3-tier per un sistema distribuito.
- Sviluppo di applicazioni Web server-side, mediante servlet.
- Impiego di ambienti integrati di sviluppo.
- Servlet e servlet container
- Web application
- Costruzione e utilizzo di web services SOAP e REST.
- Formato di interscambio JSON.
- LABORATORIO
Nello svolgimento delle prove di laboratorio, viene richiesto di realizzare semplici sistemi client-server che Impieghino le tecnologie presentate nel corso. Seguono alcuni esempi di prove d'esame già assegnate .
- Esercizio: sistema client-server con socket:https://goo.gl/hMglE5
- Esercizio: sistema client-server con socket: https://goo.gl/GDhFpr
- Esercizio di sincronizzazione di thread: https://goo.gl/VdR7om
- Esercizio di sincronizzazione di thread: https://goo.gl/9sDeUV
- Implementare un web service WsReverse che espone l’interfaccia String reverse(String s), che restituisce la stringa inversa della stringa argomento s. Esempio: invocando reverse("casa") la stringa restituita sarà "asac”. Usare Glassfish come server.
- Implementare una servlet che funga da cliente per consumare il web service WsReverse, invocandone l'unico metodo. Usare Tomcat come servlet container.
- Altri esempi di esercizi su web services e servlet: https://goo.gl/pi3ZvK
- Altri esempi di esercizi su web services e servlet: https://goo.gl/IxI9mg