1977 stellte Maurice Howard Halstead seine Komplexitätsmessungen für Softwaresysteme vor , die Messungen des Programmvokabulars, der Programmlänge, des Volumens, des Schwierigkeitsgrades, des Aufwands und der geschätzten Anzahl von Fehlern in einem Modul umfassten. Laut Wikipedia bezieht sich die Schwierigkeit auf die Schwierigkeit, das Programm beim Lesen oder Schreiben zu verstehen, und der Aufwand kann in die Zeit übersetzt werden, die zum Codieren einer Anwendung mit Time = (Effort / 18) Sekunden benötigt wird.
Eine Messung ist nutzlos, es sei denn, die Daten und Berechnungen beziehen sich auf einen Aspekt der Softwareentwicklung. Ich habe jedoch keine Arbeit gefunden, die besagt, dass eine Schwierigkeit mit einem bestimmten Wert oder höher zu einer statistisch signifikanten Zunahme von Fehlern oder einem Zusammenhang zwischen Schwierigkeit und Zeit zum Lesen von Code neigt (eine Schwierigkeit mit N ergibt einen Durchschnitt von M Stunden, die verbracht wurden) Verständnis der Codebasis) oder jede Analyse der Fähigkeit, die Zeit nach der Tatsache zu berechnen, die für die Bestimmung der Qualität nützlich ist (zumal die Zeit zum Schreiben bereits als Maß aufgezeichnet werden sollte). Ich interessiere mich besonders für Halsteads Fehlerabschätzung (die in Wikipedia nicht erwähnt wird) - die Anzahl der Fehler in einer Anwendung kann mit Volume / 3000 oder Effort ^ (2/3) / 3000 abgeschätzt werden.
Ich suche zwei Dinge:
- Hat jemand die Software-Komplexitätsmessungen von Halstead in einer realen Anwendung verwendet, um die Softwarequalität zu bewerten? Wenn ja, wie haben Sie sie angewendet und sie haben sich als nützliche, gültige und / oder zuverlässige Messung erwiesen?
- Gibt es eine akademische Forschung in Form von Umfragen, Analysen oder Fallstudien, die die Gültigkeit (oder Ungültigkeit) von Halstead-Komplexitätsmaßen in Bezug auf die Softwarequalität erörtern?
- Gibt es eine akademische Forschung in Form von Umfragen, Analysen oder Fallstudien, die die Verwendung von Source Lines of Code (SLOC) zur Berechnung ähnlicher Größen wie Volumen, Schwierigkeit, Aufwand, Zeit und Fehler belegen? Ich würde vermuten, dass das Volumen möglicherweise nur einer SLOC-Anzahl entspricht und die Schwierigkeit möglicherweise der zyklomatischen Komplexität (und möglicherweise anderen Maßnahmen) entspricht. Mir ist auch bewusst, dass das Messen des Aufwands, der Produktivität oder der Zeit in SLOC möglicherweise irreführend ist.
quelle
Antworten:
Microsoft Research hat in diesem Bereich einige Arbeiten durchgeführt. Schauen Sie sich diese Seite an: http://research.microsoft.com/en-us/people/nachin/ . Obwohl nicht speziell auf Halstead basierend, haben Nachi und sein Team einige Untersuchungen unter Verwendung von Halstead, zyklomatischer Komplexität, Codeabwanderung und anderen Maßnahmen durchgeführt, um das relative Risiko und die Fragilität für Änderungen in Codebereichen zu bewerten. Es gibt auch ein interessantes Papier darüber, wie organisatorische Effektivität ebenfalls eine große Rolle spielt, aber das ist kein Thema. :)
quelle
Es gibt eine ganze Reihe solcher Studien. Google ist dein Freund.
Die Metriken von Halstead gerieten in Ungnade, als gezeigt wurde, dass sie alle stark mit dem rohen SLOC (Quellcodezeilen) korrelierten. An diesem Punkt wird es einfacher, den SLOC zu messen und damit fertig zu werden.
Hier ist ein Ergebnis von Google Books .
quelle
Dass das Halstead-Volumen mit dem SLOC korreliert, ist interessant, aber begrenzt. Grundlegende Statistik: Die lineare Korrelation ist nicht transitiv. X korreliert mit Y, Y korreliert mit Z BEDEUTET NICHT, dass X mit Z korreliert ist.
quelle