Non lo fai.
La qualità del software è davvero difficile da misurare obiettivamente. È abbastanza difficile che non ci sia una soluzione. Mi sto trattenendo in questa risposta per dilungarmi sulla questione se possa esserci una soluzione, ma semplicemente sottolineare perché definirne uno sarebbe davvero difficile.
Ragionamento per status quo
Come ha sottolineato Kilian Foth, se esistesse una semplice misura per il software "buono", lo useremmo tutti e tutti lo richiederebbero.
Ci sono progetti in cui i manager hanno deciso di applicare determinate metriche. A volte funzionava, a volte no. Non sono a conoscenza di correlazioni significative. I software di sistema particolarmente critici (pensano che aerei, automobili, ecc.) Abbiano molti requisiti di metrica per "assicurare" la qualità SW - non sono a conoscenza di studi che dimostrino che questi requisiti in realtà producono una qualità superiore, e ho esperienze personali per contrario.
Ragionamento da controspionaggio
Già accennato da Kilian già, e più in generale formulato come "ogni metrica può e verrà giocata".
Che cosa significa suonare una metrica? È un gioco divertente per gli sviluppatori: assicuri che i valori delle metriche siano davvero buoni, mentre fai cose davvero di merda.
Supponiamo che tu misuri i difetti per LOC. Come lo suonerò? Facile - basta aggiungere altro codice! Crea codice stupido che si traduce in una non operazione su 100 linee e improvvisamente hai meno difetti per LOC. Meglio di tutti: hai effettivamente diminuito la qualità del software in questo modo.
Le carenze degli strumenti sono abusate, le definizioni sono estese al massimo, sono inventati modi completamente nuovi .. fondamentalmente, gli sviluppatori sono persone davvero intelligenti e se hai un solo sviluppatore del tuo team che si diverte a giocare le metriche, allora le tue metriche saranno discutibile.
Questo non vuol dire che le metriche siano sempre negative, ma l'atteggiamento della squadra nei confronti di queste metriche è cruciale. In particolare, ciò implica che non funzionerà bene per qualsiasi rapporto di fornitore / subappaltatore di terze parti.
Ragioni del targeting errato
Quello che vuoi misurare è la qualità del software. Quello che misuri è una o più metriche.
C'è un divario tra ciò che misurate e ciò che credete che vi dirà. Questo divario è persino enorme.
Succede sempre in tutti i tipi di aziende intorno a noi. Decisioni mai viste basate su KPI (indicatori chiave di prestazione)? È lo stesso problema: vuoi che un'azienda funzioni bene, ma misura qualcos'altro.
Ragionamento in base alla quantificabilità
Le metriche possono essere misurate. Qual è l'unica ragione per cui ci occupiamo di loro. La qualità del software, tuttavia, si estende ben oltre queste entità misurabili e ha molto, molto difficile da quantificare: quanto è leggibile il codice sorgente? Quanto è estensibile il tuo design? Quanto è difficile per i nuovi membri del team essere integrati? ecc. ecc.
Valutare la qualità del software solo tramite metriche e chiudere un occhio sulle parti di qualità che non è possibile quantificare non funzionerà sicuramente.
modifica:
Sommario
Permettetemi di far notare che quanto sopra è tutto sul giudizio oggettivo se il software è buono o cattivo in base alle metriche. Ciò significa che non sta dicendo nulla riguardo se e quando applicare le metriche.
In realtà, questa è un'implicazione unidirezionale: le metriche errate implicano un codice errato. Unidirezionale significa che il codice errato non garantisce le metriche cattive, né le buone metriche garantiscono un buon codice. D'altra parte, questo di per sé significa che puoi applicare le metriche per giudicare un pezzo di software - quando tenga presente questa implicazione in mente.
Misurate il software A e le metriche risultano davvero pessime. Quindi puoi essere certo che la qualità del codice è cattiva. Misurate il software B e le metriche sono ok, quindi non avete alcun indizio sulla qualità del codice. Non lasciatevi ingannare nel pensare che "le metriche sono buone = codice buono" quando è veramente solo "codice buono = > metrica buona".
In sostanza, puoi utilizzare le metriche per trovare problemi di qualità, ma non la stessa qualità.