INFORMATICA SPERIMENTALE Titolare del Corso Prof. Giovanni Cantone, DISP Corso integrativo Dr. Ing. Davide Falessi, PhD, DISP Laboratorio Dott. Gianfranco Pesce, CCD (attività svolta a titolo volontario). Ing. Alessandro D’Angio, Studente interno (attività svolta a titolo volontario). Ing. Stefano Scarrone, Studente interno (attività svolta a titolo volontario). Obiettivi del corso Il corso si propone di fornire concetti, metodi, processi e tecniche sperimentali per l’informatica e, in particolare, per l’ingegneria del software. Applicare il tutto a oggetti (metodi, processi, tecnologie) già considerati in corsi precedenti, nonché al caso delle tecnologie software a supporto dell’automazione e la reingegnerizzazione di processi aziendali, preliminarmente introdotte. Oltre a lezioni, seminari ed esercitazioni in classe, il corso prevede attività obbligatorie da svolgersi in laboratorio. PROGRAMMA Strategie empiriche. “Survey”, Casi di studio, Esperimenti controllati: empirismo e paradigma sperimentale nel contesto dell’informatica e, in particolare, dell’ingegneria del software. Misure software. Concetto di misura. Scale. Misure dirette e indirette. Misure oggettive e soggettive. Approcci alla definizione di modelli di misura per il software. La tecnica “Goal-Question-Metrics” (GQM). Ciclo di vita di un modello di misura. Il processo sperimentale. Variabili, fattori, trattamenti, oggetti (caso semplice, processi caratteristici, progetto pilota, progetti effettivi) e soggetti di un esperimento software. Le fasi di una sperimentazione: Definizione – Pianificazione – Sviluppo - Analisi e interpretazione Presentazione e diffusione dei risultati. Richiami di Teoria dei fenomeni aleatori. Il ruolo della statistica nella progettazione degli esperimenti e nell’analisi e interpretazione dei dati sperimentali. Fondamenti di statistica descrittiva. Distribuzioni e loro tipi. Test statistici e loro ambito di applicazione. Strumenti. Sperimentazione, apprendimento e relative organizzazioni. Cicli di sperimentazione e “feedback”. La “Experience Factory” da architettura per il “Quality Improvement Paradigm” a “Learning organization”. Laboratorio. (1) Applicazioni Web-based. (2) Applicazioni Web-Service-oriented. (3) Architetture Boundary-Control-Entity (BCE) e Ad hoc. (4) IDE J2EE e .NET. (5) Architettura Sw. secondo P. Clement vs. RUP. (5) Metodi per la progettazione dei cambi architetturali: SACS. (5) Metodi per la gestione e la documentazione delle decisioni architetturali. Esperimenti. (1) Trasposizione di architetture BCE | Ad-hoc Web-based in architetture Webservice-oriented tramite IDE J2EE | .NET, rispettivamente. Sviluppo: parte a casa, parte in laboratorio in presenza di osservatori. Durata equivalente prevista: 10 lezioni. (2) Analisi comparativa di SACS vs. Ad hoc per la progettazione degli interventi di manutenzione architetturale evolutiva. Sviluppo: parte a casa, parte in laboratorio in presenza di osservatori. Durata equivalente prevista: 10 lezioni. (3) Documentazione vs. non documentazione di scelte architetturali. Sviluppo: in laboratorio in presenza di osservatori. Durata equivalente prevista: 2 lezioni. Pre-requisiti Ingegneria del Software, Informatica Industriale (in base a precedenti esperienze, non saranno ammesse deroghe al superamento dell’esame di Informatica Industriale). Consigliati: Teoria dei Fenomeni Aleatori (1 e 2). Modalità d'esame Presentazione fino ai test statistici e discussione dei risultati degli esperimenti sviluppati dall’insieme degli studenti. Testi Consigliati • C. Wohlin, P. Runeson, M. Höst, M. C. Ohlsson, B. Regnell, and A. Wesslen, “Experimental Software Engineering”, Kluwer Academics Publishers, Kluwer A. P., 2001 (//Springer 2005). • G. Cantone, “Informatica Sperimentale”, Trasparenze, gennaio 2007, http://www.uniroma2.it/didattica/ISP0607 • G. Cantone, P. Donzelli, G. Pesce, “Misure software: teoria, modelli e ciclo di vita”, in Misure Software: Esperienze e Ricerche, Ed. Gufpi-Isma, Franco Angeli, 2006, http://www.francoangeli.it/Ricerca/Scheda_Libro.asp?ID=13815&Tipo=Libro • Wikipedia, “Probabilità Distribution”, http://en.wikipedia.org/wiki/Probability_distribution • Wikipedia, “Satistical Tests”, http://en.wikipedia.org/wiki/Statistical_tests Per consultazione: • R. Conradi, A.I. Wang (eds), "Empirical methods and Studies in Software Engineering Experiences from ESERNET", Lecture Notes in Computer Science LNCS 2765, Springer Verlag, Berlin Germany, 2003. • N. Juristo, A. M. Moreno, “Basics of Software Engineering Experimentation”, Kluwer A. P., 2001 (//Springer 2005). • A. Endres, H.D. Rombach, "A Handbook of Software and Systems Engineering: Empirical Observations, Laws and Theories", Harlow-Pearson Addison Wesley 2003. • D. C. Montgomery, “Progettazione e analisi di esperimenti”, McGraw-Hill, 2005. • G. Galati, G. Pavan, “Teoria dei fenomeni aleatori”, Vol. unico, TexMat, 2006. • AA. VV., “Experimental Eng. Papers”, http://www.iese.fhg.de/network/ISERN/pub/