Dieser Beitrag wurde vor fast genau einem Jahr verfasst und deswegen heute als lesenwert
angekündigt. Was natürlich nicht bedeutet, dass ihr nicht kommentieren dürft.
am 3. September 2009
Heute mal wieder ein Thema, das ich liebe. Softwaremetriken. Aber wenn ich es liebe, warum schreibe ich erst nach über einem Jahr das erste mal wirklich drüber? Naja Softwaremetriken sind nicht so einfach zu verstehen und damit sind sie auch nicht unbedingt einfach zu beschreiben. Ob ich das jetzt besonder gut hinbekommen werde, weiß ich natürlich nicht. So wie ich euch kenne, werden wir trotzdem am Ende des Tages eine “perfekte” Definition zusammengebracht haben. Unglaublich, wie ich es immer wieder schaffe euch zum Kommentieren zu bringen.
Was sind also Softwaremetriken? Eigentlich sind sie Funktionen, die ein Stück Software nehmen und daraus einen Zahlenwert berechnen. Hoher Wert ist schlecht, niedriger Wert ist gut (manchmal auch andersrum). Natürlich erkennen wir aus dem Satz schon, warum die Metriken entstanden sind. Wir machen also Code damit messbar und können damit eine Aussage treffen über die Qualität. Zumindest bekommen wir ein ungefähres Gefühl.
Wir können uns also ein Stück Code nehmen, Metriken drüber laufen lassen und dann sagen, ob der Code gut oder schlecht ist. Da es sich hier aber um statische Codeanalyse handelt (zumindest bei den Metriken, die wir hier behandeln), können wir eigentlich nur was zur Wartbarkeit, Architektur und Übersichtlichkeit sagen. Alles was zur Laufzeit gehört, wie Speicherverbrauch oder Geschwindigkeit können wir nicht so schnell abdecken.
Um das ganze ein wenig konkreter zu machen, hier ein einfaches Beispiel. Vielleicht sogar die einfachste Metrik. Lines of Code einer Methode. In dieser Metrik haben wir eine ganz einfache Funktion, um den Quellcode in einen Zahlenwert umzuwandeln. Wir Zählen einfach die Zeilen, der Methode und das ist unsere Zahl. Dabei gehen wir davon aus, dass eine Methode leichter zu warten ist, je kürzer sie ist. Ich würde mal sagen, dass alles unter 40 Zeilen vertretbar ist für eine Methode. Falls die Metrik also einen Wert über 40 ausspuckt, sollte man sich die Methode noch einmal anschauen.
Das war jetzt natürlich eine sehr einfache Metrik. Trotzdem erfüllt sie alle Eigenschaften und ist somit ein vollwertiges Mitglied dieser Familie. Wichtig ist hierbei eigentlich nur, dass wir uns merken, dass Metriken Quellcode auf Zahlen abbilden und damit messbar machen. Solche Umwandlungsformeln können beliebig komplex werden und jeder kann sich seine eigenen Regeln erstellen. Trotzdem gibt es aber einige Metriken, wie zum Beispiel die nPath Complexity oder die McCabe Metrik, die quasi zum Standard geworden sind.
Ich würde einfach mal vorschlagen, dass ich mir die nächsten Wochen ab und zu mal eine Standard-Metrik herausnehme und ein wenig darüber erzähle. Tools, die schon viel für uns machen, werde ich auch vorstellen.