Ing Ind - Inf (1 liv.)(ord. 270) - MI (358) INGEGNERIA INFORMATICA
I1A
A
ZZZZ
085879 - TECNOLOGIE INFORMATICHE PER IL WEB
I3I
A
ZZZZ
085879 - TECNOLOGIE INFORMATICHE PER IL WEB
II3
A
ZZZZ
085879 - TECNOLOGIE INFORMATICHE PER IL WEB
Ing Ind - Inf (Mag.)(ord. 270) - MI (481) COMPUTER SCIENCE AND ENGINEERING - INGEGNERIA INFORMATICA
*
A
ZZZZ
085879 - TECNOLOGIE INFORMATICHE PER IL WEB
Obiettivi dell'insegnamento
Il web è una piattaforma tecnologica fondamentale per lo sviluppo di applicazioni accessibile da rete fissa o mobile. Il corso ha come scopo di descrivere l’architettura del web dal punto di vista dei protocolli (HTTP), dei formati di descrizione e presentazione dei contenuti (HTML e CSS) e dei linguaggi e ambienti di programmazione (Java Servlet, Java Server Pages e Javascript).
Risultati di apprendimento attesi
Descrittori di Dublino
Risultati di apprendimento attesi
Conoscenza e comprensione
Lo studente apprenderà:
Gli standard tecnologici alla base del web
Gli elementi che costituiscono l’architettura di un’applicazione web
Le tecniche di progettazione delle applicazioni web
I linguaggi e gli ambienti di programmazione (framework) per applicazioni web, a lato client e a lato server
Gli aspetti di base per la sicurezza e la scalabilità delle applicazioni web
Capacità di applicare conoscenza e comprensione
Attraverso le esercitazioni lo studente acquisisce la capacità di:
· Analizzare i requisiti funzionali e non funzionali di un’applicazione web
· Progettare i dati per un’applicazione web
· Progettare l’architettura client e server di un’applicazione web
· Programmare i componenti client e server di un’applicazione web, con Java servlet, Java Server Pages, JavaScript, HTML e CSS
· Migliorare le prestazioni e la sicurezza di un’applicazione web
Autonomia di giudizio
A seguito del superamento dell’esame lo studente è in grado di:
· Valutare soluzioni alternative per la costruzione dell’architettura di un’applicazione web
· Scegliere tra diverse tecniche di realizzazione delle funzionalità client e server di un’applicazione web
Comunicazione
· Documentare lo sviluppo di un’applicazione web
· Motivare le proprie scelte progettuali a fronte di esemi di requisiti
Capacità di apprendimento
Gli studenti impareranno a
· sviluppare un‘applicazione web di media complessità
· confrontare schemi progettuali alternativi
· scegliere tra diverse opzioni tecnologiche in base ai requisiti dell’applicazione e del processo di sviluppo
Argomenti trattati
Introduzione al corso: obiettivi, prerequisiti, valutazione
Elementi fondanti del World Wide Web
Breve storia del web
HyperText Transfer Protocol (HTTP)
Storia e versioni
Gli attori di HTTP: origin server, user agent, proxy, gateway
Identificazione delle risorse, formato delle e delle risposte
Principali header HTTP
La sicurezza in HTTP
Caratteristiche avanzate: connessioni persistenti, tunnel, trasferimento a blocchi, negoziazione del contenuto e gestione della cache
Limitazioni di HTTP per lo sviluppo di applicazioni interattive
HyperText Markup Language (HTML)
Storia e versioni
Il concetto di markup
Architettura del browser
Struttura e contenuto del documento
Elementi strutturali, multimedia, navigazione ipertestuale, tabelle e form
Valutazione critica di HTML, il problema della separazione degli aspetti
Dynamic HTML, XTML
Confronto tra HTML e XML
La presentazione
Elementi definiti dall’utente con i tag DIV e SPAN e l’attributo class
Cascading Style Sheet
Storia e versioni
Definizione dei file di stile e formato delle regole
Sintassi della selezione
Motore grafico del browser e principali proprietà CSS
Esecuzione delle regole CSS: specificità, ereditarietà, cascata, default del browser, regole composte
Architetture per la generazione dinamica dei contenuti
Storia ed evoluzione delle tecnologie per i gateway
Web statico e web dinamico, limiti di HTTP per lo sviluppo di applicazioni dinamiche e interattive
Creazione dinamica dei contenuti: passaggio parametri e tipizzazione dei dati in HTTP; query string e request body; differenza tra metodo GET e POST; Common Gateway Interface; variabili d’ambiente CGI; struttura di un programma CGI; modello di esecuzione dei programmi CGI; valutazione critica di CGI
Creazione dinamica dei contenuti con application server Java: architettura di Java Servlet, nozione di contenitore e di programmazione all’interno di un ambiente gestito (framework); modello di esecuzione delle servlet, concorrenza e sincronizzazione; sintassi e interfaccia di una servlet, ciclo di vita delle servlet; configurazione e rilascio di un’applicazione servlet.
Personalizzazione delle applicazioni web: nozioni preliminari: pseudo identificazione, identificazione, autenticazione, autorizzazione, controllo basato sui ruoli dell’accesso. Tecniche di pseudo-identificazione basate su HTTP header (cookie), URL e form. Gestione della sessione. Metodi delle servlet per la personalizzazione.
Connessione tra basi di dati e web: modellazione dei dati per il web; virtualizzazione del database con JDBC; uso della connessione al database nelle servlet; principali problemi di scalabilità e sicurezza.
Programmazione della presentazione mediante template; requisiti di modularizzazione del codice; il concetto di template a lato server; Java Server Pages: sintassi, ciclo di vita e modello di esecuzione. Separazione del database mediante oggetti (Java Bean). Regole di buona progettazione di un’applicazione web con servlet, JSP e Java Bean. Casi di studio.
Programmazione web a lato client
Storia ed evoluzione delle tecnologie per Rich Internet Application
Scripting a lato client, definizione e differenze con scripting a lato server
Il linguaggio JavaScript: sintassi; tipi di dati e istruzioni; strutture dati; regole di tipizzazione debole; oggetti e prototipi; funzioni come oggetti; regole di visibilità e durata; concetto di chiusura e callback.
Programmazione nel browser con JavaScript: il modello di esecuzione dei programmi nel browser; elementi principali: window, document, element; Document Object Model; programmazione delle form; eventi; definizione, registrazione e modello di esecuzione; gli eventi HTML DOM. Realizzazione di applicazioni con chiamate asincrone al server: AJAX e oggetto XMLHttpRequest; Regole di buona progettazione di un’applicazione web con scripting a lato client.
HTML 5
Panoramica di HTML 5: nuovi elementi, grafica vettoriale, multimedialità. Nuove interfacce con il browser: geo-localizzazione, persistenza a lato client, comunicazione TCP-IP
Elementi di base di progettazione e verifica delle architetture web
Architetture: server singolo, data server, 3 tier, application server. Scalabilità orizzontale e verticale. Gestione dei guasti e persistenza delle sessioni. Protezione del data server. Web caching. Elementi di base e strumenti per la verifica funzionale e delle prestazioni di applicazioni web.
Prerequisiti
Lo studente deve conoscere i fondamenti della programmazione imperativa 8con linguaggi quali C) e della programmazione ad oggetti (con linguaggi come C++ o Java). Deve inoltre conoscere i fondamenti della progettazione concettuale e logica delle basi di dati con Entità-Relazione e modello relazionale e sapere programmare interrogazioni e aggiornamenti con il linguaggio SQL.
Modalità di valutazione
La valutazione si baserà su una prova scritta e una discussione orale (opzionale) sul contenuto della prova e sugli argomenti del corso.
La tabella seguente descrive in maggior dettaglio gli elementi della valutazione.
Modalità di verifica
Descrizione
Risultato di apprendimento perseguito (descrittore di Dublino)
Prova scritta
Soluzione di problemi numerici
Analisi semantica di esempi di programmi con regole CSS
Esercizi di progettazione
· Progettazione di componenti server side in Java Servlet/JSP
· Progettazione di componenti client side in JavaScript
1,2
1, 2, 3, 4, 5
Orale
L'orale (opzionale) prevede la discussione sulla logica di progettazione e sulle tecnologie e soluzioni adottate a fronte di esempi di requisiti applicativi