|
Maurizio VINCINI
Professore Associato Dipartimento di Ingegneria "Enzo Ferrari"
|
Insegnamento: Progettazione del Software
Ingegneria informatica (Offerta formativa 2023)
Obiettivi formativi
Il corso intende fornire le conoscenze e gli strumenti metodologici per l'impostazione, l'organizzazione e la gestione di progetti software di grandi dimensioni. A questo riguardo il corso prevede una prima parte relativa alla gestione dei progetti, in particolare software, e la loro valutazione economica. Al riguardo verranno introdote le tecniche di rappresentazione dei processi aziendali. Successivamente vengono presentate tecniche legate all'economia dei progetti software, con stima dei tempi e dei costi ed analisi delle risorse da impiegare. Infine le metodologie più moderne di progettazione del software, con particolare attenzione per gli aspetti di efficienza e di qualità del risultato.
Prerequisiti
Nessuno
Programma del corso
Gestione di un progetto (2 CFU)
Tecniche di Project Management, analisi dei rishi, metodo EVA.
Rappresentazione dei processi attraverso BPMN
Economia di un progetto software. (4 CFU)
Fattibilità di un progetto software, metodo PERT-CPM. Classificazione delle tecniche di stima dei costi e dei tempi di un progetto.
Metodo di stima Function Point.
Metodo CoCoMo di Boehm (modello base, modello intermedio, cenni al modello dettagliato). Funzione costo di Norden e metodo analitico di Putnam. Le principali variabili di un progetto software. Progetto di piccole, medie e grandi dimensioni secondo Putnam. Curva di sviluppo e curva di progetto. Equazione del software. Software sizing per progetti nuovi e per rifacimenti. Studio del progetto tramite planning zone e punto di lavoro.
Metodi avanzati di progettazione del software. (3 CFU)
Il Processo Unificato (UP). Metodi agili di sviluppo del software e loro principali caratteristiche. Il metodo Agile e DevOps. Il metodo SCRUM. e il metodo Extreme Programming (XP).
Tecniche agili di sviluppo del software. Cross-functional team, time boxing, pair programming, test-driven development, code re-factoring. Confronto critico dei diversi approcci.
Metodi didattici
Il corso prevede lezioni teoriche, per introdurre alle problematiche della gestione dei progetti software, delle metodologie avanzate e delle tecniche di compilazione, ed esercitazioni, dedicate all’analisi di situazioni pratiche e alla definizione delle relative soluzioni.
Le lezione verranno svolte in aula, salvo diversa disposizione a causa della situazione sanitaria COVID19.
Testi di riferimento
Fare agile nel modo giusto. Per una trasformazione senza caos. Egea Editore – 22 ottobre 2020
di Darrell Rigby (Autore), Sarah Elk (Autore), Steve Berez (Autore), Marianna Grimaldi (Traduttore)
DevOps - Apogeo Editore – 12 settembre 2019
di Fabio Mora (Autore)
R. S. Pressman "Principi di Ingegneria del Software", McGraw-Hill, 2007.
J. Arlow, I. Neustadt "UML2 e Unified Process", Seconda Edizione, McGraw-Hill, 2006.
B. Londeix "Cost Estimation for Software Development", Addison-Wesley, 1987.
Dispense del docente su metodi e tecniche agili di progettazione e sviluppo del software
Verifica dell'apprendimento
L’esame consiste di una prova scritta della durata di due ore su tutti gli argomenti del corso.
Risultati attesi
Apprendimento del programma del corso.