L'esame è fatto di due parti:
esame scritto (max 15 punti): 1 ora con 3 domande su qualunque argomento del corso
progetto (max 15 punti): progetto di gruppo che dimostri le competenze acquisite
Per poter concludere l'esame e verbalizzare è obbligatorio che entrambe le parti siano consegnate entro la chiusura della sessione. Il progetto deve essere presentato nella stessa sessione, o in una precedente, in cui si sostiene lo scritto. Il progetto non può essere dunque presentato in una sessione successiva, pena la perdita del voto allo scritto. Unica eccezione a questa regola è il primo appello in cui è consentito presentare il progetto entro e non oltre la seconda sessione.
Il progetto consiste nella realizzazione di un servizio REST accessibile via Web. L'obiettivo del progetto è dimostrare che siete in grado di integrare le varie tecnologie di rete viste nel corso. In quest'ottica un front-end ben fatto è molto ben accetto, ma non è un requisito di progetto. Una base di dati mirabolante è molto ben accetta, ma non è un requisito di progetto. Un fantastico algoritmo di classificazione è molto ben accetto, ma non è un requisito di progetto. Le scelte devono essere motivate e non strumentali (e.g. "l'ho fatto perché era un requisito"). Il progetto in altre parole deve avere un senso e deve essere armonico.
Qualunque
I gruppi sono fatti di 3 persone. In casi eccezionali si può violare questo vincolo. Chiaramente più è numeroso il gruppo più deve essere sostanzioso il progetto. La formazione dei gruppi e il link alla repository github dove il progetto sarà ospitato devono essere comunicate con modalità da definirsi
Per persone che abbiano seguito e sperimentato durante le lezioni pratiche, 5 giorni al 50% per un gruppo di 3 persone, cioè 7.5 giorni uomo
Il servizio REST che implementate (lo chiameremo SERV) deve offrire a terze parti delle API documentate
SERV si deve interfacciare con almeno due servizi REST di terze parti (e.g. google maps)
Almeno uno dei servizi REST esterni deve essere “commerciale” (es: twitter, google, facebook, pubnub, parse, firbase etc)
Almeno uno dei servizi REST esterni deve richiedere oauth (e.g. google calendar), Non è sufficiente usare oauth solo per verificare le credenziali è necessario accedere al servizio
La soluzione deve prevedere l'uso di protocolli asincroni. Per esempio Websocket e/o AMQP (o simili es MQTT)
Il progetto deve prevedere l'uso di Docker e l'automazione del processo di lancio, configurazione e test
Il progetto deve essere su GIT (GITHUB, GITLAB ...) e documentato don un README che illustri almeno
scopo del progetto
architettura di riferimento e tecnologie usate (con un diagramma)
chiare indicazioni sul soddisfacimento dei requisiti
istruzioni per l'installazione
istruzioni per il test
Documentazione delle API fornite per esempio con APIDOC
Deve essere implementata una forma di CI/CD per esempio con le Github Actions
Requisiti minimi di sicurezza devono essere considerati e documentati. Self-signed certificate sono più che sufficienti per gli scopi del progetto.