Download - Mehr Softwarequalität: Technische Schulden
Thementag 25.11.2014, Technische Schulden 1 | 56
Projekte. Beratung. Spezialisten.
Technische Schulden
Risiko und Chance für mehr Softwarequalität
IKS-Thementag
25.11.2014
Autor: Dr. Reik Oberrath
Thementag 25.11.2014, Technische Schulden 2 | 56
Definition 1
„Technische Schuld oder Technische Schulden (engl. technical debt) ist eine in der
Informatik gebräuchliche Metapher für die möglichen Konsequenzen schlechter
technischer Umsetzung von Software…
Der Begriff … wird von Informatikern … verwendet, um Managern … klarzumachen,
dass die Hintanstellung von Maßnahmen zur Sicherung … technischer Qualität die
Softwareentwicklung … verlangsamt…“
http://de.wikipedia.org/wiki/Technische_Schuld
“Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back…”
Ward Cunningham: The WyCash Portfolio Management System.
In: OOPSLA '92 Experience Report. 26. März 1992
“Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back… Every minute spent on not-quite-right code counts as interest on that debt.”
“Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back… Every minute spent on not-quite-right code counts as interest on that debt. Entire engineering organizations can be brought to a stand-still under the debt load…”
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Auf der Baustelle
arbeiten
Schick machen
Refactoring
First Time Code
Not-Quite-Right Code
Auf der Baustelle
arbeiten
Clean Code
Ward Cunningham:
“A little debt speeds development..”
Altlasten als langfristige Kostentreiber
Zeit
Summe
realisierter
Feature
Amortisierungsgrenze
Mit Refactoring
Mit Technischen Schulden
Nach http://martinfowler.com/bliki/DesignStaminaHypothesis.html
Ward Cunningham:
“…stand-still under the debt load…”
Verlorene
Ressourcen
Thementag 25.11.2014, Technische Schulden 5 | 56
Grundidee
“Shipping first time code” Schulden
“It is paid back” Tilgung
“Every minute spent on not-quite-right code” Zinsen
“Stand-still under the debt load”… Bankrott
Bildnachweis:
http://www.wissen.de/redewendung/ein-klotz-am-bein-sein-2013-05-17
500 Mrd $ *
* Vom Marktforschungsunternehmen Gartner geschätzt für aktuellen den globalen IT-Altlastenberg
siehe http://www.datacenter-insider.de/software-on-premise/anwendungen/articles/459751/index3.html
** Vom Wirtschaftsprüfungsunternehmen Deloitte geschätzt für Sourcecode-Fehlersuche in 2012
Thementag 25.11.2014, Technische Schulden 6 | 56
Strategisches Design
1. Niedrige Zinsen nutzen 2. Aktuelle Marktvorteile nutzen
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 7 | 56
Grenzen der Metapher
Schuldenfreie Softwareentwicklung gibt es nicht
Bei wem macht man Technische Schulden? Wer ist die Bank?
Technische Schulden erlöschen nach dem Betrieb der Software
Technische Schulden werden nicht in vielen kleinen verbindlichen Raten
zurückgezahlt
Viele Technische Schulden entstehen unbewusst, echte Schulden aber i.d.R.
halbbewusst oder ganz bewusst
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 8 | 56
Definition 2
B) Technische Schuld im weiteren Sinne ist die Summe aller Defizite einer
Software, also alles, was dem Clean-Code-Gedanken widerspricht.
Siehe
http://www.clean-code-developer.de/
http://www.clean-coding-cosmos.de/
A) Technische Schuld im engeren Sinne ist die Summe aller Defizite einer
Software, für die sich die Akteure bewusst (oder wenigstens halbbewusst)
entschieden haben.Siehe
https://sites.google.com/site/unclebobconsultingllc/a-mess-is-not-a-technical-debt
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 9 | 56
Einleitung
Kategorien von Technischen Schulden
Best-Practices im Umgang mit Technischen Schulden
Tilgen oder Zinsen zahlen?
Technische Schulden im größeren Kontext
Zusammenfassung
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 10 | 56
Kategorien von Technischen Schulden
1. Bewusstseinsarten (Motivation, Einstellung)
2. Strategiesorten (Ziele, Planung)
3. Erscheinungsformen (Aussehen, Vorkommen)
4. Buchhaltungstypen (Schuldenverwaltung, verantwortliche Rollen)
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 11 | 56
Bewusstseinsarten (Motivation, Einstellung)
Konsequenzen und Gegenmaßnahmenbewusst?
Nein Ja
Schulden bewusst?Nein
Ja
„Was ist das Problem?“
Erst im Nachhinein:
„Ach so, wenn wir das vorher gewusst hätten, hätten wir die Chance gehabt, das sauber zu erledigen.“
Nach http://martinfowler.com/bliki/TechnicalDebtQuadrant.html
„Wir verzichten auf die saubere Lösung. Die entstehenden Probleme sind bekannt und werden beherrscht. Wir müssen jetzt liefern.“
„Ok, sauber geht anders, aber über eine saubere Lösung machen wir uns jetzt keine Gedanken. Wir müssen jetzt liefern.“
Thementag 25.11.2014, Technische Schulden 12 | 56
Bewusstseinsarten (Motivation, Einstellung)
http://martinfowler.com/bliki/TechnicalDebtQuadrant.html
Sorglos
Bedacht
Unachtsam
UmsichtigKurzsichtig
Bewusst
Unbewusst
Weitsichtig
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 13 | 56
Kategorien von Technischen Schulden
1. Bewusstseinsarten (Motivation, Einstellung)
2. Strategiesorten (Ziele, Planung)
3. Erscheinungsformen (Aussehen, Vorkommen)
4. Buchhaltungstypen (Schuldenverwaltung, verantwortliche Rollen)
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 14 | 56
Strategiesorten (Ziele, Planung)
Nach
http://www.construx.com/10x_Software_Development/Technical_Debt/
Taktische Kurzzeit-Schulden
Bewusste Schulden
Strategische Langzeit-Schulden
Unbewusste Schulden
Viele kleine DefiziteEin großes Defizit
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 15 | 56
Strategiesorten (Ziele, Planung)
Langzeit-Schulden Kurzzeit-Schulden
Grobgranular
Feingranular
„Wir realisieren kein Continuous
Delivery solange der Kunde mit
der Auslieferungsdauer
zufrieden ist“
„Wir testen jetzt noch un-
regelmäßig und erkennen viele
Fehler zu spät. Ab der über-
nächsten Auslieferung nutzen
wir Continuous Integration.“
„Solange wir keine größeren
Probleme mit der alten
Technologie bekommen, stellen
wir unsere Komponenten nicht
um.“
„Unser Sourcecode-Analysetool
(Sonar) meldet über 100
Probleme in unseren Sourcen.
Nach der übernächsten
Auslieferung müssen die
behoben werden.“
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 16 | 56
Kategorien von Technischen Schulden
1. Bewusstseinsarten (Motivation, Einstellung)
2. Strategiesorten (Ziele, Planung)
3. Erscheinungsformen (Aussehen, Vorkommen)
4. Buchhaltungstypen (Schuldenverwaltung, verantwortliche Rollen)
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 17 | 56
Erscheinungsformen (Aussehen, Vorkommen)
PersönlicheSchulden
OrganisatorischeSchulden
Prozess-bezogeneSchulden
Thementag 25.11.2014, Technische Schulden 18 | 56
Persönliche Schulden
z. B. mangelnde Motivation der Akteure Neues zu lernen, auszuprobieren und
sich an Neues anzupassen
Organisatorische Schulden
z. B. veraltete hierarchische Organisationsstrukturen (Gesetz von Conway)
Prozess-bezogenen Schulden
z. B. Anwendung von veralteten Vorgehensmodellen
Mehr Informationen dazu unter http://clean-coding-cosmos.de/techdebts-4
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 19 | 56
Erscheinungsformen (Aussehen, Vorkommen)
PersönlicheSchulden
OrganisatorischeSchulden
Prozess-bezogeneSchulden
Werkzeug-bezogeneSchulden
Test-bezogeneSchulden
PraktischeSchulden
Automations-bezogeneSchulden
Thementag 25.11.2014, Technische Schulden 20 | 56
Praktische Schulden
z. B. nicht aus gemachten Fehlern lernen
Werkzeug-bezogene Schulden
z. B. zu großer Wildwuchs an eingesetzten Werkzeugen
Automations-bezogene Schulden
z. B. keine automatische Testausführung (Continuous Integration)
Test-bezogene Schulden
z. B. unzureichende Testabdeckung der implementierten Funktionalität
Mehr Informationen dazu unter http://clean-coding-cosmos.de/techdebts-4
Thementag 25.11.2014, Technische Schulden 21 | 56
Erscheinungsformen (Aussehen, Vorkommen)
PersönlicheSchulden
OrganisatorischeSchulden
Prozess-bezogeneSchulden
Werkzeug-bezogeneSchulden
Test-bezogeneSchulden
PraktischeSchulden
Automations-bezogeneSchulden
Betriebs-bezogeneSchulden
AM-bezogeneSchulden
Fachseite-bezogeneSchulden
Kommunikations-schulden
Thementag 25.11.2014, Technische Schulden 22 | 56
Kommunikationsschulden
Unzureichende Kommunikation und Zusammenarbeit zwischen den Akteuren
(vor allem zwischen Akteuren verschiedener Phasen im ALM)
Application Lifecycle Management
Anforderungs-analyst
Domänen-Experte
Architekt /Entwickler
Administrator
Kundenakzeptanz-tester
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 23 | 56
Erscheinungsformen (Aussehen, Vorkommen)
PersönlicheSchulden
OrganisatorischeSchulden
Prozess-bezogeneSchulden
Werkzeug-bezogeneSchulden
Test-bezogeneSchulden
PraktischeSchulden
Automations-bezogeneSchulden
Betriebs-bezogeneSchulden
AM-bezogeneSchulden
Fachseite-bezogeneSchulden
Kommunikations-schulden
Implementierungs-schulden
Architektur-schulden
Produkt-bezogeneSchulden
Produktions-bezogeneSchulden
Thementag 25.11.2014, Technische Schulden 24 | 56
Produktions-bezogene Schulden
z. B. mangelnde Analysierbarkeit (Logging, Protokollierung, Monitoring)
Architekturschulden
z. B. mangelnde Berücksichtigung nicht-funktionaler Qualitätskriterien
Implementierungsschulden
z. B. Code-Vervielfachungen
Mehr Informationen dazu unter http://clean-coding-cosmos.de/techdebts-4
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 25 | 56
Erscheinungsformen (Aussehen, Vorkommen)
PersönlicheSchulden
OrganisatorischeSchulden
Prozess-bezogeneSchulden
Werkzeug-bezogeneSchulden
Test-bezogeneSchulden
PraktischeSchulden
Automations-bezogeneSchulden
Betriebs-bezogeneSchulden
AM-bezogeneSchulden
Fachseite-bezogeneSchulden
Kommunikations-schulden
Implementierungs-schulden
Architektur-schulden
Produkt-bezogeneSchulden
Produktions-bezogeneSchulden
Hauptverantwortung beim Entwicklungsteam
Verteilte Verantwortung
Thementag 25.11.2014, Technische Schulden 26 | 56
Kategorien von Technischen Schulden
1. Bewusstseinsarten (Motivation, Einstellung)
2. Strategiesorten (Ziele, Planung)
3. Erscheinungsformen (Aussehen, Vorkommen)
4. Buchhaltungstypen (Schuldenverwaltung, verantwortliche Rollen)
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 27 | 56
Buchhaltungstypen (Schuldenverwaltung)
Produkt-bezogene „Schuldenbücher“:
Liste von TODOs und FIXMEs im SourceCode (Code-Tagging-System)
Ergebnisse von Sourcecode-Analysetools (z. B. Sonar)
Architekturdokumentation (Beschreibung von Schwächen und Risiken)
Prozess-bezogene „Schuldenbücher“:
„Projektdokumentation“ (Projekt-Handbuch, Retrospektive-Bericht)
Dokumentation der „ALM-Architektur“ (Leitfaden für die
Unternehmenskultur, Beschreibung der Konzernstruktur)
Schuldenkonto:
Issue Tracker (Jira, Bugzilla, …)
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 28 | 56
Buchhaltungstypen (verantwortliche Rollen)
Typ 1: Projekt
Typ 2: ALM Rahmenprozesse
Hauptverantwortung bei Entwicklungsteam
Verteilte Verantwortung
Typ 1a: Produkt
Typ 1b: Teamprozesse
Projektmanager
Scrum-Master
Entwicklungsteam
SW-Architekt
Entwicklungsteam
Techn. Projektleiter
Produktmanager
Product Owner
Gesamtent-
wicklungsleiter
Scrum-Master
Projektmanager
Produktmanager
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 29 | 56
Einleitung
Kategorien von Technischen Schulden
Best-Practices im Umgang mit Technischen Schulden
Tilgen oder Zinsen zahlen?
Technische Schulden im größeren Kontext
Zusammenfassung
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 30 | 56
Best Practise No. 1
Bekannte Probleme in einem Issue Tracker festhalten!
Am besten nach Strategiesorte, Erscheinungsform und Buchhaltungstyp
getrennt!
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 31 | 56
Best Practises I
Erscheinungs-
form
Buchh.-
Typ
Analyse Gegenmaßnahme
Implemen-
tierung
1a Codereviews, Sourcecode-
Analysetool (z.B. Sonar)
-> Metriken
Analysierte Probleme
ausbauen, prophylaktisch:
Clean Code Developer
Prinzipien anwenden
* http://clean-coding-cosmos.de/die-ccd-regeln
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 32 | 56
Best Practises I
Erscheinungs-
form
Buchh.-
Typ
Analyse Gegenmaßnahme
Implemen-
tierung
1a Codereviews, Sourcecode-
Analysetool (z.B. Sonar)
-> Metriken
Analysierte Probleme
ausbauen, prophylaktisch:
Clean Code Developer
Prinzipien anwenden
Architektur 1a Gute Architektur-
Dokumentation (arc42)
(http://www.arc42.de),
ATAM
Entworfene Architektur
sauber umsetzen, schlechte
Architektur ändern
(http://aim42.org)
* http://clean-coding-cosmos.de/die-ccd-regeln
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 33 | 56
Best Practises I
Erscheinungs-
form
Buchh.-
Typ
Analyse Gegenmaßnahme
Implemen-
tierung
1a Codereviews, Sourcecode-
Analysetool (z.B. Sonar)
-> Metriken
Analysierte Probleme
ausbauen, prophylaktisch:
Clean Code Developer
Prinzipien anwenden
Architektur 1a Gute Architektur-
Dokumentation (arc42)
(http://www.arc42.de),
ATAM
Entworfene Architektur
sauber umsetzen, schlechte
Architektur ändern
(http://aim42.org)
Persönliche
Schulden
alle Selbstreflexion Motivation fördern
(Fortbildungen,
Teamstimmung)
* http://clean-coding-cosmos.de/die-ccd-regeln
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 34 | 56
Best Practises II
Erscheinungs-
form
Buchh.-
Typ
Analyse Gegenmaßnahme
Prozess-
bezogene,
organisa-
torische und
Kommuni-
kations-
Schulden
1b
2
2
Kritische Betrachtung der
Organisationsstruktur und
des Application Lifecycle
Managements (ALM)
Arbeitsabläufe,
Kommunikationswege,
Teamzusammenstellung,
Aufgabenverteilungen, …
ändern
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 35 | 56
Best Practises II
Erscheinungs-
form
Buchh.-
Typ
Analyse Gegenmaßnahme
Prozess-
bezogene,
organisa-
torische und
Kommuni-
kations-
Schulden
1b
2
2
Kritische Betrachtung der
Organisationsstruktur und
des Application Lifecycle
Managements (ALM)
Arbeitsabläufe,
Kommunikationswege,
Teamzusammenstellung,
Aufgabenverteilungen, …
ändern
Praktische
Schulden
1b Selbstreflexion,
Retrospektive-Meetings
Prozesse verbessern,
Fortbildung
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 36 | 56
Best Practises II
Erscheinungs-
form
Buchh.-
Typ
Analyse Gegenmaßnahme
Prozess-
bezogene,
organisa-
torische und
Kommuni-
kations-
Schulden
1b
2
2
Kritische Betrachtung der
Organisationsstruktur und
des Application Lifecycle
Managements (ALM)
Arbeitsabläufe,
Kommunikationswege,
Teamzusammenstellung,
Aufgabenverteilungen, …
ändern
Praktische
Schulden
1b Selbstreflexion,
Retrospektive-Meetings
Prozesse verbessern,
Fortbildung
Werkzeug-
bezogene
Schulden
1b
oder2
Welche Tools haben wir,
welche werden vermisst,
und welche gibt es
überhaupt noch?
Tools mit Lizenzen bei
Bedarf zu Verfügung stellen
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 37 | 56
Best Practises III
Erscheinungs-
form
Buchh.-
Typ
Analyse Gegenmaßnahme
Automations-
bezogene
Schulden
1b Ist die Kompilierung,
Packetierung, Qualitäts-
sicherung, der Bau des
Release Kanditdaten, das
Deployment, die Installation
automatisiert?
Continuous Integration,
Continuous Delivery
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 38 | 56
Best Practises III
Erscheinungs-
form
Buchh.-
Typ
Analyse Gegenmaßnahme
Automations-
bezogene
Schulden
1b Ist die Kompilierung,
Packetierung, Qualitäts-
sicherung, der Bau des
Release Kanditdaten, das
Deployment, die Installation
automatisiert?
Continuous Integration,
Continuous Delivery
Test-bezogene
Schulden
1b Wie sieht die Teststrategie
aus? Welche Arten von Tests
gibt es? Wie hoch ist die
Testabdeckung?
Vorgehensweisen wie z.B.
TDD und BDD kultivieren,
für Automation sorgen
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 39 | 56
Best Practises III
Erscheinungs-
form
Buchh.-
Typ
Analyse Gegenmaßnahme
Automations-
bezogene
Schulden
1b Ist die Kompilierung,
Packetierung, Qualitäts-
sicherung, der Bau des
Release Kanditdaten, das
Deployment, die Installation
automatisiert?
Continuous Integration,
Continuous Delivery
Test-bezogene
Schulden
1b Wie sieht die Teststrategie
aus? Welche Arten von Tests
gibt es? Wie hoch ist die
Testabdeckung?
Vorgehensweisen wie z.B.
TDD und BDD kultivieren,
für Automation sorgen
Betriebs- und
Produktions-
bezogene
Schulden
2
1a
Wie gut erfolgt die
Inbetrieb-nahme? Wie gut
können Fehler in der
Produktion analysiert
werden?
DevOps
(Kommunikation fördern,
gleiche Automationswege
nutzen)
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 40 | 56
Einleitung
Kategorien von Technischen Schulden
Best-Practices im Umgang mit Technischen Schulden
Tilgen oder Zinsen zahlen?
Technische Schulden im größeren Kontext
Zusammenfassung
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 41 | 56
Tilgen oder Schulden zahlen?
Ein Qualitätsmodell:
oder
-=Kosten-
reduktionProduktivitäts-
vorteil
Aufwand für
Qualitätsinvestitionen
-=Kosten-
reduktionNicht-Sanierungs-
kosten
Sanierungs-
kosten
Nach
„Qualitätsinvestitionen statt technischer Schulden“
im OBJEKTspektrum Nr. 5 2014
Release 1 Release 2 Release 3 Release 4
entweder so:
oder so:
Thementag 25.11.2014, Technische Schulden 42 | 56
Tilgen oder Schulden zahlen?
Es geht um das „Mindset Qualitätsinvestitionen“
„… es geht … nicht um stundengenaues Schätzen von Aufwänden“
„Meistens“ reicht es, wenn „Kosten und Nutzen … mit einer
Ordinalskala (gering < normal < hoch < sehr hoch) geschätzt
werden“
„In vielen Situationen reichen drei Fragen aus, um die Maßnahmen
… zu bestimmen:“
1. Welche Systemkomponenten werden oft geändert und wie ist
deren innere Qualität (i. Q.)?
2. Welche Maßnahmen zur Verbesserung der i. Q. bestehen …?
3. Welcher Nutzen steht diesen Investitionen … gegenüber?
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 43 | 56
Tilgen oder Schulden zahlen?
Schuldenberge bestaunen hilft alleine nicht weiter!
Deshalb die Empfehlung:
1. Technische Schulden bewusst machen und festhalten
2. Entscheiden mit welchen Qualitätsinvestitionen der größte
Mehrwert erzielt werden kann und Ressourcen zur Realisierung
bereitstellen
3. Umsetzung veranlassen und Ergebnisse von den Verantwortlichen
einfordern
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 44 | 56
Tilgungspläne
Release 1 Release 2 Release 3 Release 4
Keine Tilgung
Tilgungsplan A
Tilgungsplan B
+ einfaches Regressions-testen
- Kein funktioneller Fortschritt
+ kontinuierliche Verbesserungder inneren Qualität
- Gefahr als Puffer für funktionale Änderungenzu dienen
Legende
Zinsen zahlen
Neue funktionale Änderungen
Schulden tilgen
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 45 | 56
Einleitung
Kategorien von Technischen Schulden
Best-Practices im Umgang mit Technischen Schulden
Tilgen oder Zinsen zahlen?
Technische Schulden im größeren Kontext
Zusammenfassung
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 46 | 56
Rahmenbedingungen
Technische
Schulden
Zeitd
ruck
Feh
lend
es W
issen
Mangelnde Kommunikation
Technologischer Fortschritt
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 47 | 56
Langfristig denken
ERROR
Thementag 25.11.2014, Technische Schulden 48 | 56
Langfristiges Risiko ignorieren
Hauptsache
mein Projekt
läuft gut.
Projekt-Manager
Deliver in time ! Keep to the budget!
Ob Schrott
entsteht, ist
egal.
Assure internal quality !
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 49 | 56
Wer ist hier der Boss?
Produktmanager Projektmanager
Chance!Risiko!
Kurzfristig
gut!
Langfristig
schlecht!
Time und
Budget!Innere
Qualität!
Technische
Schulden?
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 50 | 56
Architektur
DesignTechnologie
Code
Architektur
DesignTechnologie
Code
Funktionalität
Testbarkeit
Wartbarkeit
Usability Zuverlässigkeit
Modifizierbarkeit
PerformanzSicherheit
Quelle : http://www.dadalos-d.org/frieden/images/eisberg-modell.jpg
Release-management
Deployment
Ressourceneffizienz
Kompatibilität
Portabilität
Äußere Qualität
InnereQualität
Thementag 25.11.2014, Technische Schulden 51 | 56
Technische Schulden kurzfristig zurückzahlen
Zeit
Variante 2(Verdeckter Kredit)
Variante 1(Sichtbarer Kredit)
Release 1 Release 2
Thementag 25.11.2014, Technische Schulden 52 | 56
Komplexität in der Software
Effizienz in der Softwareentwicklung
Technische Schulden i.w.S.Best Practises
Mittelfristige Kosten:
“…not-quite-right code counts as interest…”
Langfristiges Risiko:
“…can be brought to a stand-still under the debt load…”
Kurzfristige Chance:
“A little debt speeds development..”
Zeitgewinn
Komplexität beherrschen
Zitate von
Ward Cunningham
1992
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 53 | 56
Einleitung
Kategorien von Technischen Schulden
Best-Practices im Umgang mit Technischen Schulden
Tilgen oder Zinsen zahlen?
Technische Schulden im größeren Kontext
Zusammenfassung
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 54 | 56
Zusammenfassung
Die Metapher „Technische Schulden“ ist und bleibt trotz ihrer Grenzen gut
Sie ist hilfreich das Problem „schlechter technischer Umsetzung“ zu
veranschaulichen und zu kommunizieren
Es gibt Schulden am Produkt, am Teamprozess und am ALM, für die
unterschiedliche Rollen verantwortlich sind
Es gibt unbewusste, halbbewusste und bewusste Schulden
Bewusste Schulden können gezielt verwaltet werden
Unbewusste und halbbewusste Schulden bringen ein unbekanntes oder
schwer abschätzbares Risiko mit sich
Manche Technische Schulden stellen eine große reale Gefahr für Projekte
und noch mehr für Produkte dar
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 55 | 56
Fazit
Schulden-Management:
Schulden bewusst machen und festhalten (Issue Tracker)
Mit gezielten Qualitätsinvestitionen risikoreiche Schulden abbauen
Schulden-Prophylaxe:
Langfristig denken und Schulden vermeiden (nur Notfall-Option)
Projektmanager auf messbare innere Qualität verpflichten
Doppelt und dreifach prüfen, ob ein möglicher Nutzen mögliche Risiken
den verschiedenen Stakeholdern (Produktmanager) wert sind
Knowhow der Mitarbeiter und Technologien in der Software nicht zu sehr
veralten lassen
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Thementag 25.11.2014, Technische Schulden 56 | 56
Weiterführende Literatur
http://martinfowler.com/bliki/TechnicalDebtQuadrant.html
http://www.clean-code-developer.de
http://www.clean-coding-cosmos.de
https://sites.google.com/site/unclebobconsultingllc/a-mess-is-not-a-technical-
debt
http://www.construx.com/10x_Software_Development/Technical_Debt/
http://de.slideshare.net/jeffsch/beyond-technical-debt
http://martinfowler.com/bliki/DesignStaminaHypothesis.html
http://www.datacenter-insider.de/software-on-
premise/anwendungen/articles/459751/index3.html
http://jaxenter.de/artikel/Umgang-mit-technischen-Schulden-166985
http://clean-coding-cosmos.de/techdebts-1
Begrüßung | Einleitung | Mögliche Kategorisierungen | Best-Practices | Tilgen oder
Schulden zahlen? | Im größeren Kontext | Schlussteil
Fragen
WWW.IKS-GMBH.COM
Thementag 25.11.2014, Technische Schulden 59 | 56
Projekte. Beratung. Spezialisten.