Mehr Softwarequalität: Technische Schulden

59
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

description

Individualsoftware soll viele explizite und implizite Qualitätsanforderungen verschiedener Stakeholder erfüllen. In unserer halbtägigen Veranstaltung beleuchten wir aus Sicht des Managements unterschiedliche Aspekte rund um dieses Thema.

Transcript of Mehr Softwarequalität: Technische Schulden

Page 1: 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

Page 2: Mehr Softwarequalität: Technische Schulden

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

Page 3: Mehr Softwarequalität: Technische Schulden

Auf der Baustelle

arbeiten

Schick machen

Refactoring

First Time Code

Not-Quite-Right Code

Auf der Baustelle

arbeiten

Clean Code

Page 4: Mehr Softwarequalität: Technische Schulden

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

Page 5: Mehr Softwarequalität: Technische Schulden

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

Page 6: Mehr Softwarequalität: Technische Schulden

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

Page 7: Mehr Softwarequalität: Technische Schulden

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

Page 8: Mehr Softwarequalität: Technische Schulden

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

Page 9: Mehr Softwarequalität: Technische Schulden

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

Page 10: Mehr Softwarequalität: Technische Schulden

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

Page 11: Mehr Softwarequalität: Technische Schulden

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.“

Page 12: Mehr Softwarequalität: Technische Schulden

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

Page 13: Mehr Softwarequalität: Technische Schulden

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

Page 14: Mehr Softwarequalität: Technische Schulden

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

Page 15: Mehr Softwarequalität: Technische Schulden

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

Page 16: Mehr Softwarequalität: Technische Schulden

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

Page 17: Mehr Softwarequalität: Technische Schulden

Thementag 25.11.2014, Technische Schulden 17 | 56

Erscheinungsformen (Aussehen, Vorkommen)

PersönlicheSchulden

OrganisatorischeSchulden

Prozess-bezogeneSchulden

Page 18: Mehr Softwarequalität: Technische Schulden

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

Page 19: Mehr Softwarequalität: Technische Schulden

Thementag 25.11.2014, Technische Schulden 19 | 56

Erscheinungsformen (Aussehen, Vorkommen)

PersönlicheSchulden

OrganisatorischeSchulden

Prozess-bezogeneSchulden

Werkzeug-bezogeneSchulden

Test-bezogeneSchulden

PraktischeSchulden

Automations-bezogeneSchulden

Page 20: Mehr Softwarequalität: Technische Schulden

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

Page 21: Mehr Softwarequalität: Technische Schulden

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

Page 22: Mehr Softwarequalität: Technische 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

Page 23: Mehr Softwarequalität: Technische Schulden

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

Page 24: Mehr Softwarequalität: Technische Schulden

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

Page 25: Mehr Softwarequalität: Technische Schulden

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

Page 26: Mehr Softwarequalität: Technische Schulden

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

Page 27: Mehr Softwarequalität: Technische Schulden

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

Page 28: Mehr Softwarequalität: Technische Schulden

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

Page 29: Mehr Softwarequalität: Technische Schulden

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

Page 30: Mehr Softwarequalität: Technische Schulden

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

Page 31: Mehr Softwarequalität: Technische Schulden

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

Page 32: Mehr Softwarequalität: Technische Schulden

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

Page 33: Mehr Softwarequalität: Technische Schulden

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

Page 34: Mehr Softwarequalität: Technische Schulden

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

Page 35: Mehr Softwarequalität: Technische Schulden

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

Page 36: Mehr Softwarequalität: Technische Schulden

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

Page 37: Mehr Softwarequalität: Technische Schulden

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

Page 38: Mehr Softwarequalität: Technische Schulden

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

Page 39: Mehr Softwarequalität: Technische Schulden

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

Page 40: Mehr Softwarequalität: Technische Schulden

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

Page 41: Mehr Softwarequalität: Technische Schulden

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:

Page 42: Mehr Softwarequalität: Technische Schulden

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

Page 43: Mehr Softwarequalität: Technische Schulden

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

Page 44: Mehr Softwarequalität: Technische Schulden

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

Page 45: Mehr Softwarequalität: Technische Schulden

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

Page 46: Mehr Softwarequalität: Technische Schulden

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

Page 47: Mehr Softwarequalität: Technische Schulden

Thementag 25.11.2014, Technische Schulden 47 | 56

Langfristig denken

ERROR

Page 48: Mehr Softwarequalität: Technische Schulden

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

Page 49: Mehr Softwarequalität: Technische Schulden

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

Page 50: Mehr Softwarequalität: Technische Schulden

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

Page 51: Mehr Softwarequalität: Technische Schulden

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

Page 52: Mehr Softwarequalität: Technische Schulden

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

Page 53: Mehr Softwarequalität: Technische Schulden

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

Page 54: Mehr Softwarequalität: Technische Schulden

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

Page 55: Mehr Softwarequalität: Technische Schulden

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

Page 56: Mehr Softwarequalität: Technische Schulden

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

Page 57: Mehr Softwarequalität: Technische Schulden

Fragen

Page 58: Mehr Softwarequalität: Technische Schulden

WWW.IKS-GMBH.COM

Page 59: Mehr Softwarequalität: Technische Schulden

Thementag 25.11.2014, Technische Schulden 59 | 56

Projekte. Beratung. Spezialisten.