Docente
|
BOTTONI PAOLO GASPARE
(programma)
L'insegnamento mira a illustrare i fondamenti delle metodologie e degli strumenti per la gestione dei processi software. Particolare attenzione viene dedicata alle metodologie di analisi e progettazione orientate agli oggetti, e alla loro gestione e documentazione mediante UML. Il lavoro necessario per sostenere l'esame prevede la stesura, in gruppo, di un progetto per un sistema informativo di medie dimensioni.
L'insegnamento è fondamentalmente strutturato in tre parti: introduzione agli approcci all'ingegneria del software e al ciclo di vita del software, approfondimento sulle attività di specifica, analisi, progetto e test di sistemi software, tecniche per la gestione dei processi, con particolare riferimento alla gestione della qualità e dei rischi e all'analisi dei costi.
Nel dettaglio:
La prima parte si compone dei seguenti moduli:
1. Introduzione all’Ingegneria del Software
a. Introdurre Ingegneria del Software (SE) e spiegarne importanza
b. Dare risposte a questioni chiave su SE
c. Cenni sulla professione
d. Presentare alcuni casi studio
2. Principi dell’Ingegneria del Software
a. Mostrare principi base per metodi, tecniche, metodologie e strumenti
b. Illustrare principi usabili in ogni fase sviluppo software
c. Evidenziare modularità come principio fondamentale per progetto software
3. Processi software
a. Introdurre modelli di processo software
b. Descrivere attività tipiche di processo
c. Descrivere approcci a:
i. Gestione cambiamento
ii. Miglioramento processi
4. Sviluppo rapido e metodi agili
a. Discutere approcci prototipali e di sviluppo rapido
b. Discutere essenza di metodi di sviluppo agili
c. Discutere metodi di gestione di processi agili
d. Spiegare ruolo prototipazione in processo software
5. Introduzione allo Unified Process
a. Discutere UP come metodo strutturato
i. Organizzato in fasi e attività
ii. Guidato dai casi d’uso
iii. Centrato sull’architettura
iv. Focalizzato sui rischi
La seconda parte si compone dei seguenti moduli
6. Ingegneria dei Requisiti
a. Descrivere attività di ingegneria requisiti
b. Introdurre tecniche di estrazione e analisi requisiti
c. Introdurre concetti di requisiti utente e sistema
d. Descrivere requisiti funzionali e non-funzionali
e. Fornire indicazioni su scrittura dei requisiti
f. Discutere validazione e cambiamento di requisiti
7. Modellazione di sistema e UML
a. Introdurre tipi di modelli di sistema
b. Descrivere modellazione comportamentale, dei dati, e degli oggetti
c. Introdurre alcune notazioni usate in Unified Modeling Language (UML)
8. Dall'analisi al progetto
a. Da modello dei casi d’uso a modello di analisi
b. Da modello di analisi a modello di progetto
c. Tracciabilità
d. Ruolo delle interfacce
e. Diagrammi di collaborazione
9. Progetto Architetturale
a. Introdurre importanza progetto architetturale.
b. Spiegare decisioni di progetto architetturale.
c. Illustrare alcune architetture di applicazione.
d. Illustrare alcune architetture distribuite.
e. Discutere architetture di riferimento per comunicare e confrontare architetture.
10. Testing
a. Discutere differenze fra prove di validazione e prove di difetti
b. Descrivere principi di prove di sistema e di componente
c. Descrivere strategie per generare casi di prova di sistema
d. Comprendere caratteristiche essenziali di strumenti usati per automazione prove
11. Design Pattern
a. Introdurre il concetto di Pattern di Progetto
b. Illustrare alcuni pattern significativi
c. Mostrarne la specifica originale
d. Introdurre una notazione per variabilità
La terza parte si compone dei seguenti moduli:
12. Gestione del progetto – Pianificazione
a. Spiegare compiti principali gestori di progetto
b. Introdurre gestione progetto software
c. Discutere processo pianificazione progetto
d. Mostrare rappresentazioni grafiche temporizzazioni
13. Gestione del progetto: Rischi e garanzia di qualità
a. Discutere rischio e processo di gestione rischio
i. Modellazione dell’impatto
ii. Schede di rischio
b. Discutere approccio alla qualità
i. Costo degli errori
ii. Gestione della configurazione
Ogni modulo è in media coperto in due lezioni (per complessive 5 ore circa), con il modulo relativo a Modellazione di sistema e UML che richiede un tempo maggiore (10 ore circa), essendo integrato con dimostrazioni pratiche di utilizzo di uno strumento di modellazione e i moduli introduttivi coperti tipicamente in una lezione (2,5 ore).
Ian Sommerville, Software Engineering, 10th Edition, Pearson, 2016 (edizione italiana 2017)
|