Nuova ricerca

Giacomo CABRI

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

Insegnamento: Metodologie di sviluppo software

Informatica (Offerta formativa 2024)

Obiettivi formativi

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

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 le tecniche di sviluppo.

Prerequisiti

Conoscenza di un linguaggio di programmazione (suggeriti Java o Python) 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
* Esempi di metodologie
Metodologie agili (3,5 CFU)
* Principi e tecniche agili
* Esempi di tecniche agili (TDD, pair-programming, refactoring)
* Metodologia Scrum
* Esempi di altre metodologie agili
Tecniche di stima dei progetti (1,5 CFU)
* COCOMO
* Putnam
* PERT/CPM

Metodi didattici

Lezioni frontali 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 tramite Moodle

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 per verificare la conoscenza delle metodologie, 1 domanda o esercizio sulle tecniche agili per verificare la capacità di metterle in pratica, 1 esercizio sulla stima dei progetti per verificare la capacità di applicare gli strumenti.
Ogni domanda ha lo stesso peso nel voto finale.
Potrà essere previsto un pre appello a fine lezioni.

Il voto varia da 18/30 (conoscenza basilare degli argomenti e capacità parziale di applicare la conoscenza) a 30/30 e lode (conoscenza piena degli argomenti e capacità ottima di applicare la conoscenza), graduazione dei voti intermedi in base al raggiungimento dei risultati di apprendimento attesi, compresi quelli trasversali dimostrati durante la prova d’esame.

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 le tecniche di sviluppo 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.