Einführung in technische Schulden

Abgeschlossen

Technische Schulden sind ein Begriff, der die zukünftigen Kosten beschreibt, die von der Auswahl einer einfachen Lösung heute stammen, anstatt bessere Methoden zu verwenden, die länger dauern würden.

Der Begriff "technische Schulden" wurde gewählt, weil es ähnlich wie die Finanzschulden ist. Es ist üblich, dass Menschen mit finanziellen Schulden Entscheidungen treffen, die zu der Zeit richtig erscheinen oder als die einzige Option erscheinen, aber dadurch steigen die Zinsen.

Je mehr Zinsen sich ansammeln, desto schwieriger wird es für sie in Zukunft und desto weniger Optionen haben sie später. Bei finanziellen Schulden steigen bald die Zinskosten weiter an, sodass ein Schneeballeffekt entsteht. Ebenso kann sich die technische Verschuldung bis zu dem Punkt entwickeln, an dem Entwickler fast alle Ihre Zeit mit der Behebung von Problemen verbringen und Nacharbeiten durchführen, entweder geplant oder ungeplant, anstatt Wert hinzuzufügen.

Wie kommt es dazu?

Die häufigste Ausrede sind knappe Terminvorgaben. Wenn Entwickler gezwungen sind, Code in kurzer Zeit zu erstellen, nehmen sie oft Abkürzungen. Anstatt beispielsweise eine Methode umzugestalten, um neue Funktionen einzuschließen, können sie sie kopieren, um eine neue Version zu erstellen. Anschließend testen sie nur den neuen Code und können die erforderliche Teststufe vermeiden, wenn sie die ursprüngliche Methode ändern, da andere Teile des Codes sie verwenden.

Jetzt verfügen sie über zwei Kopien desselben Codes, die in Zukunft geändert werden müssen, statt eines, und sie riskieren das Risiko, dass die Logik unterschiedlich wird. Es gibt viele Ursachen. So kann es beispielsweise an technischen Fähigkeiten und Reife bei den Entwicklern mangeln, oder es gibt keine klare Produktverantwortung oder -ausrichtung.

Möglicherweise verfügt die Organisation überhaupt nicht über Codierungsstandards, sodass die Entwickler nicht einmal wissen, was sie produzieren sollten. Die Entwickler haben möglicherweise keine eindeutigen Anforderungen, die Sie verfolgen müssen, oder sie sind möglicherweise kurzfristigen Änderungen an Anforderungen ausgesetzt.

Erforderliche Umgestaltungsarbeiten können verzögert werden. Es gibt möglicherweise keine Tests der Codequalität (manuell oder automatisiert). Letztendlich wird es immer schwieriger, in einem angemessenen Zeitrahmen und zu angemessenen Kosten Kundennutzen zu realisieren.

Technische Schulden sind einer der Hauptgründe, warum Projekte nicht die vorgesehenen Terminvorgaben erfüllen.

Im Laufe der Zeit wachsen sie in etwa auf die gleiche Weise wie finanzielle Schulden. Häufige Quellen für technische Schulden sind:

  • Fehlender Codierungsstil und -standards
  • Fehlendes oder schlechtes Design von Komponententestfällen
  • Ignorieren oder Nichtverständnis objektorientierter Entwurfsprinzipien
  • Monolithische Klassen und Codebibliotheken
  • Schlecht geplante Verwendung von Technologie, Architektur und Ansatz (vergessen Sie, dass alle Systemattribute, die Wartung, Benutzererfahrung, Skalierbarkeit und andere beeinflussen, berücksichtigt werden müssen)
  • Over-Engineering-Code (Hinzufügen oder Erstellen von Code, der nicht erforderlich ist, Hinzufügen von benutzerdefiniertem Code, wenn vorhandene Bibliotheken ausreichend sind, oder Erstellen von Ebenen oder Komponenten, die nicht benötigt werden)
  • Unzureichende Kommentare und Dokumentationen
  • Kein Schreiben von Selbstdokumentierungscode (einschließlich Klassen-, Methoden- und Variablennamen, die beschreibend sind oder auf die Absicht hinweisen)
  • Abkürzungen nutzen, um Fristen einzuhalten
  • "Toter Code wird beibehalten"

Hinweis

Im Laufe der Zeit müssen die technischen Schulden zurückbezahlt werden. Andernfalls dauert die Fähigkeit des Teams, Probleme zu beheben und neue Features und Verbesserungen zu implementieren, länger und wird schließlich kostenintensiv.

Wir haben gesehen, dass technische Schulden während der Entwicklung Probleme verursachen und es viel schwieriger macht, zusätzlichen Kundenwert hinzuzufügen.

Die technische Verschuldung in einem Projekt reduziert die Produktivität, frustriert Entwicklungsteams, macht Code sowohl schwer zu verstehen als auch zerbrechlich, erhöht die Zeit, um Änderungen vorzunehmen und diese Änderungen zu validieren. Ungeplante Arbeiten steht geplanten Arbeiten häufig im Weg.

Langfristig schwächt sie auch die Stärke der Organisation. Technische Schulden neigen dazu, sich in einer Organisation einzuschleichen. Sie beginnen klein und wachsen im Laufe der Zeit. Jedes Mal, wenn ein schneller Hack durchgeführt wird oder Tests übersprungen werden, weil Änderungen übersprungen werden müssen, wird das Problem schlimmer und schlimmer. Die Supportkosten werden höher und höher, und schließlich entsteht ein ernstes Problem.

Schließlich kann die Organisation nicht mehr rechtzeitig und kostengünstig auf die Anforderungen ihrer Kunden reagieren.

Automatisierte Messung für die Überwachung

Eine zentrale Möglichkeit zur Minimierung des konstanten Aufbaus technischer Schulden besteht darin, automatisierte Tests und Bewertungen zu verwenden.

In den folgenden Demos untersuchen wir eines der gängigen Tools zur Bewertung der Schulden: SonarCloud. (Die ursprüngliche lokale Version war SonarQube.)

Es sind auch andere Tools verfügbar, und wir werden einige davon vorstellen.

Später (im nächsten Praxislab) erfahren Sie, wie Sie Ihre Azure Pipelines für die Verwendung von SonarCloud konfigurieren, die Analyseergebnisse verstehen und schließlich Qualitätsprofile konfigurieren, um die Regelsätze zu steuern, die von SonarCloud bei der Analyse Ihrer Projekte verwendet werden.

Weitere Informationen finden Sie unter SonarCloud.

Zu beurteilen ist Folgendes:

Azure DevOps kann in eine Vielzahl vorhandener Tools integriert werden, die zur Überprüfung der Codequalität während der Builds verwendet werden.

Welche Codequalitätstools verwenden Sie derzeit (falls vorhanden)?

Was gefällt Ihnen an den Tools und was nicht?