Misurazione del software

Documenti analoghi
IS Corso di Ingegneria del Software 1

18/05/2014. Università di Ferrara Corso di Ingegneria del Software AA 2013/2014

Misurazione del software. Misurazione. Misurazione del software. UniPD /13 - Ingegneria del Software mod. B 1. Misurare. IS Misura e metrica

Misurazione del software

Misurazioni. Misurazione del software. Scienza e misura. IS Misura e metrica. Misurare. Finalità della misura. Limiti intrinseci della misura

Metodi e obiettivi di quantificazione

Verifica parte IV. Rif. Ghezzi et al

SCD IS. Documentazione. Domande ricorrenti 1. Valutazione quantitativa 1. Perché documentare... UniPD Ingegneria del Software mod.

Qualità del software. Tecniche di Programmazione 2009/10. Giovanni A. Cignoni contenuti. definizione di qualità

SCD IS. Documentazione. Domande ricorrenti 1. Cosa documentare. Come documentare. Perché documentare 3. Domande ricorrenti 2. Perché documentare

software Progettazione software IS Corso di Ingegneria del Software 1 Contenuti Progettare prima di produrre Dall analisi alla progettazione

SCD IS. Documentazione. Documentazione. Perché documentare... Valutazione quantitativa 1. Domande ricorrenti 1. Perché documentare

SCD IS. Documentazione. Documentazione. Valutazione quantitativa 1. Domande ricorrenti 1. Modello a V. Perché documentare

Progettazione software

ITIS A. Volta Flavia Lollis pag. 1

Qualità del software. Qualità: intuizione iniziale. Qualità del software. Qualità: una definizione. IS Sistema qualità

Verifica e validazione: introduzione

IS Corso di Ingegneria del Software 1

Progettazione software

Qualità del software. Qualità del software. Qualità: intuizione iniziale. IS Glossario 10. IS Glossario 9

Qualità del software. Qualità del software. Glossario. IS Glossario. Qualità: intuizione iniziale

Verifica e validazione: introduzione

IS Corso di Ingegneria del Software 1

IS Corso di Ingegneria del Software 1

IS Corso di Ingegneria del Software 1

Un Sistema Basato sulla Conoscenza per il Calcolo dei Function Point. Extended Abstract

UML Introduzione a UML Linguaggio di Modellazione Unificato. Corso di Ingegneria del Software Anno Accademico 2012/13

Sistemi Informativi I Function Point Analisys

Cominciamo ad analizzare la rappresentazione delle informazioni... di Cassino. C. De Stefano Corso di Fondamenti di Informatica Università degli Studi

STIMA DEI COSTI DI SVILUPPO DEL SOFTWARE

Gestione di progetto: pianificazione

Verifica e validazione: introduzione

Indice Capitolo 1 Capitolo 2 Capitolo 3 Capitolo 4 Capitolo 5 Capitolo 6

TOPOGRAFIA 2013/2014. Prof. Francesco-Gaspare Caputo

Metriche basate sulla LOC

Qualità del software. Qualità del software. IS Corso di Ingegneria del Software 1. Contenuti. IS Qualità: una definizione.

Verifica e validazione: introduzione

La fase di Progettazione

Il ciclo di vita del software

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma

Programma del corso di: Laboratorio di Programmazione e Calcolo Corso di laurea in Matematica a.a Proff. B. Paternoster, D.

Qualità del software. Qualità: intuizione iniziale. Contenuti. Qualità del software. IS Qualità: una definizione

Collaudo del software

Indice Premessa Cenni storici delle misure

Caratteristiche di un linguaggio ad alto livello

La misurazione dei sistemi di Data Warehouse

ISTITUZIONE SCOLASTICA DI ISTRUZIONE TECNICA LYCÉE TECHNIQUE PROGRAMMAZIONE EDUCATIVA E DIDATTICA ANNUALE PER COMPETENZE A.S.

Qualità. del software. Contenuti. Qualità: intuizione iniziale. Qualità del software. IS Qualità: una definizione. IS Ingegneria del Software 1

Richiami di inferenza statistica Strumenti quantitativi per la gestione

Richiami di inferenza statistica. Strumenti quantitativi per la gestione. Emanuele Taufer

SEERP. Quality Report

PROGRAMMAZIONE INFORMATICA SECONDO BIENNIO. Liceo Scientifico opzione Scienze Applicate

Modelli e Metodi per la Simulazione (MMS)

Istituto di Istruzione Superiorevia Salvini 24 Roma Liceo M. Azzarita Liceo delle scienze applicate Materia:Informatica Programmazione a.s.

