Nuova ricerca

Giacomo CABRI

Professore Ordinario
Dipartimento di Scienze Fisiche, Informatiche e Matematiche sede ex-Matematica

Insegnamento: Metodologie di sviluppo software

Informatica (Offerta formativa 2022)

Obiettivi formativi

Gli obiettivi dell'insegnamento sono:
- Presentare i modelli di sviluppo del software e i concetti di gestione dei progetti
- Presentare alcuni esempi di metodologie
- Presentare strumenti per stimare i costi dei progetti software
- Presentare i pattern architetturali

Al termine dell’insegnamento lo studente dovrebbe essere in grado di:
- sviluppare un progetto software applicando una metodologia;
- stimare i tempi e i costi di sviluppo di un progetto software;
- applicare i design pattern.

Prerequisiti

Conoscenza di un linguaggio di programmazione e dei linguaggi di modellazione del software.

Programma del corso

Modelli e metodologie di sviluppo software (1 CFU)
* Modello a cascata
* Modello evolutivo
* Modello incrementale
* Modello a spirale
* Esempi di metodologie
Metodologie agili (2 CFU)
* Principi e tecniche agili
* Esempi di metodologie agili
Tecniche di stima dei progetti (1,5 CFU)
* COCOMO
* Putnam
* PERT/CPM
Design pattern (1,5 CFU)
* Pattern creazionali
* Pattern strutturali
* Pattern comportamentali

Metodi didattici

Lezioni frontali tramite slide sulla teoria (4 CFU) ed esercitazioni in aula di applicazione della teoria (2 CFU).
La frequenza non e' obbligatoria.
L'insegnamento e' in italiano ma il materiale e' in inglese.
Gli studenti non frequentanti possono accedere alle slide delle lezioni e al materiale delle esercitazioni.

Testi di riferimento

Slide presentate a lezione messe a disposizione all'inizio dell'insegnamento.

Libri consigliati:
- C. Ghezzi, D. Mandrioli, M. Jazayeri. Ingegneria del Software (2/Ed.). Pearson Education Italia
- E. Gamma, R. Helm, R. Johnson, J. Vlissides. Design Patterns. Pearson
- Eric Freeman, Elisabeth Robson. Head First Design Patterns. O'Reilly Media
- Ian Sommerville. Ingegneria del software. Pearson

Verifica dell'apprendimento

La verifica consisterà in una prova orale atta a verificare la comprensione dei contenuti di tutto il programma svolto e la capacità di applicare le tecniche di stima dei progetti.
Orientativamente sarà della durata di 30 minuti e prevederà 1 domanda sulle metodologie o 1 esercizio sulle tecniche agili, 1 esercizio sulla stima dei progetti e 1 domanda sui design pattern.
Ogni domanda ha lo stesso peso nel voto finale.
Potrà essere previsto un pre appello a fine lezioni.

Risultati attesi

Conoscenza e comprensione
Lo studente conoscerà metodologie e architetture software per sviluppare sistemi software.
Lo studente conoscerà le tecniche di stima dei progetti software.

Capacità di applicare conoscenza e comprensione
Lo studente avrà la capacità di:
- applicare metodologie per progettare, sviluppare e testare applicazioni software;
- stimare i costi e i tempi di progetti software;
- applicare design pattern per definire architetture software.

Autonomia di giudizio
Lo studente avrà la capacità di giudicare le tecniche e le metodologie software più adatte a ogni contesto, valutando le possibili alternative;

Abilità comunicative
Lo studente avrà la capacità di comunicare le scelte tecnologiche fatte.

Capacità di apprendimento
Lo studente avrà la capacità di:
- valutare la propria preparazione in relazione allo stato dell'arte delle metodologie di sviluppo;
- individuare le competenze mancanti per affrontare il lavoro che gli viene proposto;
- fare formazione continua per colmare le lacune e mantenersi aggiornato;

- sfruttare le fonti appropriate;

- affrontare problemi sempre nuovi con un approccio scientifico e metodologico.