Technische Schulden: die möglichen Folgen von Einsparungen für die Softwareentwicklung

Technische Schulden erklärt

Technische Schulden: die möglichen Folgen von Einsparungen für die Softwareentwicklung

Wenn ein Entwicklungsteam bei der Softwareentwicklung oder der Planung der IT-Infrastruktur sparsam oder überstürzt ist, werden diese Einsparungen in Form von technischen Schulden ausgezahlt. Technische Schulden beziehen sich auf die Folgen vorsätzlicher oder unbeabsichtigter Fahrlässigkeit, Fehler oder Mängel in Bezug auf den Kodex. Nachfolgende Korrekturen und Wartungsmaßnahmen verlangsamen die Produktivität und verursachen hohe Zusatzkosten . Was muss berücksichtigt werden, um technische Schulden bei der Softwareentwicklung zu vermeiden?

Index
  1. Warum redest du über technische Schulden?
  2. Der technische Schuldenquadrant: vier Arten von Schulden
  3. Welchen Ursprung kann die technische Verschuldung haben?
  4. Technische Schulden und agile Softwareentwicklung
  5. Welche Auswirkungen hat die technische Verschuldung auf die Softwareentwicklung?
  6. Wie können Sie technische Schulden vermeiden?

Warum redest du über technische Schulden?

1992 führte Ward Cunningham, Programmierer und Mitautor des Manifests für agile Softwareentwicklung , die Metapher der technischen Verschuldung ein. Mit diesem Konzept wollte Cunningham die Bedeutung des Refactorings, dh der regelmäßigen Korrektur des Codes, für die Software veranschaulichen. Nur so kann verhindert werden, dass Software aufgrund wachsender betrieblicher und struktureller Mängel immer mehr Schulden macht .

Der Begriff Schulden impliziert auch Zinsen, da technische Schulden für die Vertragsunternehmen insbesondere aus finanzieller Sicht relevant sind. Technische Schulden bedeuten nicht nur mehr Aufwand und geringere Produktivität aufgrund nachfolgender Wartungsmaßnahmen, sondern auch mehr Kosten. Je mehr das Management eines Teams die Wartung einer fehlerhaften IT-Infrastruktur oder -Anwendung vernachlässigt, desto mehr Zinsen generiert die Verschuldung und desto teurer werden die Codekorrekturen.

Definition: Technische Schulden

Bei technischen Schulden werden absichtliche oder unbeabsichtigte Fehler, Lücken und Mängel im Code definiert , die durch mangelnde Kommunikation, Teamverwaltung, Qualifizierung oder vorschnelle Produktfreigabe entstehen und aufgrund mangelnder Umgestaltung ständig zunehmen.

Der technische Schuldenquadrant: vier Arten von Schulden

Laut Ward Cunningham entsteht die technische Verschuldung aufgrund von Mängeln im Kodex, die aufgrund von Zeit- oder Budgetmangel zu einer schnelleren Lösung des Problems führen, obwohl sie mangelhaft sind. Gründlich und gründlich geschriebener Code ist mühsam und zeitaufwändig. Aus diesem Grund entscheiden sich Entwickler manchmal für schmutzigen Code , um Zeit und Mühe zu sparen. Aber diese Ersparnis wird mit Schulden bezahlt.

See also  XML-RPC: Remoteprozeduraufrufe im XML-Format

Für Cunningham ist dieser wirtschaftliche Aspekt der Programmierung nicht ungewöhnlich oder unnatürlich. Falls die technische Verschuldung nicht durch Refactoring ausgeglichen wird und der Code nicht regelmäßig optimiert wird, wird die Entwicklung möglicherweise aufgrund metaphorischer Interessen unterbrochen oder gestoppt.

Martin Fowler, Autor von Refactoring: Verbesserung des Designs bestehender Codes , konkretisierte Cunninghams Metapher und teilte die technischen Schulden in vier Typen ein, die er im Quadranten der technischen Schulden darstellte :

 

Rücksichtslose Schulden

Umsichtige Schulden

Vorsätzliche Verschuldung

 

  • Zeit- / Budgetmangel
  • Schlampiges Refactoring

 

 

  • Priorisierung der schnellen Softwarebereitstellung und Verpflichtung zum Refactoring

 

Unfreiwillige Schulden

 

  • Mangel an Qualifikation
  • Unzureichende Dokumentation
  • Überentwicklung
  • Anti-Design-Muster
  • Software-Erosion

 

 

  • Durch ständiges Refactoring werden historische Programmierfehler und -lücken beseitigt und Sie können aus Fehlern lernen

 

Laut Cunningham und Fowler können technische Schulden sowohl absichtlich als auch unbeabsichtigt generiert werden. Da Technologie und Programmierung kontinuierliche Überarbeitungen und Verbesserungen beinhalten , ist es praktisch unmöglich, Code-Gestank und Code-Erosion zu vermeiden  . Die Software altert auch und schafft ohne Aktualisierungen und Umgestaltungen auch Schulden. In den meisten Fällen ist die technische Verschuldung jedoch auf finanzielle Entscheidungen oder absichtliche oder versehentliche Programmfehler zurückzuführen.

Welchen Ursprung kann die technische Verschuldung haben?

