Lean Software Development - Programmierung und Softwaretechnik

Softwaretechnik
Lean Software Development
Prof. Dr. Matthias Hölzl
Joschka Rinke
21. Januar 2016
Lean Software Development
I
Übertragung von Prinzipien des Lean Manufacturing,“ Lean
”
”
Services“ und Lean IT“ auf die Softwareentwicklung
”
Inspiriert vom Toyota Produktionssystem (TPS)
I
Gibt Prinzipien und Techniken zur Erstellung von Software an
I
Lean Software Development: Prinzipien
I
Optimiere das Gesamtsystem (optimize the whole)
I
Berücksichtige den Kunden (focus on customers)
I
Gib dem Team mehr Entscheidungsfreiheit (empower the
team)
I
Eliminiere Verschwendung (eliminate waste)
I
Verbessere den Lernprozess (enhance learning)
I
Verbessere den Durchsatz (increase flow)
I
Baue Qualität (build quality in)
I
Werde immer besser (keep getting besser)
Optimize the Whole
I
Kläre den Zweck (clarify purpose)
I
Berücksichtige die gesamte Wertschöpfungskette
I
Denke langfristig (think long-term)
Focus on Customers
I
Frage die richtigen Fragen
I
Löse die richtigen Probleme
I
Entwerfe ein großartiges Erlebnis (design a great experience)
Empower the Team
Das Team braucht
I
Ziele (purpose)
I
Herausforderungen
I
Verantwortung
Eliminate Waste
I
Verschwendung ist alles, was keinen unmittelbaren
Kundennutzen hat
I
I
I
I
I
I
I
I
Die drei größten Verschwendungen sind
I
I
I
I
Überflüssiger Code
Unnötige Prozessschritte und -ergebnisse
Verzögerungen im Prozess
Unklare Requirements
Unnötige Bürokratie
Langsame oder fehlende Kommunikation
...
herstellen des falschen Produkts (build the wrong thing)
ein falscher Weg um das Produkt herzustellen (build the thing
wrong)
eine Los und Warteschlangenmentalität (batch and queue
Mentality)
Wertstromanalyse (Value-Stream Mapping) als Verfahren,
Verschwendung zu erkennen
Enhance Learning
I
Das Vorhersage-Paradoxon: Vorhersehbare Ergebnisse werden
durch die Fähigkeit zum Lernen und schnellen Adaptieren
erreicht, nicht durch Prognosen die als Pläne getarnt werden
I
Wissensbasierte Entwicklung versucht Lücken im Wissen zu
entdecken und schließen, mehrere Optionen zu entwickeln und
parallele Entwicklungen häufig zu synchronisieren
I
Last Responsible Moment: Entscheidungen, sollten weder vor
noch nach dem richtigen Zeitpunkt getroffen werden
Last Responsible Moment
I
Je weniger Wissen für eine Entscheidung vorhanden ist, desto
wahrscheinlicher ist es eine falsche Entscheidung zu treffen
I
Da falsche Entscheidungen höhere Kosten verursachen sind
Entscheidungen (im Durchschnitt) um so teurer, je früher
man sie trifft
I
Ab einem gewissen Punkt ist es typischerweise zu spät eine
Entscheidung zu treffen, die Auswahl wird dann durch äußere
Umstände erzwungen
I
Das Verzögern von Entscheidungen ist nicht gleich dem
Verschleppen oder Nicht-Treffen von Entscheidungen!
I
Constraintbasierte oder Mengenbasierte
Entwicklungstechniken erleichtern das Verzögern von
Entscheidungen
Last Responsible Moment
Increase Flow
Versuche einen stetigen, gleichmäßigen Arbeitsfluss zu erreichen
I
Geschwindigkeit, Qualität und niedrige Kosten sind
miteinander vereinbar
I
Versuche Flusseffizienz zu erreichen nicht Ressourceneffizienz
I
Manage den Workflow, nicht Task-basierte Zeitpläne
Build Quality In
I
Baue Fehlertoleranz in den Prozess ein (mistake-proof the
process)
I
Das System soll zu jedem Zeitpunkt auf jeder Ebene
vertrauenswürdig sein
I
Integriere früh und oft
I
Toleriere keine Defekte
Keep Getting Better
I
Gehe mit der Zeit (change as fast as the world changes)
I
Berücksichtige Details (pay attention to the small stuff)
Verwende die wissenschaftliche Methode
I
I
I
I
I
Hypothesen
Experimente
Dokumentiere die Ergebnisse knapp
Wähle die beste Alternative