Metriche di produttività
description
Transcript of Metriche di produttività
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 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/P-mese
• 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