Andrey Popov - stock.adobe.com

Wie man technische Schulden verfolgt und misst

Technische Schulden können ohne Wissen oder Kontrolle steigen. Mit mehreren Methoden und Werkzeugen können Sie technische Schulden verfolgen und verringern.

Um ein möglichst gutes Ergebnis zu erzielen, müssen bei Technologieprojekten unzählige Entscheidungen getroffen werden. Doch nicht immer sind die besten Entscheidungen wünschenswert – oder gar möglich –, wenn ein Projekt in Angriff genommen wird.

Bei Softwareentwicklungs- und IT-Infrastruktur-Projekten müssen die Verantwortlichen manchmal Abstriche machen. Beispielsweise kann sich die Umsetzung von Features oder Funktionen verzögern oder die Leistung der Software stellt sich als nur suboptimal heraus. Zu solchen Mängeln kommt es oft dann, wenn ein Projekt schnell vorangebracht oder abgeschlossen werden muss. Technische Schulden beschreiben die finanziellen und materiellen Kosten, die bei einer späteren Reparatur anfallen.

Technische Schulden sind oft nur schwer zu finden, zu messen und zu verfolgen. Vergessene Kompromisse können schnell zu langfristigen Belastungen werden. Unternehmen sollten deshalb technische Schulden in den Griff bekommen, bevor sie die Wettbewerbsfähigkeit des Unternehmens beeinträchtigen – oder gar seine Funktionsfähigkeit.

Technische Schulden – Herausforderungen

Stellen Sie sich eine alte Software vor, die auf einer speziellen Hardware läuft – beispielsweise auf einem veralteten Server mit einem bestimmten Prozessortyp. Die Plattform ist für das Unternehmen von entscheidender Bedeutung.

Doch das Unternehmen beschließt, auf dringend notwendige Software-Upgrades zu verzichten, die wettbewerbsfähige Funktionen hinzufügen und die Ausführung der Anwendungen auf aktuellerer Hardware oder virtuellen Maschinen (VM) ermöglichen. Eines Tages fällt der Server aus. Dem Unternehmen fehlt es an geeigneter Hardware für eine kritische Applikation und es muss Zeit und Geld aufwenden, um eine Ersatzanwendung zu erstellen.

Obwohl dies ein extremes Beispiel ist, zeigt es, dass die Folgen technischer Schulden verheerend sein können. Technische Schulden können jedoch auch in weitaus subtileren Situationen auftreten, zum Beispiel:

  • Einem Projekt mangelt es an Klarheit bei den Definitionen oder Anforderungen. Das fertige Projekt erfordert Änderungen und Nachbesserungen aufgrund von zusätzlichen Definitionen und Anforderungen oder Änderungen in letzter Minute.
  • Schlechter Stil. Dem Code fehlen Standards, oder die Teams installieren und richten Hardware ohne korrekte Port- und Kabelmarkierungen ein, was spätere Änderungen oder Services problematisch macht.
  • Unzureichende oder unterlassene Tests. Software-Features und -Funktionen können Fehler enthalten, die später gepatcht und behoben werden müssen.
  • Unzureichende Konfiguration. Übersehene Hardwareeinstellungen können die Leistung beeinträchtigen und zu Sicherheitslücken führen.
  • Unzureichende Dokumentation. Hardware oder Software, die nicht ordnungsgemäß dokumentiert ist, zwingt die Teams dazu, vieles neu zu erlernen oder danach zu suchen. Dieser zusätzliche Aufwand ist die technische Schuld.
  • Schlechte Zusammenarbeit. Silos sind berüchtigt für technische Schulden, die entstehen, wenn mehrere parallele Arbeiten in Einklang gebracht und zusammengeführt werden.
  • Der geschäftliche Druck zwingt zu Kompromissen, um ein Projekt abzuschließen oder freizugeben, bevor es fertig ist. Das Ergebnis ist unvollständig oder es mangelt an Performance und muss später korrigiert werden.
  • Verzögerungen bei Aktualisierungen. Das Refactoring von altem Code verbessert die Leistung und Interoperabilität. Das Verzögern solcher Aktualisierungen und Upgrades führt zu technischen Schulden.
  • Fehler. Fehler sind das Paradebeispiel technischer Schulden, da ihre Behebung Zeit und Mühe erfordert.
  • Eng gekoppelter und nicht-modularer Code. Dem Code mangelt es an Flexibilität. Er kann deshalb schnell zu technischen Schulden führen, wenn Änderungen oder Anpassungen erforderlich sind, um veränderte Geschäftsanforderungen zu erfüllen.

