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