Obwohl technische Schulden im Allgemeinen immer die gleichen Auswirkungen auf die Softwareentwicklung haben, können die Ursachen sehr unterschiedlich sein. Hier präsentieren wir sie:

  • Mangel an Qualitätsmanagement: Projekte werden ohne Qualitätsprüfungs-, Mess- und Kontrollmechanismen entwickelt und erzeugen kontinuierlich Schulden.
     
  • Wirtschaftlicher Druck: Aufgrund von Kundenanforderungen oder Wettbewerbsdruck haben wirtschaftliche Faktoren und eine rasche Entwicklung Vorrang vor dem Nachteil der Code-Sauberkeit.
     
  • Mangel an Qualifikation: Das technische Wissen des Entwicklungsteams entspricht nicht den Anforderungen an sauberen und eleganten Code. Die Folge ist ein Gestank nach Code oder ein Spaghetti-Code.
     
  • Unzureichende Dokumentation / Kommunikation – Der Entwicklungsprozess wird ohne Dokumentation paralleler Codeerweiterungen und -änderungen ausgeführt. Außerdem werden Codeänderungen nicht protokolliert oder nachfolgenden Programmierern mitgeteilt. Die Möglichkeiten zum Refactoring sind begrenzt oder nicht vorhanden.
     
  • Aufgeschobenes Refactoring – Vorsätzlich akzeptierte technische Schulden werden nicht kurzfristig zurückgezahlt, da das Refactoring ignoriert oder aufgeschoben wird.
     
  • Parallele Anwendungsentwicklung: Entwicklungsphasen, die parallel ablaufen, aber nicht koordiniert sind, führen zu einer Anhäufung von Schulden.
     
  • Code zu komplex – Absätze des Codes sind zu kompliziert oder unlogisch. Kleine Änderungen können zu mehr Ausfällen führen und die Verschuldung vervielfachen. Im schlimmsten Fall wird auch hier ein Spaghetti-Code generiert.
     
  • Unstrukturierte Entwicklungsprozesse: Die Anwendungsentwicklung beginnt, bevor ein bestimmtes Design oder bestimmte Prozesse definiert und festgelegt werden.
     
  • Code-Outsourcing – Entwicklungsphasen werden ausgelagert und verursachen während des nachfolgenden Beitrittsprozesses Fehler im Code, die das Teammanagement akzeptieren oder ignorieren muss.
     
  • Plötzliche Änderungen im Prozess: Aus Zeitgründen werden plötzliche Änderungen im Code nicht überprüft.

Technische Schulden und agile Softwareentwicklung

Ward Cunningham definierte nicht nur die Metapher der technischen Verschuldung, sondern ist auch Mitautor und erster Unterzeichner des Manifests für agile Softwareentwicklung . Ziel dieser Softwareentwicklungsphilosophie ist es, eine flexiblere und produktivere Anwendungsentwicklung und -veröffentlichung durch Prinzipien und Axiome zu fördern .

Anstatt lange Zeiträume mit großen Projekten zu verbringen, streben kleinere, unabhängigere Teams nach kürzeren Arbeitsphasen und schnelleren Veröffentlichungen kleinerer Projekte wie Anwendungen, Programmteilen und Updates. .

Agile Softwareentwicklung führt dazu, dass Teams Code in kleinen Schritten schreiben und ändern und Arbeitsphasen schneller abgeschlossen werden. Wenn der Fokus auf Geschwindigkeit und Produktivität liegt, steigt die Gefahr, schmutzigen Code zu produzieren und dadurch technische Schulden zu akkumulieren . Insbesondere wenn agile Softwareentwicklung nicht mit Refactoring einhergeht, steigt die Verschuldung zwangsläufig.

Welche Auswirkungen hat die technische Verschuldung auf die Softwareentwicklung?

Die Auswirkungen der technischen Verschuldung entsprechen denen der Kredite im Finanzsektor. Wenn die Verschuldung nicht rechtzeitig und regelmäßig abgebaut wird, werden Zinsen verdient , was sich in einer verlangsamten Entwicklung, einer verringerten Produktivität und erhöhten Kosten zeigt.

Daher liegt es im Interesse der Kunden, die langfristige Entwicklung mit einem umfassenden Qualitätsmanagementprozess zu begleiten , um nicht für Geschwindigkeit und Einsparungen bei der Produktion und Veröffentlichung von Produkten mit kostspieliger Nachkorrektur von Fehlern oder Kosten bezahlen zu müssen sogar ein Stopp in der Entwicklung.

Wie können Sie technische Schulden vermeiden?

Aufgrund neuer Technologien und sich entwickelnder Ansätze in der Softwareentwicklung ist es nicht möglich, technische Schulden vollständig zu vermeiden. Tatsächlich wird es sogar akzeptiert, um Programme und Anwendungen regelmäßig und schnell zu veröffentlichen und Teams nicht für lange Zeit an Projekte zu binden. Es gibt jedoch vorbeugende Maßnahmen , um die Entstehung oder das Wachstum von Schulden zu vermeiden oder zu verringern:

  • Standardisierte Prozesse für Refactoring und Qualitätsmanagement.
  • Immer aktuelle Tools zur Fehlermessung und -analyse.
  • Anpassung des Fachwissens an den aktuellen Stand der Informationstechnologie durch kontinuierliche Schulung oder Zusammenstellung von Teams nach Qualifikationen.
  • Klares Code-Design durch Klassenteilung, verständliche Methoden und lesbares Schreiben für spätere oder externe Programmierer.
  • Klare Verantwortlichkeiten und Aufgabenverteilung zwischen den Teams, um Doppelarbeit, Redundanz und kontraproduktive Arbeitsschritte zu vermeiden.
  • Die Computerarchitektur wird ständig durch ständige Überwachung, Messung und Qualitätsmanagement aktualisiert.

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *