WEB AND SERVICE ORIENTED SYSTEMS AND LABORATORYModulo WEB AND SERVICE ORIENTED SYSTEMS
Anno accademico 2024/2025 - Docente: Giuseppe PAPPALARDORisultati di apprendimento attesi
Il corso di Web and Service Oriented Systems, con il modulo di Laboratorio integrato, mira a fornire i fondamenti concettuali di base e le capacità operative necessarie per lo sviluppo di applicazioni Web e, più in generale, distribuite. Verranno presentate le soluzioni architetturali tipiche, ovvero i paradigmi client-server, delle chiamate remote di procedura, del web dinamico, degli handler di richieste HTTP (servlet), il pattern MVC (Model-View-Controller) e le applicazioni Web basate su API REST. Le tecnologie di sviluppo presentate si basano sulle piattaforme C/Unix e Java e, per il Web, Java e PHP (con eventuali framework a corredo).
Obiettivi formativi generali in termini di risultati di apprendimento attesi
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 costruire un efficace bagaglio di competenze, necessarie per affrontare progettazione e sviluppo di sistemi distribuiti e applicazioni Web mediante le tecnologie correnti. Tali capacità saranno ulteriormente coltivate e potenziate grazie alle esercitazioni previste e nel modulo di laboratorio di questo corso.
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 delle applicazioni 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), anche al fine di applicare le informazioni acquisite in contesti concreti e di adeguare le proprie abilità a nuovi scenari applicativi o a un mutato contesto tecnologico.
Modalità di svolgimento dell'insegnamento
Lezioni ed esercitazioni si svolgono in aule-laboratorio, nelle quali gli studenti possono utilizzare i PC eventualmente disponibili o il proprio PC portatile. Le lezioni consistono prevalentemente in sessioni live, operate dal docente, di sviluppo di applicazioni distribuite e per il Web mediante le tecnologie presentate. Come cornice e guida di tali sessioni, vengono proiettate delle note, interamente condivise con gli studenti. Nelle esercitazioni, gli studenti sono vivamente incoraggiati a studiare, modificare ed innovare il materiale presentato dal docente durante le sessioni.
Per quanto le note delle lezioni non ambiscano a costituire un testo di riferimento, esse sono intese, oltre che ad agevolare la comprensione, a fornire un dettaglio puntuale del materiale presentato e della documentazione tecnica da consultare quale riferimento.
Il materiale didattico verrà distribuito di norma attraverso la piattaforma MS Teams d'ateneo, sul canale generale del team del corso (codice rmj14wq).
Avvisi ed altre comunicazioni avverranno sul canale Telegram ufficiale del corso, accessibile via https://t.me/+Ug5gTC7rgNrcd4p-
Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, assicurando comunque il rispetto del programma riportato nel syllabus.
Prerequisiti richiesti
- Capacità di pensare in termini algoritmici (corsi di Programmazione 1 e Programmazione 2)
- 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)
Frequenza lezioni
La frequenza è di norma obbligatoria.
Contenuti del corso
Verranno presentati, a livello di concetti, paradigmi e aspetti architetturali, gli argomenti elencati di seguito.
Si prega inoltre di tenere presente che le note del docente, pubblicate attraverso il portale Studium o il portale Teams d'ateneo documentano fedelmente e in dettaglio gli argomenti svolti e, di conseguenza, i contenuti del corso.
Applicazioni client-server basate su socket
- comunicazione connection-oriented e connectionless
- gestione della connessione
- semantica della comunicazione
- socket nel dominio internet (indirizzi IP e DNS)
- system call Unix e API Java
Applicazioni client-server basate su invocazioni remote di codice
- semantica dell'invocazione remota
- linguaggi IDL di descrizione dell'interfaccia
- generazione di stub per l'invocazione remota
- RPC e RMI
Architettura 3-tier per un sistema distribuito
- il tier 1: il browser cliente
- la business logic e il tier 2 (web/application server)
- il tier 3: il back-end database
Servlet e web application
- la classe HttpServlet come handler di richieste HTTP
- la API Servlet: principali metodi di gestione e configurazione
- gestione di Cookie e Sessioni
- struttura e principi fondativi di una Web Application
- IDE e servlet engine
Il Web dinamico con PHP: concetti e tecnologie
- Linguaggio e ambiente PHP
- principali funzioni PHP
- Web app in PHP
- Cookie e sessioni in PHP
Web services (WS) e REST
- Interfaccia al WS basata su URL e filosofia REST
- Un linguaggio di interscambio: JSON
- Java Spring Boot
Il pattern Model-View-Controller (MVC) per le Web application
- MVC e separazione dei concern
- il ruolo del cliente (browser): ricchi e poveri
- Laravel MVC
API HTTP
- clienti e framework Javascript
- clienti thin
Testi di riferimento
- Note del docente (pubblicate attraverso il portale Studium, il canale Teams del corso o GitHub, documentano puntualmente il materiale presentato)
- 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, Tutorial Jakarta EE
Programmazione del corso
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 Servlets | 1,4 |
10 | Web Application: principi e concetti | 1,4 |
11 | Web services: SOAP | 1 |
12 | Web services: REST con JSON | 1 |
13 | Sviluppo di API REST con Spring Boot | 1 |
14 | Sviluppo in PHP | 1 |
15 | Laravel MVC | 1 |
16 | Sviluppo di client per il web e API web | 1 |
Verifica dell'apprendimento
Modalità di verifica dell'apprendimento
Colloquio orale sugli argomenti del corso, a partire dalla correzione e discussione delle prove in laboratorio svolte e superate in precedenza.
La verifica dell’apprendimento potrà essere effettuata anche per via telematica, previa indicazione degli organi accademici preposti, qualora le condizioni lo dovessero richiedere.
Gli studenti con disabilità e/o DSA dovranno comunicare con sufficiente anticipo, al docente e al referente CInAP del DMI, che intendono sostenere l'esame fruendo delle opportune misure compensative.
Per l'attribuzione del voto si seguiranno di norma i seguenti criteri:
- Non approvato: lo studente non ha acquisito i concetti di base e non è in grado di risolvere semplici quesiti pratici.
- 18-20: lo studente dimostra una padronanza appena sufficiente dei concetti base, e/o riesce ad impostare le soluzioni dei quesiti pratici con molta difficoltà e vari errori.
- 21-24: lo studente dimostra una padronanza minima dei concetti di base, le sue capacità di collegamento dei contenuti sono modeste, riesce a risolvere semplici quesiti pratici.
- 25-27: lo studente dimostra una buona padronanza dei contenuti del corso, le sue capacità di collegamento dei contenuti sono buone, risolve i quesiti pratici con pochi errori.
- 28-30 e lode: lo studente ha acquisito tutti i contenuti del corso ed è in grado di padroneggiarli compiutamente e di collegarli con spirito critico; risolve i quesiti pratici in modo completo e senza errori di particolare rilievo.
Esempi di domande e/o esercizi frequenti
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 REST.
Formato di interscambio JSON.
Caratteristiche del linguaggio PHP.
Il pattern MVC nei framework Spring Boot e Laravel.