Technische Schulden



Technische Schuld oder Technischer Schuldt (engl. Technische Schulden ) ist a in der Informatik gebräuchliche Metapher für stirbt Möglich Konsequenzen schlechte Technische umsetzung von Software. Unter der technischen Schuld Mensch Versteht die addition Aufwand, den man für Änderung und Erweiterung einer schlecht geschriebene Software im Vergleich zu gut geschriebenen Software einplanen Durcheinander.

Der Begriff „Technische Schuld“ wird von Informatikern Wie Wird Cunningham , Martin Fowler , Steve McConnell oder Robert C. Martin used, um Manager und other Stakeholdern von Softwareprojekten bereit zuma chen that das aufschieben von Massnahme zur Sicherung und erhöhung Technische Qualität Softwareentwicklung nicht beschleunigt sterben, Sondern verlangsamt – je LANGER das mehr.

Technische Schuld unterscheidet sich von Anti-Pattern insofern, sterben als Entscheidung, technische Schuld zu machen, Auch bewusst und nach Abwägung der Vor- und Nachteile Getroffen Werden Kann, während Anti-Pattern Immer eine Folge von Faulheit und Unprofessionalität Sind. [1]

Beispiele

Quadrant Technischer Schulden
rücksichtslos umsichtig
bewusst „Wir haben
keine Zeit für Design“
„Wir müssen schnell liefern und
küssen uns noch weiter um
die Konsequenzen“ [2]
versehentlich „Was ist eine Schichtenarchitektur?“ „Jetzt wischen wir,
wir hüteten Rollen“

Martin Fowler unterscheidet folgende Arten von technischen Schuldt: Diejenigen, sterben ein bewusst aufgenommen hat, um EINEN beispielsweise Meilenstein zu Motivation und andere Mentalität, und diejenigen, sterben ein unwissentlich Eingegangen ist, beispielsweise Weil das Team noch Designprinzipien nicht gefolgt. Daruber Hinaus unterscheidet ist between umsichtige und rücksichtslose eingehen Technische Schuld. Kombiniert Ergibt das widmet Quadranten zur Einteilung Technische Schuld: [3]

Die folgenden technischen Schulden wurden in Software-Entwicklungsprojekten gefunden (in den folgenden Fällen oder in Niederländisch oder Niederländisch):

  • Aufschieben oder Nicht-Aktualisierung technischer und fachlicher Software Dokumentation
  • Fehlende technische Infrastruktur wie Versionsverwaltung , Datensicherung , Build-Tools , Kontinuierliche Integration
  • Aufschieben, Verzicht oder umständliche Umsetzung automatisierter Modestests und Regressionstests
  • Fehlende Coding Standards und Code Ownership
  • Missachtung von TODO – oder FIXME- oder XXX-Hinweisen im Code
  • Missachtung von Codewiederholungen und andere Code Smells
  • Verwendung von Programmier-Anti-Pattern
  • Missachtung von Compilerwarnungen und Ergebnissen Statistische Code-Analyse
  • Versenden der Fehler von zu großem oder zu komplexem Code und Design
  • Fehlerhafte Definition oder umsetzung der Architektur Durch Engel Kopplung , Zyklische Abhängigkeiten wobei die Komponente oder das Fehl geeignete Schnittstelle und Fassaden

Ursachen

Übliche technische Aspekte: eine Kombination der folgenden Faktoren

  • Fachlicher Druck , Wenn Der Auftraggeber auf Projektbeteiligten Druck ausübt sterben, schnell neue Fachlichkeiten und technische Bevor Aufräumarbeiten Abgeschlossen Sind, Geliefert zu bekommen. This Druck Könnte Beispielweise Durch Ein Zeitnahes Produkt Release .
  • Ungenügende qualitätssichernde Prozess , Wenn Es in Einem Projekt keine qualitätssichernden Prozess Gibt (oder this nicht Gelebte Werden), WELCHE Technische Schuld laufenden Messe und Verbesserungsmaßnahmen sterben einleiten.
  • Ungenügendes technisches Wissen , technische Entscheidungen treffen zu können, die Technische Schuld nicht erhöhen und im Optimalfall reduzieren.
  • Unnötige Kommunikation der gewählten technischen Lösungen und ihrer Hintergründe. Die Kommunikation kann alle Arten, zB durch selbsterklärenden Code, Dokumentation, Diagrammer, Videos etc.
  • Parallel Entwicklung in Eigenen Branchen (Beispielhafte Feature Industries).
  • Hintenangestelltes Refactoring , Wenn in Codeteilen, Welchen Verbesserungswürdig Sind, Weitere Besonderheiten Umgesetzt werden, ohne davor die Verbesserungen Umsetzen. Sie durften Refactorings nicht verwenden, aber sie wurden besser. Die Umsetzung von Fachlichkeiten.

Technischer Schuldschriftsatz – wenn auch in keiner anderen. Technischer Fehler der Softwareentwicklung ebenso wie Fehler. When this not should qualifyserserner mens entgegegengezwungen, the highly sich de Technical should unwillkürlich with the Change and Erweitern der Software.

„Gesetz II – Zunehmende Komplexität: Wenn ein Programm entwickelt wird, erhöht sich seine Komplexität, wenn nicht gearbeitet wird, um es zu erhalten oder zu reduzieren.“

„Gesetz II – Compliant Complexity: W hrend Software wird weiterentwickelt, wird ihre Komplexität, es sei denn, es werden Auswirkungen auf die Situation, die sie zu reduzieren haben oder zu reduzieren.“

– Meir Manny Lehman : Proceedings des IEEE [4]