IE FISICA Verifica 10 gennaio 2015 tutti gli esercizi e tutte le domande

Ingegneria del Software MINR Giuseppe Santucci Il metodo dei FP

Introduzione. Sommario. Il software. Definizione di Ingegneria del software

Incertezza di misura concetti di base. Roberto Olmi IFAC-CNR

Questi appunti costituiscono soltanto una traccia sintetica del Corso di Laboratorio di Fisica, a prescindere dalle opportune spiegazioni e dai

Metodologie informatiche per la chimica

Corso di Ingegneria del Software. Metriche Parte II

Introduzione alla programmazione strutturata

Elementi di Statistica

Corso di Fondamenti di Informatica Università degli Studi di Cassino

MATRICE TUNING competenze versus unità didattiche, Corso di Laurea in Informatica (classe L-31), Università degli Studi di Cagliari

ITI M. FARADAY. Programmazione a. s

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Cenni di statistica statistica

Indice. Prefazione. 3 Oggetti e Java 53

Dinamica e Controllo dei Processi Energetici. AA 2009/2010 Pier Luca Maffettone. Elementi di Matlab

Gestione di progetto. Gestione di progetto. Criticità. Fondamenti. Fattori di rischio. IS Ingegneria del Software 1

STRUTTURE DI CONTROLLO IN C. Docente: Giorgio Giacinto AA 2009/2010

Scaletta. Cenni di computabilità. Cosa fa un programma? Definizioni (1/2) Definizioni (2/2) Problemi e domande. Stefano Mizzaro 1

! Problemi, domande, risposte. ! Algoritmi che calcolano funzioni. ! Funzioni computabili e non. ! Problema = insieme di domande omogenee. !

prot: GU del: 08/11/2018 Dipartimento Trasformazione Digitale

Software. Engineering

Breve cenno della psicofisica

Alberi di Regressione

Modularizzazione del software

Analisi dei Processi Chimici e. Biotecnologici Anno Accademico

Analisi dei Processi Chimici e. Biotecnologici Anno Accademico

Linguaggi, Traduttori e le Basi della Programmazione

Gestione di progetto. Gestione di progetto. Fondamenti di gestione. Cosa è un progetto? Ruoli

Gestione di progetto. Cosa è un progetto? Gestione di progetto. Fondamenti di gestione. Ruoli

Problemi pratici teorici-sperimentali

Fisica I per chimici: Elementi di statistica

TECNICHE DI SIMULAZIONE

Modellazione di sistemi ingegneristici (parte 2 di 2)

Corso PAS Misure, strumenti ed Errori di misura. Didattica del Laboratorio di Fisica F. Garufi 2014

La programmazione nel linguaggio JavaScript. Il programma

CALCOLO DELL ERRORE E VALUTAZIONE DI UN METODO ANALITICO

ISTITUTO COMPRENSIVO SAN VENANZO PROGRAMMAZIONE ANNUALE MATEMATICA CLASSE III SECONDARIA I GRADO LIVELLI DI COMPETENZE I QUADRIMESTRE

Grandezze fisiche e loro misura

Scrivere il software. Scrivere il software. Interprete. Compilatore e linker. Fondamenti di Informatica

9.3 Il metodo dei minimi quadrati in formalismo matriciale

METROLOGIA. metrologia Vittore Carassiti - INFN FE 1

Importanza delle incertezze nelle misure fisiche

Transcript:

Misurare Misurazione del software 2001-10 Corso di Ingegneria del Software V. Ambriola, G.A. Cignoni, C. Montangero, L. Semini Con aggiornamenti di: T. Vardanega Un attività quotidiana Grandezze fisiche: massa, lunghezza, velocità Grandezze economiche: prezzi, inflazione, PIL, AEX, Di tutto di più: gradimento, reddito, caratteristiche fisiche, Misurare per conoscere Misurare per giudicare L effetto di semplificazione e imprecisione Dipartimento di Informatica, Università di Pisa 1/33 Dipartimento di Informatica, Università di Pisa 2/33 Scienza e misura Misurazione Finalità della misura Rendere oggettivi i risultati degli esperimenti Oggettività implica ripetibilità, confronto, confidenza Avere dati da cui ricavare modelli matematici Limiti intrinseci della misura È una approssimazione misure di realtà fisiche È una astrazione misure per valutare o stimare Misurazione Processo che assegna numeri o simboli ad attributi di entità del mondo reale, per descriverle secondo regole definite Concetti rilevanti (esempi) Entità Attributo Valore Persona Età 18 (anni) Semaforo Stato rosso Programma Dimensione 75 (LoC) Dipartimento di Informatica, Università di Pisa 3/33 Dipartimento di Informatica, Università di Pisa 4/33 Processo di misurazione 1 Processo di misurazione 2 Obiettivo Caratterizzare la prestazione di un prodotto o di un processo Valutare la prestazione a posteriori Per distanza rispetto a valori attesi Fare previsioni di prestazione a priori Quantificare i miglioramenti prestazionali Per fini di Software Process Improvement Strategie e discipline Cosa misurare: O/IEC 15939 Software Measurement Process Measurement Information Model: descrizione dei valori di misurazione da produrre e delle relazioni tra loro Measurement Process Model: descrizione del processo di misurazione (in conformità con O/IEC 12207) Come misurare: linee guida (p.es. Practical Software Measurement) Con quale accuratezza: CMMI Dipartimento di Informatica, Università di Pisa 5/33 Dipartimento di Informatica, Università di Pisa 6/33 2001-10 - Corso di Ingegneria del Software 1

Visione globale di O/IEC 15939 Misura e metrica Misura Risultato della misurazione Assegnazione empirica e oggettiva di un valore (numerico o simbolo) a un entità, per caratterizzarne un attributo specifico Metrica = insieme di regole Per stabilire le entità da misurare Per definire gli attributi rilevanti Per definire l unità di misura Per definire una procedura per assegnare e interpretare numeri e simboli Dipartimento di Informatica, Università di Pisa 7/33 Dipartimento di Informatica, Università di Pisa 8/33 Indicatori Le metriche nella produzione Per caratteristiche difficilmente misurabili La misura desiderata può essere ottenuta indirettamente a partire da altre misure trattate tramite stime o predizioni Metriche usate per stimare caratteristiche Identificare attributi misurabili Stimare (con incertezza) caratteristiche non misurabili Esempio La dimensione del software è un attributo misurabile La manutenibilità è un attributo stimato tramite indicatori Strumenti di valutazione e controllo Entità da misurare Processi Progetti Prodotti Risorse insiemi correlati di procedure astratte attività concrete legate a tempo e risorse beni e servizi in uscita dai progetti elementi impiegati (e consumati) dal progetto per produrre prodotti Categorie di attributi Attributi interni misurabili rispetto alle entità Attributi esterni misurabili rispetto all ambiente Dipartimento di Informatica, Università di Pisa 9/33 Dipartimento di Informatica, Università di Pisa 10/33 Metriche software Linee di codice sorgente (SLOC) Problema aperto Il software è difficile da misurare Il software ha caratteristiche multiformi Le tecnologie cambiano rapidamente L ambiente di esecuzione ha una grande influenza Tipi di metriche Del prodotto in sé Delle sue funzionalità Del suo comportamento quanto è grande cosa deve fare cosa succede e quando La metrica più intuitiva e più usata Conteggio dei costrutti / comandi Semplificato e adattato alle funzionalità degli editor Usata per derivare informazioni di costo e produttività Dipendente da sintassi e potenza espressiva del linguaggio Dipendente dallo stile di codifica Dipartimento di Informatica, Università di Pisa 11/33 Dipartimento di Informatica, Università di Pisa 12/33 2001-10 - Corso di Ingegneria del Software 2

