Programma del corso - Laboratorio di Ingegneria del Software

LDenominazione dell’insegnamento: Ingegneria del Software
CFU: 5
Settore Scientifico Disciplinare: ING-INF/05
Collocazione: 3 anno, 1° periodo
Propedeuticità: Tutti gli esami del biennio
Obiettivi del corso: Il modulo introduce le problematiche di analisi, progetto, implementazione e
collaudo di sistemi software orientati agli oggetti, utilizzando UML come linguaggio di modellazione
e Java come linguaggio di implementazione. Come ausilio alle attività di sviluppo si propongono i
pattern di progetto della “Gang-of-Four”, pattern per la concorrenza e per le applicazioni su rete. Il
modulo introduce altresì il progetto rigoroso di classi basato sul “Design-by-Contract” utilizzato
anche come guida alla fase di testing.
N° di ore di lezione: 32
N° di ore di esercitazione: 12
N° di ore di laboratorio (specificare attività):
Argomenti delle lezioni:
ore:
2
Concetti Introduttivi
Processo di produzione del software. Parametri di qualità. Fasi del ciclo di vita. Processo a
cascata. Limitazioni. Processi iterativi e incrementali.
12
UML
Analisi e progetto di sistemi software ad oggetti. Il linguaggio di modellazione UML.
Aspetti strutturali. Diagramma delle classi. Classi e oggetti. Stereotipi. Classi astratte e
interfacce. Relazioni tra classi. Ruoli e molteplicità. Oggetti associativi. Aggregazione e
composizione. Generalizzazione. Implementazione di interfacce. Invio di messaggi.
Diagrammi di collaborazione tra oggetti. Diagrammi di sequenza. Messaggi sincroni e
asincroni. Notifica di eventi e callback. Aspetti comportamentali. Diagrammi di stato di
oggetti. Stati, eventi, transizioni e azioni. Gerarchie di stati. Transizioni di gruppo.
Transizioni su memoria superficiale e profonda. Cenni agli stati concorrenti e punti di
sincronizzazione. Diagrammi di attività. Diagrammi di casi d’uso. Utilizzo di casi d’uso per
pianificare i test e come ausilio nella fase di identificazione delle classi di un progetto.
Attribuzione delle responsabilità (metodi) alle classi assistita dai diagrammi di
collaborazione e sequenza. Oggetti attivi e thread. Sviluppo di semplici progetti con UML e
loro implementazione in Java. Strumenti CASE di supporto, es. Poseidon Community
Edition. Cenni al processo unificato.
12
Design Pattern
Progettare per il cambiamento. Principi open/closed, low coupling, high cohesion. Schemi
risolutivi di sottoproblemi ricorrenti. Principali pattern della “Gang-of-Four” modellati in
UML e implementati in Java: ADAPTER, FACADE, PROXY, FACTORY, SINGLETON, STRATEGY,
OBSERVER, STATE, COMPOSITE, BUILDER, VISITOR, FLYWEIGHT, COMMAND, CHAIN OF
RESPONSIBILITY, TEMPLATE METHOD, ITERATOR, BRIDGE, MEDIATOR, MEMENTO. Pattern
per sistemi concorrenti. Stili architetturali per sistemi distribuiti.
6
Progetto rigoroso di classi e fase di testing
Sostituibilità dei tipi in una gerarchia di inheritance. Il Design-by-Contract. Invariante di
classe. Pre/post condizioni sui metodi. Formule di correttezza di Hoare. Vincoli/benefici sul
cliente e sull’implementatore di una classe. Uno schema di riferimento per il supporto di
Design-by-Contract in Java. Fase di testing. Testing di unità. JUnit.
Totale ore lezione: 32
Argomenti delle esercitazioni:
ore:
•
Sviluppo di semplici progetti didattici basati su UML, sui Design Patterns e sul Design- 12
by-Contract. Organizzazione della fase di testing.
Totale ore esercitazione: 12
Modalità di svolgimento delle lezioni:
In aula, con metodologie tradizionali e con l’uso di trasparenze e proiettore collegato al PC.
Modalità di svolgimento delle esercitazioni:
In aula, con metodologie tradizionali e proiettore collegato al PC.
Modalità di svolgimento dell’esame:
L’esame consiste nella verifica e correzione di progetti didattici assegnati durante le lezioni, nello
sviluppo completo di un progetto finale individuale, e in una prova orale obbligatoria.
Matriali didattici:
L. Nigro, Appunti dalle lezioni di Ingegneria del Software.
A. Binato, A. Fuggetta, L. Sfardini, Ingegneria del Software-Creatività e metodo. Pearson Education
Italia S.r.l., 2006
L. Baresi, L. Lavazza, M. Pianciamore, Dall’idea al codice con UML 2, Pearson-Education Italia
S.r.l., 2006
M. Grand, Patterns in Java: A catalog of reusable design patterns illustrated by UML, Vol. 1, Wiley
Testi suggeriti per la consultazione:
S. Bennet, J. Skelton, K. Lunn, Introduzione a UML, McGraw-Hill, Collana Schaum’s.
S.J. Metsker, Design Patterns Java Workbook, Addison-Wesley.
B. Meyer, Object Oriented Software Construction, 2nd Edition, Prentice-Hall
E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns: Elementi per il riuso di software a
oggetti, Addison-Wesley
C. Ghezzi et al., Ingegneria del Software, 2/E, Pearson-Education Italia S.r.l.