Immer wenn ich von Versuchen höre, eine Art codebasierte Metrik mit Softwarefehlern in Verbindung zu bringen, denke ich zuerst an McCabes zyklomatische Komplexität . Verschiedene Studien haben ergeben, dass ein Zusammenhang zwischen einer hohen zyklomatischen Komplexität und der Anzahl der Defekte besteht. Andere Studien, die Module mit einer ähnlichen Größe (in Bezug auf Codezeilen) untersuchten, stellten jedoch möglicherweise keine Korrelation fest.
Für mich könnten sowohl die Anzahl der Zeilen in einem Modul als auch die zyklomatische Komplexität als gute Indikatoren für mögliche Fehler dienen oder möglicherweise die Wahrscheinlichkeit erhöhen, dass Fehler auftreten, wenn Änderungen an einem Modul vorgenommen werden. Ein Modul (insbesondere auf Klassen- oder Methodenebene) mit hoher zyklomatischer Komplexität ist schwerer zu verstehen, da es eine große Anzahl unabhängiger Pfade durch den Code gibt. Ein Modul (wiederum insbesondere auf Klassen- oder Methodenebene) mit einer großen Anzahl von Zeilen ist ebenfalls schwer zu verstehen, da die Zunahme der Zeilen bedeutet, dass mehr Dinge geschehen. Es gibt viele statische Analysewerkzeuge, die die Berechnung beider Quellcodezeilen anhand festgelegter Regeln und der zyklomatischen Komplexität unterstützen. Es scheint, als würde das Erfassen dieser Regeln die gering hängenden Früchte packen.
Die Halstead-Metrik könnte auch interessant sein. Leider scheint ihre Gültigkeit etwas umstritten zu sein, sodass ich mich nicht unbedingt auf sie verlassen müsste. Eine von Halsteads Maßnahmen ist die Schätzung von Fehlern auf der Grundlage des Aufwands oder des Volumens (ein Verhältnis zwischen der Programmlänge in Bezug auf die Gesamtzahl der Operatoren und Operanden und dem Programmvokabular in Bezug auf die einzelnen Operatoren und Operatoren).
Es gibt auch eine Gruppe von Metriken, die als CK-Metriken bezeichnet werden. Die erste Definition dieser Metrik-Suite befindet sich in einem Artikel mit dem Titel Eine Metrik-Suite für objektorientiertes Design von Chidamber und Kemerer. Sie definieren gewichtete Methoden pro Klasse, Tiefe des Vererbungsbaums, Anzahl der Kinder, Kopplung zwischen Objektklassen, Antwort für eine Klasse und mangelnde Kohäsion in Methoden. Ihr Artikel enthält die Berechnungsmethoden sowie eine Beschreibung der Analyse der einzelnen Methoden.
In Bezug auf die wissenschaftliche Literatur, die diese Metriken analysiert, könnte Sie die empirische Analyse von CK-Metriken auf objektorientierte Entwurfskomplexität: Implikationen für Softwarefehler interessieren, die von Ramanath Subramanyam und MS Krishna verfasst wurde. Sie analysierten drei der sechs CK-Metriken (gewichtete Methoden pro Klasse, Kopplung zwischen Objektklasse und Tiefe des Vererbungsbaums). Ein Blick durch das Papier zeigt, dass es sich um potenziell gültige Messgrößen handelt, die jedoch mit Vorsicht interpretiert werden müssen, da eine "Verbesserung" zu anderen Änderungen führen kann, die ebenfalls zu einer höheren Wahrscheinlichkeit von Fehlern führen.
Die von Yuming Zhou und Hareton Leung verfasste empirische Analyse objektorientierter Entwurfsmetriken zur Vorhersage von Fehlern mit hohem und niedrigem Schweregrad untersucht auch die CK-Metriken. Ihr Ansatz bestand darin, zu bestimmen, ob sie Fehler basierend auf diesen Metriken vorhersagen können. Sie stellten fest, dass viele der CK-Metriken (mit Ausnahme der Tiefe des Vererbungsbaums und der Anzahl der Kinder) ein gewisses Maß an statistischer Signifikanz bei der Vorhersage von Bereichen haben, in denen Fehler lokalisiert werden könnten.
Wenn Sie eine IEEE-Mitgliedschaft haben, würde ich empfehlen, in den IEEE-Transaktionen zur Softwareentwicklung nach mehr wissenschaftlichen Veröffentlichungen und in der IEEE-Software nach realistischeren und angewandten Berichten zu suchen . Der ACM verfügt möglicherweise auch über relevante Veröffentlichungen in seiner digitalen Bibliothek .