Software Science 1 Maurice H. Halstead, Elements of Software Science, Elsevier, 1977 Complessità del codice Misura a posteriori (molto più facile che a priori!) Controversa Basata sul numero e sul tipo dei costrutti Basata su elementi di psicologia cognitiva e statistica Adatta solo ai primi linguaggi di programmazione Oggi è statisticamente inefficace Dipartimento di Informatica, Università di Pisa 13/33 Software Science 2 Unità di misura n1 = numero di operatori distinti usati dal programma n2 = numero di operandi distinti usati dal programma N1 = numero di occorrenze degli operatori N2 = numero di occorrenze degli operandi Per determinare (tra l altro) * La dimensione N di un programma N = n1 log 2 n1 + n2 log 2 n2 tipicamente si ha N = (N1+N2) * Il volume V di un programma V = (N1+N2) log 2 (n1+n2) V varia al variare del linguaggio di programmazione Halstead assegna un valore (livello) I come costante di linguaggio ma la ricerca ha mostrato che essa dipende anche dal programmatore Dipartimento di Informatica, Università di Pisa 14/33 Complessità ciclomatica 1 Complessità ciclomatica 2 Proposta da Thomas McCabe nel 1976 Indipendente dal linguaggio di programmazione Complessità del flusso di controllo Funzione dei possibili cammini indipendenti all interno di un singolo sottoprogramma Misurazione astratta di un attributo significativo del codice Fallibilità dimostrata Nonostante ciò ancora largamente usata Costosa da applicare prima di progettare il codice in dettaglio Il valore rilevato va confrontato con soglie prefissate P.es.: [1, 10] complessità bassa; [21, 50] complessità elevata; [51, ) complessità inaccettabile Corrisponde al numero di casi di prova necessari per verificare ogni possibile esito di ogni ramo di decisione all interno del sottoprogramma Misura la complessità del flusso di controllo ma non la complessità del flusso dei dati Il grado di fan-in e fan-out applicato ai dati può aiutare a stimare la complessità del flusso dei dati Meglio usare strumenti automatici Dipartimento di Informatica, Università di Pisa 15/33 Dipartimento di Informatica, Università di Pisa 16/33 Fan-in e Fan-out Complessità ciclomatica 3 Fan-in e fan-out strutturale SFIN è indice di uso Misura di utilità SFOUT è indice di accoppiamento M Misura di dipendenza Allo stesso livello di astrazione! Fan-out Analogo per il flusso dei dati Indice di utilità Fan-in Indice di dipendenza Definizione algebrica v(g) = e n + p e n p numero di percorsi lineari in G numero degli archi (flusso) numero dei nodi (espressioni o comandi) numero delle componenti connesse da ogni arco (p = 2 per esecuzione sequenziale) Esempio, una sequenza, v(g) = 3 4 + 2 = 1 Dipartimento di Informatica, Università di Pisa 17/33 Dipartimento di Informatica, Università di Pisa 18/33 2001-10 - Corso di Ingegneria del Software 3

Complessità ciclomatica 4 Complessità ciclomatica 5 Errore in difetto La complessità reale è maggiore di quella misurata Esempio, v(g) = 6 5 + 2 = 3 Ma il codice sorgente è offuscato! int _INT = 1 ; int INT_ = 0; int Int_ ( int _int ) { if (_int == INT_) return _INT ; else return _int * Int_ ( _int _INT ) ; } Errore in eccesso La complessità reale è inferiore a quella misurata Esempio, v(g) = 10 2 + 2 = 4 switch visto come una sequenza di if annidati v(g) = C + 1 C numero dei casi (= 3) Dipartimento di Informatica, Università di Pisa 19/33 Dipartimento di Informatica, Università di Pisa 20/33 Function Point 1 Function Point 2 Allan J. Albrecht e John E. Gaffney, IEEE TSE 1983 Non misura il software ma le sue entità logico-funzionali Dimensione di progetto e di produttività in relazione ai requisiti funzionali Indipendente dal linguaggio di programmazione International Function Point User Group (IFPUG) Conteggio dei punti funzione Funzionalità differenziate per categorie Pesate in base ad attributi del prodotto Misurazioni diverse possono dare risultati leggermente diversi Risultati ottimali per sistemi gestionali Ha un corrispondente in UML negli Use Case Points Componenti misurate External Input (EI) External Output (EO) External Inquiry (EQ) Internal Logical File (ILF) External Interface File (EIF) Definizione Processo elementare a seguito del quale dati entrano nella componente misurata Processo elementare a seguito del quale dati escono dalla componente Processo elementare per il quale specifici dati interni sono richiesti alla componente e da essa emessi Gruppo di dati correlati interni alla componente e alimentati tramite EI Gruppo di dati correlati esterni alla componente e usati come riferimento Dipartimento di Informatica, Università di Pisa 21/33 Dipartimento di Informatica, Università di Pisa 22/33 Function Point 3 Punti oggetto Unadjusted FP (grezzo) Ciascuna componente viene associata a uno specifico grado di complessità Ogni componente pesa quanto il suo grado di complessità Adjusted FP (raffinato) 14 fattori d influenza (IF) Ciascuno con peso da 0.00 a 0.05 AFP = UFP (0.65 + Σ IF) Componente EI EO EQ ILF EIF Bassa 3 4 3 7 5 Complessità Media 4 5 4 10 7 Alta 6 7 6 15 10 Totale Boehm et al., 1995, insieme a COCOMO 2.0 Conteggio delle componenti Tipo semplice medio difficile Screen 1 2 3 Report 2 5 8 3GL Component - - 10 Fattore di aggiustamento rispetto alla percentuale di riuso Dipartimento di Informatica, Università di Pisa 23/33 Dipartimento di Informatica, Università di Pisa 24/33 2001-10 - Corso di Ingegneria del Software 4

