Ingegneria del software Modulo 2 -Il software come prodotto Unità didattica 2 -I costi del software Ernesto Damiani Università degli Studi di Milano Lezione 6 – Richiami sulle metriche
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 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, LOC/P- mese Programmi di sistema, mese Applicazioni commerciali, 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