Lezione 6 – Richiami sulle metriche Ingegneria del software Modulo 2 - Il software come prodotto Unità didattica 2 - I costi del software Ernesto Damiani Università degli Studi di Milano Metriche di produttività • Dimensionali: basate su un output dal processo software – Ad esempio, linee di codice sorgente consegnato • Funzionali: basate su una stima della funzionalità del software consegnato – Ad esempio, i punti funzione Richiami ai problemi di misura • Stima dei valori della metrica (ad esempio, il numero di punti funzione) • Stima del numero totale di mesi impiegati dal programmatore • Stima della produttività della parte contraente (ad esempio, team di documentazione) e inserimento di questa stima nella stima complessiva Linee di codice • Metrica proposta inizialmente quando i programmi venivano digitati su schede con una linea per scheda • Presuppone che ci sia un rapporto lineare tra dimensioni del sistema e volume di documentazione LOC e produttività • Più il linguaggio è di basso livello e più il programmatore è produttivo – La stessa funzionalità implementa più codice in un linguaggio di livello basso che in un linguaggio di livello alto • Più il programmatore è prolisso e più alta è la produttività – Le metriche di produttività basate su linee di codice suggeriscono che i programmatori che scrivono codici prolissi siano più produttivi di quelli che scrivono codici compatti Punti funzione (1) • Si basano su una combinazione di caratteristiche di programma: – output e input esterni – interazioni utente – interfacce esterne – file usati dal sistema • A ognuno di questi elementi è associato un peso e i punti funzione vengono calcolati moltiplicando ogni valore grezzo per il peso e poi sommando tutti i valori Punti funzione (2) • Il calcolo dei punti funzione tiene conto della complessità del progetto • I punti funzione possono essere usati per stimare le LOC a seconda del numero medio di LOC per punti funzione per un linguaggio dato – LOC = AVC * numero di punti funzione – AVC è un fattore che dipende dal linguaggio e varia da 200-300 per linguaggio di assemblaggio a 2-40 per un 4GL • I punti funzione sono molto soggettivi e dipendono da chi esegue la stima – Il conteggio automatico dei punti funzione è impossibile Punti oggetto (1) • I punti oggetto (chiamati anche punti applicazione) sono una metrica relativa alle funzioni alternativa ai punti funzione quando per lo sviluppo vengono usati 4GL o linguaggi orientati agli oggetti Punti oggetto (2) • Il numero di punti oggetto in un programma è una stima pesata del numero di – schermate visualizzate – report prodotti dal sistema – moduli di programma che devono essere sviluppati oltre al codice dei database Stima dei punti oggetto • I punti oggetto rispetto ai punti funzione sono più facili da stimare, perché riguardano semplicemente le schermate, i report e i moduli di linguaggio di programmazione – Possono quindi essere stimati nelle prime fasi nel processo di sviluppo • Nelle fasi preliminari è molto difficile stimare il numero di linee di codice che avrà il sistema Stima della produttività • Sistemi embedded e real-time, 40-160 LOC/Pmese • Programmi di sistema, 150-400 mese • Applicazioni commerciali, 200-900 LOC/P-mese • In termini di punti oggetto, la produttività è stata misurata tra 4 e 50 punti oggetto/mese a seconda del supporto di tool e delle capacità dello sviluppatore Qualità e produttività • Generalmente la produttività può essere aumentata solo a scapito della qualità • Non è chiaro però come siano correlate le metriche di qualità e la produttività • Tutte le metriche che si basano su tempo unitario e volume sono deboli perché non tengono conto della qualità • Se i requisiti cambiano continuamente, un approccio basato sul conteggio delle linee di codice non è significativo, perché il programma stesso non è statico FINE