Cos'è la produttività del software

Essenzialmente è semplice, si produce nel tempo.

Produttività = Risultati/Tempo

Tuttavia la parte difficile è trovare una misura adeguata per i risultati. Gli output nel contesto del software sono difficili da standardizzare. Nella maggior parte dei casi possiamo pensare al risultato di un'attività software come al valore aziendale e/o alle capacità riconoscibili dall'utente fornite.

Perché molte aziende vogliono misurare la produttività del software

I manager hanno il dovere di cercare una quantificazione e una certa certezza riguardo ai costi, ai tempi e alla portata di una particolare impresa software. Cercheranno inoltre mezzi e misure per:

  • Punto di riferimento rispetto ad altre organizzazioni
  • Tieni traccia dei progressi nel tempo
  • Valutare la produttività del team e del singolo
  • Utilizzare la produttività per determinare le decisioni di offshoring
  • Usa la produttività per prendere decisioni informate sulla definizione delle priorità

Misure generali di produttività

Ci concentriamo principalmente sulla produttività degli sviluppatori, poiché gli sviluppatori tendono a fare di più e a costare di più su un progetto software. Ma è anche utile comprendere la produttività degli altri soggetti coinvolti, tra cui tester, analisti, project manager, designer, architetti e altri soggetti coinvolti in progetti software.

Criteri di una buona metrica di produttività del software

Non esiste una metrica perfetta per l’”output” del lavoro del software, quindi dobbiamo trovare indicatori proxy alternativi che possano aiutarci ad avvicinarci alla quantificazione dell’”output”.

Idealmente, per il software, vogliamo una “metrica di output” che raggiunga quanto segue:

  • è fortemente correlato al valore aziendale
  • è ingiocabile e coerente, oggettivo, ripetibile e verificabile in modo indipendente
  • è indipendente indipendentemente dal linguaggio di programmazione
  • è valido per confrontare un progetto con un altro.
  • può tenere conto del fatto che il lavoro più complesso viene assegnato a membri del team più capaci
  • che possono essere raccolti in modo economico e semplice.

Tieni presente che le metriche ideali per la produttività individuale variano leggermente da quelle ideali per determinare la produttività del team.

Classifica delle metriche del software

La tabella seguente è stata prodotta da Steve McConnell ed è discusso in questa presentazione per classificare le metriche di produttività del software adeguate. I punti funzione COSMIC erano meno conosciuti e il dimensionamento automatizzato non era disponibile quando Steve creò per la prima volta questa tabella. Ho aggiunto la colonna per i punti funzione COSMIC. Questa colonna aggiuntiva è soggettiva e rientra nella nostra opinione e non fa parte della valutazione originale di Steve.

LOC/SM
FP/SM
PCP/SM
Punti Storia/SM
360 recensioni tra pari
Valutazione del manager
Prevedibilità del completamento delle attività
Casi di test superati
Tassi di difetto
La misurazione riflette realmente la produttività 3 4 4 4 3 2 1 4 3
Rappresenta direttamente o indirettamente tutto o la maggior parte dei risultati del lavoro 4 4 4 5 5 5 2 4 3
Utile per misurare il lavoro dei non programmatori 1 4 4 4 5 5 5 4 4
Resiste ai “giochi” da parte dei singoli contributori 2 5 5 4 3 3 4 4 5
Fortemente correlato al valore aziendale 2 3 4 4 3 4 2 4 3
Oggettivo, verificabile in modo indipendente 4 4 5 3 2 2 4 4 4
Le misure restituiscono lo stesso risultato indipendentemente dal linguaggio di programmazione utilizzato 1 5 5 3 5 5 5 5 5
Supporta i confronti da persona a persona all'interno di un team 3 4 4 4 5 4 4 4 4
Le persone migliori ottengono gli incarichi più difficili 2 4 5 4 5 5 1 5 2
I dati possono essere raccolti facilmente ed economicamente 3 1 5 3 3 4 3 3 4
25 38 45 38 39 39 31 41 37
Rango 9 5 1 5 3 3 8 2 7

Nella valutazione originale di Steve, la conclusione era una serie di approcci ravvicinati, con "Casi di test superati" come il più alto. Ora, con l’avvento di a) un approccio più semplice al dimensionamento funzionale (punti funzione COSMIC vs punti funzione IFPUG) e b) dimensionamento automatizzato, sembra esserci una metrica principale chiara per valutare la produttività: i punti funzione COSMIC.

Misure di produttività fuorvianti

Non esiste un’unica metrica perfetta per il lavoro del software, ma ce ne sono alcune utili e valide. Ce ne sono anche alcuni che potrebbero fuorviare, subire abusi o istigare comportamenti inutili.

Righe di codice

