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:
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.
Vielleicht finden Sie diese Analyse interessant oder aufschlussreich: Eine Geschichte von vier Kernen
Bearbeiten: Schema und die entsprechenden Abfragen
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 ...
Wenn Sie die Aufgabe übernehmen, zu einer besseren Gesamtcodequalität zu fahren. Sie können sich Folgendes ansehen:
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.
Anzahl der Software-Klonen / doppelten Code , weniger ist offensichtlich besser. (Link diskutiert Klone und verschiedene Techniken, um sie zu erkennen / zu messen.)
Tags und Links software-quality