Wie man technische Schulden misst

Technische Schulden sind die Liste aller Aufgaben, die Ingenieure oder Entwickler durchführen müssen, um ein Projekt abzuschließen oder zu korrigieren. Je länger die Aufgabenliste wird, desto größer werden die technischen Schulden. Die Gesamtzeit, die für die Bedienung dieser technischen Schulden aufgewendet wird – die so genannten technischen Schuldzinsen – steigt bis zu dem Punkt, an dem ein Projekt im Grunde irreparabel ist.

Unternehmen können eine Reihe von Metriken verwenden, um technische Schulden durch eine objektivere Linse zu sehen. Das sind:

Fehlerquoten. Softwareentwickler können eine Auflistung von Fehlern oder das Verhältnis von neuen zu alten Fehlern verwenden. Wenn es beispielsweise nur wenige neue Fehler und eine große Anzahl behobener Fehler gibt, ist das Verhältnis gering – und damit auch die technischen Schulden. Wenn die Zahl der neuen Fehler die Zahl der behobenen Fehler übersteigt, wächst die technische Schuld für das Fehlermanagement – und die Verantwortlichen sollten sich mit dem Problem befassen.

Codequalität. Um die Komplexität und Qualität des Codes zu quantifizieren, sollten Sie folgende Merkmale berücksichtigen:

  • die zyklomatische (McCabe-Metrik) und kognitive Komplexität
  • die Anzahl der Codezeilen
  • die Wartbarkeit
  • die Vererbungstiefe
  • afferente (nach innen gerichteten) und efferente (nach außen gerichteten) Kopplungen,
  • die Verschachtelungstiefe
  • die Zeit zum Schreiben von Code-Zeilen

Sinkende Qualitätsmetriken sind ein häufiges Anzeichen für wachsende technische Schulden. Entwicklungsteams, die Codierungsstandards verwenden und sich um qualitativ hochwertigen Code bemühen, können die technischen Schulden verringern.

Fertigstellungszeit. Registrieren Sie die Zeit, die für die Bearbeitung von Tickets benötigt wird – insbesondere bei Problemen mit niedriger Priorität. Wenn Techniker und Entwickler viel Zeit für relativ einfache Aufgaben aufwenden, kann dies ein Zeichen für Probleme mit dem Code oder der Infrastruktur sein. Wenn ein Techniker beispielsweise 45 Minuten braucht, um ein Kabel von einem Anschluss zu einem anderen zu verlegen, weil die Kabel nicht richtig gekennzeichnet sind, ist das ein Zeichen für technische Schulden in der Infrastruktur.

Abbildung 1: So berechnen Sie die technischen Schulden.
Abbildung 1: So berechnen Sie die technischen Schulden.

Nacharbeit oder Abwanderung. Hierbei handelt es sich um die Anzahl der Fälle, in denen eine Infrastrukturaufgabe oder ein Codesegment geändert oder überarbeitet werden muss. Nacharbeit ist bei neuen Projekten üblich, sollte aber im Laufe der Zeit auf nahezu null sinken. Wenn Ingenieure die Infrastruktur oder den Code in der Produktion überarbeiten, haben sie es wahrscheinlich mit technischen Schulden zu tun.

Technische Schuldenquote (Technical Debt Ratio, TDR). Diese Kennzahl schätzt die zukünftigen Kosten der technischen Schulden. Die TDR ist ein einfaches Verhältnis, das die Kosten für die Behebung der Probleme mit den Gesamtkosten für die Projekterstellung vergleicht. Ein ideales TDR-Verhältnis liegt bei etwa fünf Prozent und weniger. Deutlich höhere Quoten können ein ernsthaftes Problem für das Unternehmen darstellen.

Tracking der technischen Schulden

Die Risiken und Herausforderungen technischer Schulden zu verstehen, reicht nicht aus. Unternehmen brauchen auch ein objektives Mittel zu deren Erfassung und Verfolgung.

Ein gängiger Ansatz für die Schuldenerfassung ist die Erstellung eines Verzeichnisses der technischen Schulden. Dies kann eine Liste oder ein Dokument sein, das die Probleme identifiziert, die sich daraus ergebenden Konsequenzen erläutert sowie Ressourcen, wie zum Beispiel Zeit und finanzieller Aufwand, zur Behebung des Problems vorschlägt. Manche Unternehmen verknüpfen das Verzeichnis der technischen Schulden mit der Projekt-Roadmap. Damit können sie künftige Merkmale und Funktionen ermitteln, die von der Behebung der einzelnen Probleme profitieren würden.

Jede Liste oder jedes Verzeichnis technischer Schulden enthält auch eine Kategorisierung. Einige Unternehmen kategorisieren Probleme nach Art oder Komplexität – zum Beispiel Codeschulden, Architektur- oder Designschulden, Infrastrukturschulden und Testschulden. Andere listen Probleme nach Schweregrad oder Priorität auf, ähnlich wie bei herkömmlichen Bug-Tracking-Modellen. Die Kategorisierung von Problemen nach ihrem Schweregrad kann zum Beispiel in niedrig, geringfügig, schwerwiegend oder kritisch erfolgen – die nach ihrer Priorität in niedrig, mittel, hoch oder sofort.

Unternehmen können Probleme mit technischen Schulden auf die gleiche Weise verfolgen, wie sie Softwarefehler verfolgen und beheben: Sie verwenden dafür am besten ein Ticket- oder Tracking-System. Bei diesem Ansatz werden die technischen Schulden zusammen mit den Fehlern aufgelistet und priorisiert, so dass die technischen Schulden mit den Softwarefehlern oder -problemen auf derselben Seite stehen.

Hier einige Beispiele für die Kategorisierung geringfügiger und kritischer technischer Schulden:

  • Ein Softwareprojekt verwendet eine ältere API, obwohl eine neuere verfügbar ist. Die neuere ist aber noch nicht bereit zur Implementierung. Die technische Schuld besteht darin, die Software auf die neueste API zu aktualisieren, was ein unkompliziertes Update ist. Dieses können Teams problemlos durchführen – vielleicht zusammen mit regelmäßigen Releases oder Fehlerbehebungen.
  • Nehmen wir zum Vergleich an, ein Softwareprojekt muss eine traditionelle monolithische Anwendung in eine Microservices-Anwendung für Cloud-Bereitstellungen und Skalierbarkeit weiterentwickeln. Eine solche weitreichende technische Schuld erfordert viele Schritte oder Phasen, da sie sich auf das grundlegende Design und die Architektur des Projekts auswirkt.

Nicht alle technischen Schulden sind gleich. Unternehmen können eine Vielzahl von Mitteln anwenden, um Probleme und deren Lösung aufzulisten und zu kategorisieren. Glücklicherweise stehen zur Unterstützung Tools bereit.

Tools zur Verwaltung technischer Schulden

Help-Ticketing-Systeme gelten als Indikator und als Ressource für die Ermittlung potenzieller Probleme. Es gibt jedoch zahlreiche Tools, die bei der Messung und Verwaltung der technischen Schulden helfen – insbesondere im Rahmen von Projekten zur Softwareentwicklung. Hier sind einige Beispiele:

  • Jira überwacht den Rückstand im Management-Workflow eines Projekts.
  • SonarQube misst und verbessert die Codequalität.
  • Stepsize verfolgt Probleme in der Codebasis.
  • Teamscale misst und verbessert die Codequalität.
  • Code Climate Velocity verbessert Arbeitsabläufe und weist Ressourcen zu.

Die meisten Tools lassen sich in das Softwareentwicklungs-Toolset integrieren und bieten Merkmale und Funktionen, die über Hinweise auf technische Schulden hinausgehen. Am besten testen Sie potenzielle Tools und sammeln Erfahrung, bevor Sie eine Investition tätigen.

Erfahren Sie mehr über Softwareentwicklung