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/.