Programma del corso - SisInfLab

Transcript

Programma del corso - SisInfLab
POLITECNICO DI BARI
1° Facoltà di Ingegneria
Corso di Laurea Specialistica in INGEGNERIA INFORMATICA
Programma del corso di
Ingegneria del Software
Anno accademico 2008-2009
Docente: Ing. Eufemia Tinelli
Introduzione
Il software e l’ingegneria del software
Definizioni. Stato dell’ingegneria del software. L’evoluzione del ruolo del software.
Il processo di sviluppo del software
Prodotto e processo. Modelli di processo. Modelli a processo prescrittivo. Modelli iterativi e
modelli incrementali. Il Processo Unificato. Sviluppo agile. Fasi del ciclo di vita del software.
Approcci allo sviluppo del software: approccio strutturato, approccio orientato agli oggetti.
Produzione di un sistema software
Ingegneria dei Requisiti
Raccolta dei requisiti. Negoziazione e validazione dei requisiti.. Modellazione dei requisiti:
requisiti utente e di sistema, requisiti funzionali e non funzionali, requisiti di dominio, requisiti di
interfaccia, requisiti informativi. Matrice di tracciabilità dei requisiti. Documento di Specifica dei
requisiti.
L’analisi
Analisi di dominio. Modelli di sistema. Linguaggi di specifica: formali e semi-formali. Diagramma
delle classi di analisi. Class Discovery. Documentazione di analisi.
UML ed il Processo Unificato.
Introduzione: Viste di UML e diagrammi UML 2.x
Modellazione dei casi d’uso: attori, casi d’uso, diagramma dei casi d’uso, documentare i casi
d’uso: scenari base e scenari alternativi, realizzazione di un caso d’uso.
Diagramma delle classi: classi, oggetti, attributi e metodi, associazioni, molteplicità e navigabilità,
associazioni riflessive, associazioni qualificate, aggregazioni/composizioni, generalizzazioni,
ereditarietà semplice e multipla, polimorfismo, overriding ed overloading, classi associative, classi
contenitore, classi astratte, interfacce, relazioni di dipendenza, Specifiche delle Classi, esempi di
implementazione in Java.
Diagrammi comportamentali: diagramma di attività, segnali, eventi, stati e transizioni, diagrammi
di stato, diagramma di collaborazione, diagramma di sequenza.
Diagrammi implementativi: componenti e interfacce, diagramma dei componenti, Diagramma di
Struttura composita, nodi, artifacts, forma descrittore e forma istanza, Diagramma di Deployment.
La progettazione
Progettazione Object-Oriented: principi e tecniche, incapsulamento, modularità, progettare per
interfacce, coesione ed interdipendenza, sottosistemi e package, strategie di riuso: ereditarietà e
aggregazione, riuso di librerie di classi, riuso di framework, riuso di pattern, progettare per
componenti.
Il progetto di dettaglio: dalle classi di analisi alle classi di progetto, evoluzione delle classi di analisi
e delle associazioni. Tracciabilità del processo di sviluppo software: dalla documentazione di
analisi alla documentazione di progetto, tecniche, vantaggi e svantaggi. Pattern Software. Progetto
di sistema.
Architettura software: definizioni, stili architetturali: dal fango alla struttura, sistemi distribuiti,
sistemi interattivi e sistemi adattabili. Esempi di architetture: Layers, Client-Server, Shared
Repository, MVC e BCE. Web services e architetture orientate ai servizi (SOA).
Design Pattern: definizioni e proprietà, ruolo dei pattern, pattern creazionali, pattern strutturali,
pattern comportamentali. Esempi di implementazione di design pattern in Java . Design patterns,
Idiomi e Layers. Design patterns e Requisiti di Sistema. Design patterns e MVC.
Progetto del database
Modello dei dati relazionale: progettazione concettuale, progettazione logica, forme normali,
progettazione fisica: definizione delle strategie di reazione ai vincoli di integrità referenziale, viste,
trigger, stored procedure e indici.
Progetto dell’interfaccia utente.
Modello degli utenti, usabilità dell’interfaccia grafica, requisiti e standards, prototipo
dell’interfaccia.
Verifica e Convalida
Definizioni e obiettivi. Errori, difetti e malfunzionamenti. La qualità del SW: concetti di base,
fattori di qualità. Pianificazione del collaudo SW.
Tecniche statiche di verifica: ispezioni e revisioni tecniche formali, check list, tipi e tassonomia di
difetti. Esempi di report di ispezione della documentazione di analisi e di progetto.
Tecniche dinamiche di verifica e convalida del software: test del SW, tecniche di collaudo del
software: dal piccolo al grande, i livelli di test. Progettazione dei casi di test: approccio black-box e
white-box. Definizione dei casi di test e documentazione dei test. Test del SW orientato agli
oggetti.
Testi consigliati:
1. R.S. Pressman, Principi di Ingegneria del software, quarta edizione, McGraw-Hill, 2004.
2. J. Arlow, I. Neustadt, UML e Unified Process, McGraw-Hill, 2003.
3. H. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, M. Stal. Pattern-Oriented Software
Architecture – A system of patterns, Wiley, 2006.
4. E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns – Elementi per il riuso di software
ad oggetti, Addison-Wesley, 2002.
5. I. Sommerville, Ingegneria del software (ottava edizione), Pearson Education, 2007.
7. Dispense fornite dal docente: http:// www-ictserv.poliba.it/tinelli/.