Ingegneria Del Software
Ingegneria Del Software
Autonomia di giudizio
Lo studente acquisirà le metodologie di progettazione, implementazione e
valutazione di architetture di sistemi informatici e analizzerà diversi casi di
studio. Sarà quindi in grado di analizzare i dati, anche limitati e incompleti, a sua
disposizione e proporre soluzioni progettistiche adeguate per problemi nuovi
integrando le conoscenze acquisite durante il corso. Sarà in grado di analizzare
pregi e difetti delle soluzioni proposte, attuare scelte risk-driven nella
pianificazione e attuazione del progetto e modellare un sistema informatico dai
requisiti fino alla implementazione, test e configurazione/installazione.
Per il raggiungimento di questo obiettivo il corso comprende: analisi e
discussioni su casi di studio; lezioni ed esercitazioni sulla progettazione,
implementazione e valutazione di architetture client- server; preparazione di un
progetto svolto autonomamente riguardante la progettazione e la realizzazione
di un sistema software.
Per la verifica di questo obiettivo l’esame comprende la discussione critica delle
tematiche teoriche svolte durante il corso; la discussione del progetto preparato
autonomamente riguardante la progettazione e la realizzazione di un sistema
software.
Abilità comunicative
Durante la prova orale lo studente dovrà dimostrare di saper comunicare con
competenza e proprietà di linguaggio le conoscenze acquisite riguardanti le
problematiche relative alla progettazione, implementazione e valutazione di
sistemi informatici. Per il raggiungimento di questo obiettivo, il corso comprende
esercitazioni sulla progettazione e implementazione di sistemi software e
presentazioni e discussioni in aula di progetti e implementazioni.
Per la verifica di questo obiettivo, l’esame comprende un colloquio orale sugli
argomenti del corso, la discussione su casi di studio, la presentazione di un
progetto preparato autonomamente riguardante la progettazione e la
realizzazione di un sistema software.
Capacità d’apprendimento
Lo studente sarà in grado di apprendere in autonomia le problematiche
specifiche relative alle basi di dati e alla progettazione e realizzazione del
software. Per il raggiungimento di questo obiettivo, il corso comprende
esercitazioni riguardanti l’implementazione di sistemi software e presentazioni in
aula di progetti e implementazioni.
Per la verifica di questo obiettivo, l’esame comprende una prova orale relativa
alle basi di dati e alla progettazione e realizzazione del software, nonché la
discussione di un progetto preparato autonomamente riguardante la
progettazione e la realizzazione di un sistema software.
VALUTAZIONE DELL'APPRENDIMENTO Prova orale con discussione sugli argomenti, sugli elaborati svolti durante le
esercitazioni e sui progetti individuali
OBIETTIVI FORMATIVI Il modulo si propone di fornire allo studente le conoscenze e competenze
necessarie per affrontare la progettazione di un sistema informatico. L’obiettivo
principale del corso è lo studio del processo di sviluppo del software (con
particolare riferimento ai software object-oriented). Verranno esaminate le
tecniche di raccolta dei requisiti, stesura delle specifiche, pianificazione,
progettazione, implementazione, testing, integrazione e manutenzione.
ORGANIZZAZIONE DELLA DIDATTICA Lezioni frontali, esercitazioni in aula, attività in laboratorio, Progetti individuali e
loro presentazione e discussione in aula.
TESTI CONSIGLIATI B. Bruegge, A. H. Dutoit. Object-Oriented Software Engineering: Using UML,
Patterns and Java. Third edition. International edition. ISBN: 0-13-606125-7.
Prentice Hall
Ian Sommerville Ingegneria del software 8/Ed. 2007 pp. 848 ISBN
9788871923543
M. Fowler. UML Distilled. Pearson
Jim Arlow, Ila Neustadt. UML2 e Unified Process - analisi e progettazione
Object Oriented, Addison-Wesley
PROGRAMMA
ORE Lezioni
2 Introduzione all’Ingegneria del Software.
Concetti di: progetto, attività, risorsa, task, workproduct, sistema, modello, documento, obiettivi (goal), requisiti,
vincoli, notazioni, metodi e metodologie
2 Le fasi principali dello sviluppo: raccolta requisiti, analisi dei requisiti, progetto di sistema, progetto esecutivo o
degli oggetti, implementazione, gestione del progetto, testing, ciclo di vita del software.
6 Introduzione all’UML, diagrammi dei casi d’uso, diagrammi delle classi, diagrammi di sequenza e
collaborazione.
Diagrammi di stato diagrammi di attività, diagrammi di dislocazione, organizzazione dei diagrammi, estensione
dei diagrammi, concetti di sistema, modello e vista.
Modellazione object-oriented.
6 Introduzione alla raccolta dei requisiti.
Concetti fondamentali: requisiti funzionali, requisiti non funzionali e pseudo-requisiti, livelli di descrizione.
Principali attributi delle specifiche (correttezza, completezza, …).
Classificazione delle attività di raccolta del requisiti.
6 Analisi dei requisiti:
Identificazione degli attori, degli scenari, dei casi d'uso, dei casi d'uso, delle relazioni tra attori e casi d'uso.
Identificazione degli oggetti d'analisi, identificazione dei requisiti non funzionali.
Modelli di analisi: funzionale, degli oggetti, dinamico.
Concetti di analisi: oggetti di tipo entità, di confine e di controllo.
Passaggio dai casi d’uso agli oggetti, identificazione degli oggetti entità, di confine, di controllo, modellazione
delle interazioni, identificazione delle associazioni e degli attributi, modellazione del comportamento degli
oggetti.
5 Progettazione di sistema.
Introduzione, concetti e attività principali.
Architetture software: client-server peer to peer, pipe and filter.
Attività della progettazione di sistema. Identificazione dei sottosistemi.
La mappatura dei sottosistemi su processori e componenti. La definizione dei depositi di dati. La definizione
dal controllo l'accesso.
La progettazione del flusso di controllo: procedure-driven, event-driven, threads. La progettazione delle
condizioni di confine.
4 Progettazione di dettaglio.
Introduzione, concetti della progettazione del modello ad oggetti.
Attività della progettazione del modello oggetti; oggetti d’analisi e oggetti della soluzione. Tipi, signature,
visibilità.
Contratti: invarianti, pre-condizioni, post-condizioni.
Object Constraint Language.
Identificazione degli attributi e delle operazioni mancanti; specifica di tipi, signature e visibilità.
Specifica dei vincoli (constraint), delle eccezioni; identificazione e adattamento delle librerie di classi;
realizzazione delle associazioni. Incrementare il riuso.
3 Testing.
Introduzione al testing; tecniche di controllo della qualità; tecniche per evitare guasti; tecniche per la scoperta
dei guasti tecniche per tollerare i guasti.
Concetti di test: componente, guasto, errore, malfunzionamento,test case, test stub/driver, correzione.
Attività di testing: ispezione dei componenti; unit testing; test di integrazione; test di sistema.
- test di integrazione: strategie del test di integrazione (big bang, bottom-up, top-down, sandwich, modified
sandwich).
- test di sistema: test funzionale, test di performance, test pilota (alpha test, beta test), test di accettazione e
test di installazione.
Pianificazione del test; documentazione del test.
PROGRAMMA
ORE Lezioni
3 Project Management.
Elementi fondamentali di project management
Caratteristiche fondamentali del progetto
Attività (ordinarie, di riepilogo, cardine). Struttura delle attività. Relazioni tra attività. Le risorse (il calendario, i
costi). I costi fissi del progetto. Le relazioni di progetto.
Il progetto iniziale.
Il progetto con previsioni.
Il progetto con variazioni.
ORE Esercitazioni
5 Esempi di raccolta, analisi e documentazione dei requisiti
Esempi di definizione e documentazione della progettazione di sistema e di dettaglio
Esempi definizione, pianificazione e documentazione dei casi di test
Esempi di project management
ORE Laboratori
12 Utilizzo di CASE tool per la modellazione UML.
Esempi ed esercizi di:
- raccolta e documentazione dei requisiti.
- analisi e documentazione dei requisiti.
- definizione e documentazione della progettazione di sistema.
- definizione e documentazione della progettazione di dettaglio.
- definizione, pianificazione e documentazione dei casi di test
- project management