ChatGPT hat in letzter Zeit stark an Popularität gewonnen. Als Team mit langjähriger Erfahrung im Bereich Codequalität wollten wir damit experimentieren und baten ChatGPT, eine neue Softwaremetrik zu entwickeln. Vor dem Absenden der Anfrage waren wir uns nicht sicher, ob wir ein brauchbares Ergebnis – oder überhaupt eines – erhalten würden. Wir rechneten mit einer Antwort in etwa wie:
"Creating a new software metric requires extensive testing in real projects to demonstrate its reliability as an indicator for improving code quality."
Zu unserer Überraschung erhielten wir jedoch tatsächlich eine Metrik :)

Doch ist diese Metrik wirklich ein zuverlässiger Indikator für Wartbarkeit?
Analysieren wir die Formel: `lowCyclomaticComplexity + HighCohesion`
Die Überlegung hinter dieser Formel lautet:
- Die Wartbarkeit hängt von der Komplexität der Methoden ab.
- Die Wartbarkeit hängt außerdem von der Kohäsion der Typen ab.
- Zwischen zyklomatischer Komplexität und Kohäsion besteht keine direkte Korrelation; deshalb wurde in der Formel der Operator `+` verwendet.
- Für ein zuverlässigeres Ergebnis ist es besser, ein Verhältnis zu verwenden, das die Codegröße berücksichtigt.
Auf den ersten Blick wirkt diese Formel vielversprechend. In realen Projekten gibt es jedoch ein wesentliches Problem, insbesondere im Hinblick auf die Aussage:
"There's no direct correlation between cyclomatic complexity and cohesion."
In solchen Fällen müssen wir prüfen, ob die beiden Metriken eng zusammenhängen oder ob eine davon die andere dauerhaft deutlich übersteigt. Dominiert eine Metrik konstant, kann die kombinierte Metrik ihre Aussagekraft verlieren. In unserem Fall könnte `lowComplexity` wesentlich größer sein als die Kohäsionsmetrik, sie dadurch überdecken und die Gesamtmetrik weniger aussagekräftig machen.
Um die Metrik zu verbessern, können zusätzliche Operatoren wie natürlicher Logarithmus, Multiplikation, Division oder andere mathematische Funktionen eingeführt werden. So lässt sich die Formel verfeinern und ein zuverlässigeres Ergebnis erzielen – ähnlich wie beim Maintainability Index:
`Maintainability Index = 171 – 5.2 * ln(Halstead Volume) – 0.23 * (Cyclomatic Complexity) – 16.2 * ln(Lines of Code)`
Wie verfeinert man Formeln für Softwaremetriken?
Dafür gibt es keinen Zaubertrick. Erforderlich sind umfangreiche Tests in realen Projekten und die Arbeit mit diesen Metriken über Monate oder sogar Jahre, um diejenigen Faktoren und Operatoren zu identifizieren, die zu einer verlässlichen Metrik führen.
Fazit
Wichtig ist: ChatGPT und KI im Allgemeinen sind wertvolle Werkzeuge, werden menschliche Expertise aber auf absehbare Zeit nicht ersetzen. Menschliche Validierung und Kontrolle bleiben in allen Bereichen entscheidend. KI nimmt Ihnen also nicht die Arbeit ab – sie kann Ihnen helfen, sie besser zu erledigen.