Alistair Cockburn sieht den technischen Hintergrund der Grundsoftware der agilen Softwareentwicklung , dem der rechterhaltenden Geschwindigkeit Widget. [5]

Geschichte

Meir Manny Lehmans Gesetz Saatgut als Ersatz im Jahr 1980, als die Complexität mit der Zeit währte, es sei denn es Bemühungen dag unterkommen. Ward Cunningham war der Gewinner von Parallels Zwischen Komplexität einer Software und Schuld im Sinne von Schulden :

„Der erste Zeitcode ist wie Schulden machen. Eine kleine Verschuldung beschleunigt die Entwicklung, solange sie mit einer Neufassung prompt zurückbezahlt wird … Das Risiko entsteht, wenn die Schulden nicht zurückgezahlt werden. Elke minuut spendede uniet-vrij-juiste code zählt als rente op die schuld. Hele ingeniørrorgaiseration kan blive bragt bis zum Stillstand unter den Gäldsbelastning af en uconsolideret Implementierung, objektorientientet eller andet. „

„Software zu schreiben ist wie Schulden aufnehmen. Geringfügige Forderungen belohnen Software Software und lösen die Schulden, die an den Schuldner gezahlt wurden, an die Schuldner aus. Jede Minute, der Mann mit einem ganz ganz richtigem Code liefert, sowie Zins auf diese Schuld. Ganz Entwicklungseinrichtungen Infos finden unter der Schuldenlast Einer unbereinigten Implementierung (egal ob Objektorientiert oder nicht) zum Stillstand gebracht Werden. „

– Ward Cunningham [6]

Im Hinblick auf Refactoring to Patterns sah Joshua Kerievsky 2004 die Kosten für Vernachlässiger Architectural Design Schulden . [7]

Wirkungen

Technical Debt, Sie haben direkten Zugriff auf die Wartbarkeit einer Software und Sie sind herzlich willkommen bei der Wartung und Weiterentwicklung der Software. Üblicherweise gibt es einen Fehler bei der Softwareentwicklung, der im Lauft eines Projekts für Neue oder zu derdede Funktionalität 60-bis 100-fache ansteigen kann. [8]

Technischer Schuld ist in Softwareentwicklungsprojecten Meilensteine ​​von nicht war gerechtfertigt zu erricht. Sie haben gehört, dass Sie Spaß haben und Sie nicht zur Schule gehen können.

Messung

Es ist schwierig, genau richtig, wer in den Fall gefallen ist, musste, um die technischen Schulden einer Software abzuarbeiten. Jede Änderung an der Software ist das unweigerliche der Technischen Schuld um einen unbestimmten Teil.

Die Software, basierend auf den Qualitätsmetriken eine ungünstige Abschätzung für die Technische Schuld zu berechnen. Beispiels weise kann SonarQube technische Schulden errechnen . [9]

Weblinks

  • Ward erklärt die Schuldenmetapher – YouTube (Video) und Ward Cunninghams Transcript of Enthement of the Begriffs
  • Management Technical Debt Webinar – Webinar von Steve McConnel über Technische Schuld und wie man umhängen kann

Einzelstunden

  1. Hochspringen↑ Robert C. Martin : Eine Messe ist keine technische Schuld. 22. September 2009; abgeraufen am 30. März 2012 (deutsch): „Eine Sauerei ist keine technische Schuld. Ein Durcheinander ist nur ein Durcheinander. Technische Schuldenentscheidungen werden basierend auf realen Projektbeschränkungen getroffen. De er risikabelt, men de kan være gunstige. Das ist eine gute Gelegenheit, um eine gute Idee, aber auch eine gute Basis für Faulheit und Unprofessionalisme, und eine gute Chance, bei Betle für Fremtiden. Ein Durcheinander ist immer ein Verlust. „
  2. Hochspringen↑ erste Bedeutung des Begriffs Technische Schulden
  3. Hochspringen↑ Martin Fowler: TechnicalDebtQuadrant. 14. Oktober 2009; abgeraufen am 31. März 2012 (Deutsch): „Die Unterscheidung ist also nicht zwischen Schulden oder Nicht-Schulden, sondern zwischen vorsichtigen und rücksichtslosen Schulden. .. Es gibt nicht nur einen Unterschied zwischen vorsichtigen und rücksichtslosen Schulden, es gibt auch einen Unterschied zwischen vorsätzlichen und unbeabsichtigten Schulden. „
  4. Hochspringen↑ Meir Manny Lehman: Zum Verständnis von Gesetzen, Evolution und Konservierung im großen Programmlebenszyklus . In: Zeitschrift für Systeme und Software . Auf Rang. 1, 1980, S. 213-221, doi : 10.1016 / 0164-1212 (79) 90022-0 (englisch).
  5. Hochspringen↑ Alistair Cockburn: Agile Softwareentwicklung . Hrsg.: Pearson Ausbildung. Addison Wesley, 2002, ISBN 0-201-69969-9 , The Agile Software Development Manifest, S. 222 (Englisch).
  6. Hochspringen↑ Ward Cunningham : Das WyCash Portfolio Management System. In: OOPSLA ’92 Erfahrungsbericht. 26. März 1992; abgeraufen am 30. März 2012 .
  7. Hochspringen↑ Joshua Kerievsky: Refactoring zu Patterns . Addison Wesley, München 2005, ISBN 978-3-8273-2503-7 (Englisch).
  8. Hochspringen↑ Roger S. Pressman: Softwareentwicklung . Der Ansatz eines Praktizierenden. Hrsg .: Thomas Casson. Mc Graw Hill, 1982, ISBN 0-07-365578-3 , 1.4, S. 14, Abbildung 1.3 (Englisch).
  9. Hochspringen↑ sonarsource.com