2009-08-30 22 views
8

Sto lavorando a un progetto abbastanza ampio, a pochi anni in corso, in un'azienda piuttosto grande, e sto assumendo il compito di guidare verso una migliore qualità generale del codice.Come si misura la "qualità" del codice su un grande progetto

Mi stavo chiedendo quale tipo di metriche utilizzeresti per misurare la qualità e la complessità in questo contesto. Non sto cercando misure assolute, ma una serie di elementi che potrebbero essere migliorati nel tempo. Dato che si tratta di un po 'di macro-operazione su centinaia di progetti (ho visto alcune domande su progetti molto più piccoli), sto cercando qualcosa di più automatico e olistico.

Finora, ho una lista che assomiglia a questo:

  • Codice percentuale di copertura durante i test a pieno funzionale
  • Recurrance di fallimenti BVT
  • grafico Dipendenza/punteggio, sulla base di qualche strumento come NDepend
  • numero di avvisi di build
  • numero di avvisi FxCop/StyleCop trovato/soppressa
  • Numero di "catc h" dichiarazioni
  • Numero di implementazione manuale passi
  • Numero di progetti
  • Percentuale di codice/progetti che è 'morto', come in, non fa riferimento da nessuna parte
  • Numero di WTF di durante il codice del cliente
  • linee totali di codice, forse suddivisi per livello
+4

La presenza di mido-chlorians. – cletus

+0

http://stackoverflow.com/questions/84556/whats-your-favorite-programmer-cartoon/84609#84609 –

+1

Una domanda di sondaggio. – Raedwald

risposta

1

La complessità ciclica è una metrica decente di "qualità". Sono sicuro che gli sviluppatori potrebbero trovare il modo di "giocare" se fosse l'unica metrica, però! :)

E poi c'è la C.R.A.P. metrica ...

P.S. NDepend ha circa dieci miliardi di metriche, quindi potrebbe valere la pena guardare. Vedi anche CodeMetrics per Reflector.

D'oh! Ho appena notato che hai già menzionato NDepend.

Numero di bug segnalati Sarebbe interessante monitorare, anche ...

+0

Snap. Che CodeMetrics PS possa valere la pena chiedere da solo. – askheaves

+0

Abbiamo un sacco di persone che aprono e tracciano bug all'interno. Decine di migliaia di bug nella mia applicazione e altri per versione. Come ho detto ... GRANDE. – askheaves

0

quantità di software cloning/duplicate code, meno è ovviamente meglio. (Link discute cloni e varie tecniche per rilevarli/misurarli.)

+0

Flagger drive-by: potresti avere la cortesia di spiegare perché ti opponi a questo. –

1

Se ti stai impegnando a guidare verso una migliore qualità complessiva del codice. Potresti dare un'occhiata a:

  • Quanti problemi aperti hai attualmente e quanto tempo impiegano a risolvere?
  • Quale processo avete in atto per raccogliere i requisiti?
  • Il personale segue le best practice?
  • Avete sop definito per descrivere la metodologia di programmazione della vostra azienda.

Quando si ha un numero di sviluppatori coinvolti in un grande progetto, ognuno ha il suo modo di programmare. Ogni stile di programmazione risolve il problema, ma alcune risposte potrebbero essere meno efficienti di altre.

Come si usa il personale quando si attacca una nuova funzione o si corregge il codice esistente. Avere sviluppatori lavorano in team seguendo la programmazione delle forze di sop per essere tutti un codice migliore.

Quando la tua gente codifica in modo più efficiente seguendo la regola, il tempo di sviluppo dovrebbe essere più veloce.

È possibile ottenere tutte le metriche che desideri, ma io dico prima bisogna vedere come le cose vengono fatte:

Cosa state pratiche di sviluppo?

Senza sapere come stanno andando le cose, puoi ottenere tutte le metriche che desideri ma non vedrai mai nessuna improvvisazione.

+0

Mi piace questa risposta perché parla all'altro lato del mio problema ... quali sono le norme da mettere in atto per lo sviluppo? Penso che stavo guardando le metriche alla base di quegli standard, ma possiamo arrivare da entrambe le direzioni. – askheaves

5

È necessario organizzare il lavoro in base alle sei principali caratteristiche di qualità del software: funzionalità, affidabilità, usabilità, efficienza, manutenibilità e portabilità. Ho messo un diagram online che descrive queste caratteristiche. Quindi, per ogni caratteristica, decidi le metriche più importanti che desideri e sei in grado di tracciare. Ad esempio, alcune metriche, come quelle di Chidamber e Kemerer, sono adatte al software orientato agli oggetti, altre, come la complessità ciclomatica, sono più generali.