Nuova ricerca

Maurizio VINCINI

Professore Associato
Dipartimento di Ingegneria "Enzo Ferrari"

Insegnamento: Progettazione del Software

Ingegneria informatica (D.M.270/04) (Offerta formativa 2022)

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 a distanza in modo asincrono (registrate) a causa della situazione sanitaria COVID19.

Testi di riferimento

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.