Programma del corso - SisInf Lab

Transcript

Programma del corso - SisInf Lab
Programma di Ingegneria del Software II a.a 2011-2012
laurea magistrale in ing. informatica
POLITECNICO DI BARI
1° Facoltà di Ingegneria
Corso di Laurea Magistrale in Ingegneria Informatica
Programma del corso di
Ingegneria del Software Avanzata
Anno accademico 2013-2014
Docente: Marina Mongiello
Parte prima: architetture software
Definizioni e terminologia: architettura, componente, connettore, stile architetturale, pattern
architetturale, modelli, processi, stakeholders, middleware.
Progettare le architetture software. Modelli architetturali: client-server, oggetti distribuiti, servizi
distribuiti.
Pattern architeturali: model view controller, implicit invocation (publish-subscribe, event based),
layered, virtual machines, pipe and filter, blackboard, microkernel,
Parte seconda : verifica e convalida
Verifica e convalida: test del software: test di unità; test di integrazione; test di sistema; test di
accettazione; test di regressione.
Concetti fondamentali: errori, difetti, malfunzionamenti. Esempi: il caso Ariane 5. Test oracolo;
approcci top-down e bottom-up; casi e criteri di test; processo di test: test plan; documento sui test
case; test report; error report.
Teoria del test: tesi di Dijkstra; teorema di Howden; teorema di Goodenough e Gerart. Proprietà
dei casi di test: assioma di applicabilità; assioma dell’antiestensionalità; assioma di
antidecomposizione; assioma di anticomposizione. Confronto tra criteri di test.
Tecniche e metodologie di test. Analisi statica; analisi dinamica; analisi Formale.
Test di unità:
Analisi statica: analisi statica in compilazione; code reading; control flow analysis; data flow
analysis; code inspections or reviews; esecuzione simbolica. Interpretazione astratta.
Analisi dinamica: black-box (test funzionale); white-box (test strutturale).
Test funzionale: funzionalità interne, funzionalità esterne; definizione delle funzionalità; oracolo;
test case; documentazione dei test; definizione della check list.
Test strutturale: criterio di inadeguatezza; criteri di glass box: copertura delle istruzioni; copertura
delle diramazioni; copertura delle condizioni; copertura dei cammini: metodi fondati sui gafi di
controllo.
Test di software object oriented: test delle proprietà: information hiding, ereditarietà, polimorfismo,
dynamic binding, shadow invocation, genericità.
Test di integrazione; test di sistema: test di stress o di overload; test di accettazione; test di
regressione.
Programma di Ingegneria del Software II a.a 2011-2012
laurea magistrale in ing. informatica
Metodi formali: tassonomia dei guasti software. Caratteristiche e tassonomia dei sistemi critici.
Verifica formale del codice sorgente; i metodi asserzionali; le logiche classiche; logica modale;
logica temporale: LTL;CTL; l’algoritmo di model checking; model checking
Parte terza : Gestione della qualità
Qualità del processo e del prodotto; garanzie di qualità e standard: standard di documentazione;
pianificazione della qualità; controllo di qualità; misure e metriche del software. Principali qualità
del software: correttezza, affidabilità, robustezza, prestazioni, usabilità, verificabilità,
manutenibilità, riusabilità, portabilità, comprensibilità, interoperabilità, produttività, tempestività,
visibilità..
Metriche di prodotto
Misure, metriche ed indicatori. Metriche per il modello analitico; metriche per il modello
progettuale; metriche relative al codice sorgente.
Metriche per il modello analitico: basate sulle funzionalità: metrica dei punti funzione.
Metriche per il modello progettuale: metriche per la progettazione OO (Whitmire). Metriche
orientate alle classi: metriche CK (WMC,DIT,NOC,RFC,CBO,LCOM); metriche MOOD
(MIF,CF). Metriche orientate agli oggetti: Lorenz e Kidd (CS,NOA).
Metriche per il codice sorgente: metriche di Halstead; metriche di complessità: complessità
ciclomatica.
Approccio goal/question/metric alla misura delle qualità del software.
Metriche di processo e di progetto
Misurazione del software: metriche dimensionali; metriche basate sulle funzioni; Function Points.
Parte quarta: Cenni di Cloud Computing.
Testi di riferimento:
Altri testi:
1. Sommerville, “Ingegneria del software”, VIII edizione, Pearson Addison-Wesley, 2007.
2. R. S. Pressman, “Principi di Ingegneria del software”, IV edizione , Mc-Graw-Hill, 2004.
3. C. Ghezzi, M. Jazayeri, D. Mandrioli” Ingegneria del software”, II edizione, Pearson- Prentice
Hall, 2004.
4. E. Gamma, R. Helm, R. Johnson, J. Vlissides, “Design Patterns”, Addison-Wesley, 2002.
5. IEEE Guide to the Software Engineering Body of Knowledge (SWEBOK), 2004, available at
http://www.computer.org/portal/web/swebok.
Bibliografia utile
D. Garlan, M Shaw, “An Introduction to Software Architecture”, (CMU/SEI tr-94tr021).
Paul C. Clements, Linda M. Northrop, “Software Architecture: An Executive Overview”,
(CMU/SEI-96-TR-003, ESC-TR-96-003).
Felix Bachmann, Len Bass, Paul Clements, David Garlan, James Ivers, Reed Little, Robert Nord,
Judy Stafford, “Documenting Software Architectures: Organization of Documentation Package”,
(CMU/SEI-2001-TN-010).
M. R. Barbacci, M. H. Klein, T. A. Longstaff, C. B. Weinstock,” Quality Attributes”, (SEI 95tr021)
Programma di Ingegneria del Software II a.a 2011-2012
laurea magistrale in ing. informatica
Alfs T. Berztiss, Mark A. Ardis, ”Formal verification of programs” (SEI 88cm020).
Philippe Kruchten, “Architectural Blueprints—The “4+1” View Model of Software Architecture”,
IEEE Software, November 1995, pp. 42-50.
David Lorge Parnas, “Really rethinking ‘formal methods”, IEEE Computer, January 2010.
Philip A. Bernstein, “Middleware”, Communications of the ACM , February 1996/Vol. 39, No. 2.
David E. Bakken, “Middleware”, http://www.eecs.wsu.edu/~bakken/ middleware.pdf.
IEEE Recommended Practice for Architectural Description of Software-Intensive Systems. IEEE
Std 1471-2000.
Link utili:
http://www.sei.cmu.edu/library
http://ieeexplore.ieee.org/xpl/standards.jsp