Standard per misure funzionali 1 Standard per misure funzionali 2 O/IEC 14143 Functional size measurement Definire la terminologia del settore Definire i criteri per valutare le metriche funzionali Definire i criteri per accreditare i professionisti che le usano Concetti definiti Accuratezza di una misura funzionale Accuratezza di una metrica funzionale Ripetibilità e riproducibilità di una metrica funzionale Soglia di sensibilità di una metrica funzionale Applicabilità a un dominio funzionale Le metriche tecniche dipendono dalla tecnologia Che è variabile nel tempo! Utili come vista interna per stimare il costo di produzione O/IEC 14143 aiuta a orientarsi verso metriche funzionali Che possono fornire valori di misura più significativi Utili come vista esterna per stimare il prezzo di vendita La misurazione è resa indipendente dalla fase del progetto A meno delle richieste esplicite di cambiamento Dipartimento di Informatica, Università di Pisa 25/33 Dipartimento di Informatica, Università di Pisa 26/33 Misure interne ed esterne Metriche per software OO Misure interne (esempi) Numero di requisiti, loro volatilità Function Points, Use Case Points Coesione, accoppiamento, fan-in / fan-out SLoC, complessità ciclomatica Livello di copertura delle prove Misure esterne (esempio) O/IEC 9126-1 Occorrono metriche dedicate Le metriche tradizionali non sono accurate Complessità funzionale e complessità strutturale Non linearità del codice La misura SLOC non funziona! Uso di strutture e funzioni complesse McCabe non funziona come misura assoluta! Metriche per i metodi Metriche per le classi Metriche per i sistemi Dipartimento di Informatica, Università di Pisa 27/33 Dipartimento di Informatica, Università di Pisa 28/33 Metrica per i metodi Metrica per le classi Un metodo è sostanzialmente procedurale Si può usare McCabe come metrica di base Corretta per tenere conto di interfacce e variabili locali Complessità di un metodo MC = w 1 MIC + w 2 MLVC + w 3 MCC MIC complessità dell interfaccia del metodo MLVC complessità delle variabili locali MCC complessità ciclomatica del codice w i pesi determinati statisticamente Complessità di una classe CC = w 3 CCL + w 4 CCI CCI complessità dell interfaccia della classe CCL = w 5 ECCL + w 6 ICCL complessità locale ECCL = Σ j MIC j complessità locale esterna ICCL = w 7 CACL + w 8 CMCL complessità locale interna CACL = Σ h CA h complessità degli attributi locali CMCL = Σ k MC k complessità dei metodi locali CA costante o CC di classe attributo w i pesi determinati statisticamente Dipartimento di Informatica, Università di Pisa 29/33 Dipartimento di Informatica, Università di Pisa 30/33 2001-10 - Corso di Ingegneria del Software 5

Metrica per i sistemi Qualità delle metriche Proprietà della metrica per le classi Considera solo la parte locale della classe Considera la complessità dell uso delle classi negli attributi Complessità del sistema SC = Σ n CC n Metriche utilizzabili come fattori d influenza NC NRC NLC Numero totale di classi Numero di classi radice Numero di classi foglia Precisione In termini di esattezza e ripetibilità rispetto ai valori prodotti SLOC e McCabe sì FP no (questione di maturità) Aderenza alla realtà La misura corrisponde all evidenza sperimentale Quando le metriche sono usate come indicatori Accuratezza Corrispondenza con la percezione o la realtà effettiva Dipartimento di Informatica, Università di Pisa 31/33 Dipartimento di Informatica, Università di Pisa 32/33 Riferimenti N.E. Fenton, S.L. Pfleeger, Software Metrics: A Rigorous & Practical Approach, II Ed., Int. Thompson Computer Press, 1997 A.J. Albrecht, J.E. Gaffney. Software Function, [ ]: A Software Science Validation, IEEE Trans. on Software Engineering, 1983 A. Alessandroni, La stima dei costi dei sistemi informativi automatizzati, CNIPA, http://www.cnipa.gov.it/ B. Boehm e altri, Cost Models for Future Software Life Cycle Processes: CoCoMo II, Centre for Software Engineering, http://sunset.usc.edu/ P. Nesi, T. Querci, Stima della complessità e analisi di sistemi object oriented, De qualitate, 1996 Dipartimento di Informatica, Università di Pisa 33/33 2001-10 - Corso di Ingegneria del Software 6