Qualitätsinvestitionen statt technischer Schulden

CodeQ Invest

Bei einem großen Softwaresystem kann das Schätzen für die Qualitätsinvestitionen aufwendig sein. Ebenso kann es schwierig sein, die Änderungswahrscheinlichkeit einzelner Komponenten oder Klassen zu bestimmen. Daher ist ein Werkzeug entstanden, das bei der Schätzung helfen soll und einen besseren Überblick über eine Codebasis ermöglicht: das unter der GPL stehende CodeQ Invest.

Ein Vorteil des Tools ist die Unterstützung bei der Schätzung der Änderungswahrscheinlichkeiten. Sie lässt sich als Wert direkt schätzen oder auf Basis der Historie des Versionskontrollsystems bestimmen. Dabei wird davon ausgegangen, dass vergangene Änderungen eine Aussage über zukünftige ermöglichen – das ist natürlich nicht immer der Fall. Wenn das Team daher eine manuelle Schätzung für einzelne Dateien, Pakete oder Module angibt, wird stattdessen diese als Änderungswahrscheinlichkeit verwendet. Eine von 100 Prozent bedeutet dabei, dass jede betrachtete Datei auf jeden Fall geändert wird. Da die Änderungswahrscheinlichkeit über das Eintreten der Nichtsanierungskosten bestimmt, ist dieser Faktor in die Gewinnrechnung einzubeziehen:

Gewinn = NRC * Änderungswahrscheinlichkeit – RC

Bei CodeQ Invest formuliert das Team Qualitätsanforderungen, die ein gewünschtes Qualitätsoptimum ausdrücken. Damit die Analyse einer Codebasis mit einer Menge an Qualitätsanforderungen automatisch erfolgen kann, sind die Anforderungen in Form eines Grenzwerts einer Metrik definiert. Um beim Beispiel von oben zu bleiben, müsste für das Bestellsystem eine Qualitätsanforderung existieren, die aussagt, dass die Testabdeckung nicht kleiner als beispielsweise 80 Prozent sein darf. Ebenso werden für jede Qualitätsanforderung die Sanierungs- und Nichtsanierungskosten geschätzt. Wichtig ist, dass die betrachteten Zeiträume und Komponenten nicht zu klein sind. Ansonsten entsteht später der Eindruck von Mikromanagement. Mit den hinterlegten Qualitätsanforderungen werden die Codedateien eines gegebenen Softwaresystems automatisch analysiert. Damit liegen alle benötigten Schätzungen vor.

CodeQ Invest aggregiert alle Kostenwerte,Schätzungen und Gewinne in verschiedenen Sichten. Eine zoombare Tree Map zeigt die Codebasis und das Investitionspotenzial in unterschiedlicher Tiefe, und Säulendiagramme ermöglichen den Vergleich verschiedener Investitionsbeträge anhand des ROIs (Abb. 3).

Projektansicht von CodeQ Invest: Links wird das Investitionspotenzial der Codebasis in Form einer Tree Map visualisiert, und es lassen sich manuelle Schätzungen abgeben. Rechts werden die ROIs für unterschiedliche Investitionsbeträge und ein Qualitätsverbesserungsplan für die Behebung von Qualitätsmängeln angezeigt (Abb 3).

Derzeit lässt sich CodeQ Invest in Java-Projekten einsetzen. Zuvor muss allerdings SonarQube installiert sein, damit sich die Metrikwerte laden lassen. Zur Bestimmung der Änderungswahrscheinlichkeit auf Basis der Versionskontrolle wird bislang Subversion unterstützt.

CodeQ Invest ist ein Mittel, das bei der Umsetzung von Qualitätsinvestitionen helfen kann. Im Kern sind nach wie vor Schätzungen nötig, die das Team tätigen muss. Die vom Werkzeug ermittelten Werte hängen davon ab, welche Werte man für die RCs und NRCs der einzelnen Qualitätsmetriken einstellt und gegebenenfalls von der manuell abgeschätzten Änderungswahrscheinlichkeit. Vor einem Einsatz von CodeQ Invest ist abzuwägen, wie die Einführung von Qualitätsinvestitionen besser funktioniert: mit groben manuellen Schätzungen für große Aufräumarbeiten (top down) ohne Tool-Unterstützung oder mit einem Tool, wobei die Schätzung "bottom up" funktioniert. Auf jeden Fall kann das Tool einen interessanten Einblick in die Qualität und die Änderungshistorie des Systems bieten.