|
PAOLO BURGIO
Ricercatore t.d. art. 24 c. 3 lett. B Dipartimento di Scienze Fisiche, Informatiche e Matematiche sede ex-Matematica
|
Insegnamento: Progetto del software
Informatica (Offerta formativa 2024)
Obiettivi formativi
Il corso intende fornire le conoscenze e gli strumenti metodologici per la progettazione di software di grandi dimensioni. A questo riguardo il corso prevede una prima parte relativa alla stesura dei requisiti, ed analisi/progettazione del sistema, attraverso strumenti come UML, kanban, Git.
Successivamente verranno introdotte ed ampliate alcune tecniche di ingegnerizzazione del software attraverso programmazione ad oggetti avanzata, e design pattern di progettazione. In seguito, si coprirà brevemente l’aspetto di validazione dei requisiti.
Infine, le tecniche viste nel corso verranno viste ed applicate nell’ambito di due ambiti, quello delle architetture cloud/a microservizi, e quello dei sistemi embedded.
Al termine del corso, lo studente sarà in grado di organizzare la progettazione di un software di medie/grandi dimensioni, e di seguire lo Stato Avanzamento Lavori (SLA) di esso. Avrà dimestichezza con i tool necessari e con le tecniche di progettazione allo stato dell’arte, e con le tecnologie più usate in ogni ambito applicativo.
Prerequisiti
- Programmazione ad oggetti
Programma del corso
Progettazione di alto livello (1 CFU)
- Stesura requisiti
- Creazione di un team di lavoro e strumenti collaborativi
Pratiche di sviluppo architetture SW (2.5 CFU)
- Design pattern e SOLID programming
- Rilascio del software e CI/CD
- Scrittura di documentazione, e commenti al codice
Paradigmi avanzati di programmazione (0.5 CFU)
Caso pratico sistemi ultra-scalabili (cloud) (1 CFU)
- Architetture a microservizi
- CLEAN code architecture
Caso pratico sistemi ultra-efficienti (embedded) (1 CFU)
- Automotive e sistemi safety/critical
Metodi didattici
Lezione frontale (4 CFU)
Esercitazioni in aula (1 CFU)
Progetti da svolgere a casa (1 CFU)
Testi di riferimento
TBD
Verifica dell'apprendimento
Esame scritto obbligatorio
-10 domande a risposta multipla, che assegnano 17-20 punti + due domande a risposta aperta per i rimanenti punti, per arrivare ad un totale di 30
- esame orale o progetto, facoltativi, che possono assegnare da -30 a +4 punti. Sono obbligatori se si cerca di ottenere la Lode
- chiunque abbia totalizzato almeno 9 punti nelle domande a crocette, e almeno 15 punti totali nello scritto, può sostenere l'orale per arrotondare il voto
- durante l'esame, non si richiederà di sviluppare codice; potrebbero tuttavia essere presenti degli snippet di codice da commentare
- un eventuale progetto è da concordarsi con il docente
I criteri di valutazione sono:
- Conoscenza della materia (55% della valutazione totale)
- Capacità comunicativa ed espressiva, e capacità di sintesi (35%)
- Capacità di uscire dagli schemi, trovando analogie e soluzioni originali a problemi non noti (10%)
Risultati attesi
Al termine del corso, lo studente/la studentessa sarà in grado di seguire il flusso di progettazione, implementazione e verifica di progetti software anche complessi, ed avrà le capacità per strutturare il lavoro di un team di ricerca.
Sarà inoltre capace di scegliere le metodologie e strumenti più adeguati al contesto applicativo, e al progetto che si intende sviluppare.
Di seguito la mappatura sui descrittori di Dublino delle competenze e modalità di valutazione del corso:
1) Conoscenza e capacità di comprensione: a seguito delle lezioni frontali, durante l'esame verrà validata la conoscenza dei vari argomenti del corso, e la loro comprensione. In tal senso, verrà verificata la conoscenza degli strumenti per progettare il software e per seguirne lo sviluppo.
2) Capacità di applicare conoscenza e comprensione: durante il corso, verrà dato ampio spazio ad esercitazioni pratiche, e verrà richiesto allo studente un minimo di lavoro ed applicazione a casa.
3) Autonomia di giudizio: verrà verificata attraverso interrogazioni dirette, durante le lezioni ed esercitazioni, su tematiche non ancora completamente esposte, per verificare il pensiero laterale, e le capacità deduttive dello studente.
4) Abilità comunicative: durante il corso, verrà dato ampio spazio sia ai commenti degli studenti sulle tematiche esposte, e sulla capacità di lavorare in gruppo durante le esercitazioni. Quest'ultimo aspetto verrà particolarmente incoraggiato e sostenuto tramite appositi strumenti. All’esame, verrà anche verificata la capacità di comunicare le conoscenze acquisite.
5) Capacità di apprendimento: durante il corso, verrà dato ampio spazio a momenti di verifica e confronto degli argomenti svolti, sia tramite domande dirette ("Me lo potete ri-spiegare voi?") che tramite momenti di esercitazione, che prevedono si sia acquisita una conoscenza approfondita della tematica trattata.