Wie würden Sie Code "Qualität" in einem großen Projekt messen?

8

Ich arbeite an einem ziemlich großen Projekt, einige Jahre im Entstehen, in einem ziemlich großen Unternehmen, und ich nehme die Aufgabe an, zu einer besseren Gesamtcodequalität zu fahren.

Ich habe mich gefragt, welche Art von Metriken Sie verwenden würden, um Qualität und Komplexität in diesem Kontext zu messen. Ich suche keine absoluten Maßnahmen, sondern eine Reihe von Dingen, die im Laufe der Zeit verbessert werden könnten. Angesichts der Tatsache, dass es sich um eine Makro-Operation in Hunderten von Projekten handelt (ich habe einige Fragen zu viel kleineren Projekten gesehen), suche ich nach etwas Automatisierbarem und Ganzem.

Bisher habe ich eine Liste, die so aussieht:

  • Prozentsatz der Codeabdeckung während der Vollfunktionstests
  • Wiederkehr von BVT-Fehlern
  • Abhängigkeitsdiagramm / Score, basierend auf einem Tool wie nDepend
  • Anzahl der Build-Warnungen
  • Anzahl der FxCop / StyleCop-Warnungen gefunden / unterdrückt
  • Anzahl der "Fang" -Aussagen
  • Anzahl der manuellen Bereitstellungsschritte
  • Anzahl der Projekte
  • Prozentsatz des Codes / der Projekte, die "tot" sind, wie in, nirgendwo referenziert
  • Anzahl der WTFs bei Codeüberprüfungen
  • Gesamtanzahl der Codezeilen, möglicherweise nach Ebene
askheaves 30.08.2009, 03:41
quelle

5 Antworten

5

Sie sollten Ihre Arbeit nach den sechs wichtigsten Qualitätsmerkmalen der Software organisieren: Funktionalität, Zuverlässigkeit, Benutzerfreundlichkeit, Effizienz, Wartbarkeit und Portabilität. Ich habe ein Diagramm online erstellt, das diese Merkmale beschreibt. Dann entscheiden Sie für jedes Merkmal die wichtigsten Metriken, die Sie suchen und verfolgen können. Zum Beispiel sind einige Metriken, wie die von Chidamber und Kemerer, für objektorientierte Software geeignet, andere, wie die zyklomatische Komplexität, sind allgemeiner.

    
Diomidis Spinellis 30.08.2009 21:19
quelle
2

Vielleicht finden Sie diese Analyse interessant oder aufschlussreich: Eine Geschichte von vier Kernen
Bearbeiten: Schema und die entsprechenden Abfragen

    
Nick Dandoulakis 30.08.2009 04:07
quelle
1

Die zyklomatische Komplexität ist eine anständige Qualitätsmetrik. Ich bin sicher, dass Entwickler einen Weg finden könnten, es zu "spielen", wenn es die einzige Metrik wäre! :)

Und dann gibt es die C.R.A.P. Metrik ...

P.S. NDepend hat ungefähr zehn Milliarden Messwerte, so dass es sich lohnt, sie zu betrachten. Siehe auch CodeMetrics für Reflector.

Oh! Ich habe gerade gemerkt, dass du schon NDepend erwähnt hast.

Die Anzahl der gemeldeten Fehler wäre auch interessant zu verfolgen ...

    
TrueWill 30.08.2009 04:28
quelle
1

Wenn Sie die Aufgabe übernehmen, zu einer besseren Gesamtcodequalität zu fahren. Sie können sich Folgendes ansehen:

  • Wie viele offene Probleme haben Sie derzeit und wie lange dauert die Lösung?
  • Welchen Prozess haben Sie, um Anforderungen zu sammeln?
  • Folgen Ihre Mitarbeiter den Best Practices?
  • Haben Sie SOPs definiert, um die Programmiermethodik Ihres Unternehmens zu beschreiben?

Wenn Sie mehrere Entwickler an einem großen Projekt beteiligt haben, hat jeder seine Art zu programmieren. Jeder Programmierungsstil löst das Problem, aber einige Antworten sind möglicherweise weniger effizient als andere.

Wie verwenden Sie Ihre Mitarbeiter, wenn Sie eine neue Funktion angreifen oder den vorhandenen Code reparieren? Wenn Entwickler nach der Programmierung von sop in Teams arbeiten, zwingt jeder einen besseren Code.

Wenn Ihre Leute nach der Regel effizienter programmieren, sollte Ihre Entwicklungszeit schneller werden.

Sie können alle gewünschten Metriken erhalten, aber ich sage zuerst, dass Sie sehen müssen, wie die Dinge gemacht werden:

Was sind Ihre Entwicklungsmethoden?

Ohne zu wissen, wie die Dinge derzeit durchgeführt werden, können Sie alle gewünschten Metriken erhalten, aber Sie werden nie Verbesserungen sehen.

    
CHUCKIE 30.08.2009 04:59
quelle
0

Anzahl der Software-Klonen / doppelten Code , weniger ist offensichtlich besser. (Link diskutiert Klone und verschiedene Techniken, um sie zu erkennen / zu messen.)

    
Ira Baxter 30.08.2009 04:44
quelle

Tags und Links