2009-08-30 22 views
8

Ich arbeite an einem ziemlich großen Projekt, ein paar Jahre in der Herstellung, in einem ziemlich großen Unternehmen, und ich nehme die Aufgabe an, besser zu fahren Gesamtqualität des Codes.Wie würden Sie Code "Qualität" über ein großes Projekt messen?

Ich fragte mich, 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 dies ein bisschen Makroarbeit in Hunderten von Projekten ist (ich habe einige Fragen zu viel kleineren Projekten gesehen), suche ich nach etwas Automatisierbarem und Ganzem.

Bisher habe ich eine Liste, die wie folgt aussieht:

  • Code-Coverage Prozentsatz bei Vollfunktionstests
  • zu Wiederholungen von BVT Ausfälle
  • Abhängigkeitsgraph/Score, basierend auf einigen Tool wie NDepend
  • Anzahl der Build-Warnungen
  • Anzahl der FxCop/StyleCop Warnungen gefunden/unterdrückt
  • Anzahl der „catc h“Aussagen
  • Anzahl der manuellen Bereitstellung Schritte
  • Anzahl der Projekte
  • Prozentsatz des Code/Projekte, die sind‚tot‘, wie in, nicht überall verwiesen
  • Anzahl der WTF während des Code Bewertungen
  • Gesamt Linien Code gebrochen vielleicht von Stufe nach unten
+4

Das Vorhandensein von Midochlorians. – cletus

+0

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

+1

Eine Umfrage Frage. – Raedwald

Antwort

1

Cyclomatische Komplexität ist eine anständige "Qualität" Metrik. 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. metrischen ...

P. S. NDepend hat etwa zehn Milliarden Metriken, so dass es sich lohnt, zu betrachten. Siehe auch CodeMetrics für Reflektor.

D'oh! Mir ist gerade aufgefallen, dass du schon NDepend erwähnt hast.

Anzahl der gemeldeten Bugs wäre interessant, zu verfolgen ...

+0

Schnappen. Das PS von CodeMetrics kann allein die Frage wert sein. – askheaves

+0

Wir haben viele Leute, die Fehler intern öffnen und verfolgen. Zehntausende von Fehlern in meiner Anwendung und andere pro Version. Wie ich schon sagte ... GROSS. – askheaves

0

Anzahl software cloning/duplicate code, weniger ist natürlich besser. (Link diskutiert Klone und verschiedene Techniken, um sie zu erkennen/zu messen.)

+0

Drive-by-Flagger: Sie könnten die Höflichkeit haben, zu erklären, warum Sie dem widersprechen. –

1

Wenn Sie die Aufgabe übernehmen, in Richtung bessere Gesamtcodequalität zu fahren. Werfen Sie einen Blick auf:

  • Wie viele offene Probleme haben Sie derzeit und wie lange dauert es, bis sie gelöst sind?
  • Welchen Prozess haben Sie, um Anforderungen zu erfassen?
  • Folgen Ihre Mitarbeiter den Best Practices?
  • Haben Sie SOP definiert, um Ihre Unternehmen Programmiermethodik zu beschreiben.

Wenn Sie eine Reihe von Entwicklern in 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 ein neues Feature 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 Metriken erhalten Sie wollen, aber ich sage, zuerst muss man sehen, wie die Dinge getan werden:

Was sind Sie Entwicklungspraktiken?

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

+0

Ich mag diese Antwort, weil sie auf die andere Seite meines Problems verweist ... Welche Standards setze ich für die Entwicklung ein? Ich glaube, ich habe nach Metriken gesucht, die diese Standards vorantreiben, aber wir können aus beiden Richtungen kommen. – askheaves

5

Sie sollten Ihre Arbeit nach den sechs wichtigsten Qualitätsmerkmalen der Software organisieren: Funktionalität, Zuverlässigkeit, Benutzerfreundlichkeit, Effizienz, Wartungsfreundlichkeit und Portabilität. Ich habe eine diagram online, die diese Eigenschaften beschreibt. Bestimmen Sie dann 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 einsetzbar.

Verwandte Themen