La misura della produttività qui è il numero di righe di codice scritte nel tempo. Dato che diversi sviluppatori possono variare di 10 volte il numero di righe di codice per una determinata funzionalità, nella migliore delle ipotesi, il LOC distribuito nel tempo può essere solo un'approssimazione. È facile da misurare ma non è necessariamente una buona misura. Linguaggi di programmazione diversi richiedono numeri diversi di righe di codice che variano in modo significativo da un linguaggio di programmazione all'altro. L'uso di righe di codice può anche incoraggiare gli sviluppatori a scrivere righe extra superflue, solo per essere classificati come “produttivi”. Ciò ha l'effetto opposto a quello previsto, poiché può generare costi di manutenzione aggiuntivi.

Punti della storia

Gli Story Point sono un proxy soggettivo e non standard per la stima dell'impegno. Alcuni affermeranno che “misurano” la complessità. Nella migliore delle ipotesi, possono dare un'indicazione della difficoltà di un compito particolare. In sostanza si tratta di un'indicazione dei “giorni ideali del personale”. Questi non sono adatti per il lavoro a contratto e non possono essere utilizzati per confrontare un team con l'altro o un progetto con l'altro. Non esiste alcun “apprendimento” o “miglioramento continuo” ottenibile adottando i punti della storia.

La storia conta

La dimensione della storia dell'utente può variare in modo significativo, sia che si stimi la dimensione in punti funzione COSMIC o in giorni ideali dello staff. Una storia può richiedere un compito tecnico di 10 minuti, mentre un'altra storia può richiedere un mese intero di lavoro da parte di un team. Nella nostra esperienza le storie variano di dimensione da 0 CFP a 120 CFP.

Altre misure di produttività del team

La valutazione della produttività basata sulla score card può essere utile in alcune circostanze, soprattutto se i valori delle carte sono normalizzati tra i team e scelti per riflettere tutti i criteri che l'organizzazione desidera utilizzare.

È importante scegliere criteri che si concentrino sui valori dell'organizzazione (per qualità e risultati). È anche importante allineare i team ai veri obiettivi dell’azienda.

Raccomandazione

Punti funzione COSMICI

La nostra misura di output consigliata sono i punti funzione COSMIC (CFP). Le ragioni di questa raccomandazione sono:

  1. La CFP è radicata nei principi fondamentali del comportamento del software (input, output, letture e scritture)
  2. La CFP è focalizzata sull’utente: si allinea a ciò che è necessario per fornire valore all’utente
  3. La CFP è un indicatore ragionevole del valore aziendale.
  4. La PCP si allinea molto bene allo sforzo effettivo.
  5. La CFP ha una definizione per una singola unità di dimensione.
  6. La CFP fornisce una misura delle dimensioni che è il fattore più significativo nel determinare il costo e la durata di un progetto.
  7. La CFP consente ai manager di gestire attività non legate allo sviluppo utilizzando anche la CFP come metrica di base.
  8. La CFP è aperta, gratuita e indipendente.
  9. I CFP sono adatti a requisiti incompleti (es. Agile)
  10. I CFP sono adatti a quasi tutti i tipi di software
  11. La stima anticipata della CFP è per lo più automatizzata (tramite ScopeMaster®)

La misurazione della produttività dello sviluppo software è l'attività di registrazione delle metriche e degli attributi di un'attività software a fini comparativi.

La CFP è un modo affidabile per valutare la produttività del software

Quanto sono produttivi i nostri sviluppatori di software?

Vorresti sapere se il tuo team è più produttivo di un altro o rispetto agli standard del settore?

Puoi confrontare le attività di un team con quelle di un altro all'interno di un'organizzazione, benchmarking interno. Il confronto con un'altra organizzazione simile viene definito benchmarking esterno.

Sebbene i benchmark di settore possano essere interessanti, i benchmark locali/interni sono i più affidabili.

Benchmarking della produttività dello sviluppo software: valuta il tuo team

Se hai un ottimo team, perché non pubblicare il tuo indice di produttività, forse ti aiuterà a vincere un lavoro di sviluppo?

Tutto ciò di cui hai bisogno è una serie di storie utente di un progetto precedente, circa 1 ora e l'accesso a ScopeMaster.

  1. Prendi una serie di requisiti da un progetto recente. Caricali in ScopeMaster. Lascia che l'analizzatore calcoli la dimensione.
  2. Aggiungi al calcolatore della produttività lo sforzo totale richiesto (in giorni persona), la durata (in mesi) e la rimozione dei difetti ottenuta.
  3. Successivamente determinerà la indice di produttività della tua squadra.

E questo è tutto.

Se sei al di sopra della media, diciamo 6+ per un web team, allora sei sulla buona strada verso la grandezza. Se lo desideri, pubblicheremo l'indice di produttività della tua squadra nella nostra classifica.

Attenzione alle metriche fuorvianti

Punti della storia, righe di codice, taglie di magliette, giorni-uomo sono tutti giocabili o facili da manipolare, tecniche solitamente utilizzate per stimare impegno e tempo. Sono invariabilmente manipolati per scopi personali. Solo i metodi di dimensionamento funzionale standard ISO sono difficili da ingannare.

Benchmarking sullo sviluppo software