Nuova ricerca

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.