Obiettivi formativi
Ingegneria del Software
Il corso si propone di fornire una conoscenza approfondita delle metodologie e delle tecniche di sviluppo software, del linguaggio di programmazione Java e degli strumenti che possono semplificare lo sviluppo e la gestione dei sistemi software. Inoltre, il corso si propone di fornire la capacità di utilizzare le conoscenze acquisite e l'esperienza accumulata durante le esercitazioni per identificare le migliori soluzioni di progettazione di sistemi software e per realizzare implementazioni soddisfacenti sia in termini di qualità dei sistemi realizzati che di costo di sviluppo.
Prerequisiti
Ingegneria del Software
Fondamenti di informatica, Fondamenti di programmazione.
Contenuti dell'insegnamento
Ingegneria del Software
Il corso presenta le principali tecniche e metodologie per lo sviluppo di sistemi software, con particolare riferimento ai sistemi orientati agli oggetti, e introduce il linguaggio di programmazione Java. In particolare, il corso affronta i seguenti argomenti:
Introduzione
Processi e modelli di sviluppo
Ingegneria dei Requisiti
Progettazione
Implementazione e il testing
Installazione e manutenzione
Gestione dei progetti
Java
Tecnologie Internet
1. Tecnologie Web
2. Cybersecurity
Programma esteso
Ingegneria del Software
Processi e modelli di sviluppo
- Processi di sviluppo del software
- Modelli per lo sviluppo del software
- UML
Ingegneria dei Requisiti
- Introduzione
- UML e OCL per l'ingegneria dei requisiti
- Raccolta dei requisiti
- Analisi dei requisiti
- Valutazione e gestione dei requisiti
Progettazione
- Processo di progettazione
- Principi di progettazione
- Progettazione architetturale - Progettazione interfacce utente
- Software Pattern
- Progettazione orientata agli oggetti
Implementazione e il test
- Implementazione del software
- Test del software
Installazione e manutenzione
- Installazione del software
- Manutenzione del software
Gestione dei progetti
Java
- Introduzione
- Classi e interfacce
- Eccezioni
- Input e output
- Tipi generici
- Collezioni di oggetti
- Interfacce grafiche
- Programmazione funzionale
- Programmazione riflessiva e concorrente
Tecnologie Internet
1. Tecnologie Web (24 ore) - HTML; CSS; XML; JSON; JavaScript: basi del linguaggio, Node.js, window object, DOM, eventi, AJAX, JQuery, storage, scripted graphics, tool di sviluppo, React.
2. Cybersecurity (24 ore) - Concetti generali di sicurezza informatica; Crittografia a chiave simmetrica; Funzioni di hash crittografiche; MAC; Crittografia a chiave pubblica; Firme digitali; Distribuzione di chiavi crittografiche; Autenticazione utente; TLS e HTTPS; Quantum Internet e crittografia quantistica.
Bibliografia
Ingegneria del Software
Ian Sommerville. Ingegneria del Software, 10/ed, Pearson Education, 2017.
Tecnologie Internet
M. Amoretti, dispense in inglese sugli argomenti del corso.
J. Kurose, K. Ross, "Computer Networking: A Top Down Approach", ed. Addison-Wesley, 2016.
D. Flanagan, "JavaScript - The Definitive Guide", ed. O’Reilly, 2020.
W. Stallings, "Cryptography and Network Security: Principles and Practice", 7th edition, 2017.
Metodi didattici
Ingegneria del Software
Il corso si basa su lezioni teoriche ed esercitazioni in laboratorio. In particolare, le attività di laboratorio, saranno dedicate allo sviluppo di alcune applicazioni e sistemi software utilizzando il linguaggio Java e gli strumenti presentati durante il corso. In queste attività, gli studenti opereranno individualmente o a coppie, chiaramente sotto la guida e con il supporto del docente del corso e senza precludere positive interazioni tra gli studenti. Le slide utilizzate a supporto delle lezioni verranno caricate sulla piattaforma Elly prima di ogni lezione e per ogni lezione verrà fornita una dispensa. Per scaricare le slide è necessaria l’iscrizione al corso on line. Le slide vengono considerate parte integrante del materiale didattico. Quindi gli studenti non frequentanti devono controllare il materiale didattico e le indicazioni fornite dal docente disponibili sulla piattaforma Elly.
Tecnologie Internet
Le lezioni si svolgeranno in presenza.
Il docente spiegherà gli argomenti mostrando delle slide.
Alcune ore saranno dedicate ad esercitazioni pratiche sullo sviluppo di software.
Il materiale didattico (comprendente slide, dispense, codice sorgente, articoli scientifici) verrà caricato sulla piattaforma Elly.
Si ricorda agli studenti non frequentanti di controllare il materiale didattico disponibile e le indicazioni fornite dal docente tramite la piattaforma Elly.
Modalità verifica apprendimento
Ingegneria del Software
Sono previste delle prove scritte e delle prove pratiche. Le prove scritte si basano su domande a risposte aperte sulla teoria a cui rispondere senza l'aiuto di appunti e libri. Queste domande hanno lo scopo di valutare la conoscenza acquisita sugli argomenti discussi durante il corso. La prova pratica consiste nello sviluppo di un sistema software e può essere svolta dagli studenti in modo individuale o in gruppi con massimo 2 persone. Questa prova ha lo scopo principale di valutare la capacità di applicare la conoscenza acquisita durante il corso. Inoltre, la valutazione della prova dipenderà dalla qualità del sistema sviluppato, della relativa documentazione e della presentazione orale (con l’uso di slide) del sistema. La durata della prova scritta è pari a 1 ora e trenta minuti e la prova è valutata con scala 0-30. L’esame è superato se il risultato delle prove è maggiore o uguale a 18. Il voto finale è uguale alla media aritmetica dei voti delle prove. La lode può essere assegnata nel caso del raggiungimento del massimo punteggio su tutte le prove.
Tecnologie Internet
La valutazione dell’apprendimento prevede due momenti:
1) una prova scritta della durata di 1 ora, articolata su domande aperte relative alla parte di Cybersecurity;
2) un progetto di sviluppo software basato sulle tecnologie illustrate nella parte 1 del programma; è prevista la stesura di una breve relazione e la presentazione orale del lavoro svolto.
Laprova scritta è valutata con scala 0-30. Il progetto è valutato con scala 0-30. I punteggi vengono mediati a formare il voto finale.
E’ prevista una prova scritta in itinere equivalente al momento 1) della valutazione dell’apprendimento, quindi relativa alla parte di cybersecurity.
Altre informazioni
- - -
Obiettivi agenda 2030 per lo sviluppo sostenibile
- - -