2009-06-29 16 views
7

Mi chiedevo se qualcuno ha esperienza nelle metriche utilizzate per misurare la qualità del software. So che ci sono metriche sulla complessità del codice, ma mi chiedo se esiste un modo specifico per misurare il rendimento effettivo durante la sua vita. Non intendo le prestazioni di runtime, ma piuttosto una misura della qualità. Anche gli strumenti suggeriti che potrebbero aiutare a raccogliere questi sono i benvenuti.Metriche sulla qualità del software

C'è misure per rispondere a queste domande:

  • Quanto è facile cambiare/migliorare il software, robustezza
  • Se si tratta di un comune/abbastanza parte generale del software, come riutilizzabile è IT
  • Come molti difetti sono stati associati con il codice
  • ha questo bisogno di essere ridisegnato/ricodificato
  • da quanto tempo questo codice intorno
  • Gli sviluppatori apprezzano il modo in cui il codice è progettato e implementato

Sembra che la maggior parte di questo debba essere strettamente collegata con un CM e uno strumento di segnalazione dei bug.

+2

wiki della comunità ... –

risposta

0

C'è un buon thread dal vecchio Joel su gruppi di discussione del software su questo.

0

So che alcuni programmi statici SVN forniscono una panoramica sulle linee modificate per invio. Se si dispone di un sistema di bugracking e le persone che risolvono bug aggiungendo funzionalità ecc. Stanno dichiarando il proprio numero di commit quando il bug è stato risolto, è possibile calcolare quante linee sono state interessate da ogni bug/nuova richiesta di funzionalità. Questo potrebbe darti una misura dell'utilità.

La prossima cosa è semplicemente contare il numero di bug trovati e impostarli in rapporto al numero di linee di codice. Esistono alcuni valori su quanti errori un software di alta qualità dovrebbe avere per codeline.

0

si poteva fare in qualche modo economica o in modo del programmatore.

In caso di modalità economica, è necessario ridurre i costi di miglioramento del codice, correzione dei bug, aggiunta di nuove funzionalità e così via. Se scegli la seconda strada, potresti voler misurare quanto personale lavora con il tuo programma e quanto sia facile, per esempio, trovare e correggere un bug medio nelle ore umane. Certamente non sono impeccabili, perché i costi dipendono dalla situazione del mercato e le ore umane dipendono dalle persone reali e dalle loro abilità, quindi è meglio combinare entrambi i metodi.

In questo modo si ottengono alcuni strumenti per la qualità del codice. Ovviamente dovresti tenere conto delle dimensioni del tuo progetto e di altri fattori, ma spero che l'idea principale sia chiara.

1

Se la qualità del codice di misurazione nei termini specificati fosse un lavoro semplice e le metriche accurate, probabilmente non ci sarebbe più bisogno di Project Manager. Ancor più, la distinzione tra manager buoni e poveri sarebbe molto piccola. Perché non lo è, dimostra solo che ottenere un'idea accurata sulla qualità del software non è un compito facile.

Le domande si estendono a più aree che sono quantificate in modo diverso o sono molto soggettive alla quantificazione, quindi è necessario raggrupparle in categorie corrispondenti a obiettivi comuni. Quindi puoi assegnare un fattore di "importanza" a ciascuna categoria e ricavarne alcune metriche.

Ad esempio, è possibile utilizzare static code analysis tools per misurare la qualità sintattica del codice e derivarne alcune metriche.

È inoltre possibile ricavare le metriche da bug/righe di codice utilizzando uno strumento di tracciamento dei bug integrato con un sistema di controllo della versione.

Per misurare la robustezza, il riutilizzo e l'efficienza del processo di codifica, è possibile valutare l'utilizzo di schemi di progettazione per funzionalità sviluppata (ovviamente laddove è opportuno). Non c'è nessuno strumento che ti aiuti a raggiungere questo obiettivo, ma se controlli il tuo software in modo crescente e inserisci dei numeri su questi, puoi darti una buona idea di come il tuo progetto si sta evolvendo e se sta andando nella giusta direzione. L'introduzione di procedure di revisione del codice potrebbe aiutare a tenere traccia di questi più facilmente e possibilmente affrontarli all'inizio del processo di sviluppo. Un numero da mettere su questi potrebbe essere la percentuale di funzionalità implementate utilizzando gli schemi di progettazione appropriati.

Mentre le metriche possono essere alquanto astratte e soggettive, se dedichi tempo a questo e cerchi sempre di migliorarle, può darti informazioni utili.

Un paio di cose da notare su metriche nel processo di software però:

  1. A meno che non li si fa bene, metriche potrebbe rivelarsi più male che bene.
  2. Le metriche sono difficili da fare bene.
  3. È necessario prestare attenzione nell'utilizzare le metriche per valutare le prestazioni individuali o offrire schemi di bonus. Una volta fatto questo, tutti cercheranno di ingannare il sistema e le tue metriche si dimostreranno inutili.
1

Se si utilizza Ruby, ci sono alcuni strumenti per aiutare fuori con metriche che vanno dal LOC/Metodo e Metodi/Classe Saikuros Cyclomatic complessità.

Il mio capo in realtà tenuto una presentazione su metriche software che usiamo in una conferenza rubino lo scorso anno, these are the slides.

Uno strumento interessante che porta un sacco di metriche in una volta è metric_fu. Controlla un sacco di aspetti interessanti del tuo codice. Cose che sono molto simili, cambiano molto, hanno molti rami. Tutti i segni potrebbero essere migliori :)

Immagino che ci siano molti più strumenti come questo anche per altre lingue.

0

Una metrica più incentrata sul cliente sarebbe il tempo medio necessario al fornitore del software per correggere bug e implementare nuove funzionalità.

È molto facile da calcolare, in base alla data del software di tracciamento dei bug creato e alle informazioni chiuse.

Se il tempo medio di implementazione delle funzionalità di bug fixing/funzionalità è estremamente elevato, questo potrebbe anche essere un indicatore di cattiva qualità del software.

0

È possibile controllare quanto segue page che descrive vari aspetti della qualità del software, inclusi i grafici di esempio. Alcune delle caratteristiche di qualità che è necessario misurare possono essere ricavate usando strumenti come Sonar.E 'molto importante per capire come si vorrebbe modellare alcuni dei seguenti aspetti:

  1. Manutenibilità: hai parlato di come è facile cambiare/testare il codice o riutilizzare il codice. Questi sono legati alla testabilità e all'aspetto riutilizzabilità della manutenibilità che sono considerati caratteristiche chiave della qualità del software. Pertanto, è possibile misurare la manutenibilità in funzione della testabilità (copertura del test unitario) e della riutilizzabilità (indice di coesione del codice).
  2. Difetti: i difetti da soli potrebbero non essere una buona idea da misurare. Tuttavia, se è possibile modellare la densità dei difetti, potrebbe darti una buona immagine.
Problemi correlati