Definition

Lean Software Development (LSD)

Lean Softwareentwicklung ist ein Konzept, das mehr Effizienz und weniger Verschwendung im Softwareentwicklungsprozess erreichen soll. Der Ansatz hat seine Wurzeln in der Lean-Manufacturing-Bewegung der 1980er Jahre. Es gilt heute als integraler Bestandteil der agilen Softwareentwicklungsmethodik.

Die sieben Prinzipien der Lean-Softwareentwicklung

Das wichtigste Ziel der Lean-Entwicklungsmethodik ist es, auf allen Ebenen Prozesse effizienter zu gestalten und Verschwendung zu reduzieren. Das gilt auf individueller Ebene ebenso wie in Abteilungen, in abteilungsübergreifenden Abläufen, in der Gesamtorganisation und im Kontakt mit Kunden und Lieferanten.

Der Lean-Softwareentwicklungsprozess umfasst die folgenden sieben Prinzipien:

Die sieben Prinzipien des Lean Software Development
Abbildung 1: Die sieben Prinzipien der schlanken Softwareentwicklung.
  1. Verschwedung eliminieren. Nach jeder Entwicklungsiteration besprechen Projektmanager Engpässe, identifizieren Verschwendung und entwickeln einen Plan, um sie zu beseitigen. In der Lean-Philosophie gilt alles als Verschwendung, was dem Produkt keinen Mehrwert verleiht. Einige Beispiele sind die folgenden:
  • unnötige Code- oder Softwarefunktionen;
  • ein unrealistisches Aufgabenpensum;
  • bürokratische Prozesse; und
  • Qualitätsprobleme.
  1. Qualität mit einbauen. Lean Software Development schlägt verschiedene Taktiken vor, um die Qualität des Produkts zu fördern, zum Beispiel Pair Programming und testgetriebene Entwicklung.
  2. Lerneffekte verstärken. Softwareentwickler müssen ihr Wissen mit jedem Ingenieur im Softwareentwicklungsteam teilen. Dies geschieht durch Codeüberprüfung und gemeinsame Meetings. Außerdem sollten Sie Ihre Mitarbeiter ermutigen, während der Arbeit dazuzulernen und Vorannahmen zu hinterfragen.
  3. Legen Sie sich so spät wie möglich fest. Es ist wichtig, sich viel Zeit zum Experimentieren und Lernen zu lassen, bevor man sich auf unumkehrbare Entscheidungen einlässt. Entwickler integrieren Merkmale und Funktionen so spät wie möglich in den Prozess, um zu verhindern, dass sie aufwendig nacharbeiten müssen, wenn sich die Lage ändert.
  4. Schnell liefern. Entwickler bringen ein Produkt schnell auf den Markt, erhalten schnell Kundenfeedback und nutzen dieses Feedback, um eine Strategie zur Verbesserung zu entwickeln. Die Idee hinter diesem Ansatz ist es, schnell zu scheitern und aus den Ergebnissen zu lernen. Diese Strategie steht im Gegensatz zu anderen Methoden, die dabei helfen sollen, komplexe Produkte zu entwickeln. Sie nehmen oft viel Zeit in Anspruch und scheitern trotzdem.
  5. Menschen respektieren. Respekt ist die Basis für eine produktive, teamorientierte Atmosphäre. Lean fördert gesunde Konflikte, proaktive Kommunikation und kontinuierliches Feedback.
  6. Optimieren Sie Alles. Das Team untersucht den Prozess von Anfang bis Ende, um den Lean-Wertstrom so effizient wie möglich zu gestalten. Lean Softwareentwicklung vermeidet Suboptimierung, bei dem aus Geschwindigkeitsgründen fehlerhafter Code schneller generiert wird, als er getestet werden kann.

Was ist der Unterschied zwischen Lean Development und Agile?

Lean- und Agile-Prinzipien haben viel gemeinsam. Beim Vergleich von Lean und Agile verweisen Experten oft eher auf die Gemeinsamkeiten als auf die Unterschiede. Lean und Agile arbeiten so nahtlos zusammen, dass es schwierig ist, sie voneinander zu unterscheiden. Sie werden manchmal sogar zusammen als Lean-Agile bezeichnet.

In beiden Fällen gibt das Produktentwicklungsteam das Tempo vor und ist für die Auslieferung verantwortlich. Agile Teams tun dies mit der Sprint-Methodik. Und das Optimizing-the-Whole-Prinzip von Lean ähnelt der agilen Retrospektive, bei der sich Teammitglieder nach Abschluss eines Projekts versammeln, um Erfolge und Herausforderungen zu diskutieren.

Es gibt einige subtile Unterschiede zwischen den beiden Prozessen. Lean konzentriert sich auf den Aufbau besserer Prozesse, während der Fokus von Agile auf der Entwicklung besserer Produkte liegt. Agile Praktiken zielen darauf ab, Produkte zu schaffen, die die Bedürfnisse und Erwartungen der Verbraucher erfüllen, und Lean ist eine Möglichkeit, dieses Ziel zu erreichen.

Lean wird oft als eines von mehreren agilen Frameworks gezählt – Scrum und Kanban sind zwei weitere. Die Agile-Methodik wird im Agilen Manifest ausführlich beschrieben, das eine Reihe von Werten und Prinzipien enthält, die die Agile-Frameworks leiten.

Was sind die Vorteile einer schlanken Softwareentwicklung?

Einige der Vorteile von Lean sind die folgenden:

  • Zusammenarbeit. Lean-Prinzipien verstärken das Lernen und den Respekt, um die Zusammenarbeit und den Wissensaustausch zu fördern und Engpässe zu vermeiden. Teams werden befähigt, ihre eigenen Entscheidungen zu treffen und im Entscheidungsprozess zusammenzuarbeiten.
  • Kontinuierliche Verbesserung. Lean umfasst das, was viele den modernen Softwareentwicklungsprozess nennen. Der Arbeitsablauf beinhaltet eine ständige Kommunikation mit Kunden und laufend Feedback. Dies ermöglicht eine kontinuierliche Verbesserung – genannt Kaizen – in allen Teilen des Betriebs.
  • Effizienz. Die Nachfrage nach Software explodiert und Unternehmen können Apps nicht schnell genug liefern. Der Lean-Ansatz eliminiert Verschwendung und liefert Software schneller und kostengünstiger.
  • Flexibilität. Die Lean-Methodik verbessert die Flexibilität, priorisiert jedoch die Geschwindigkeit im Softwareentwicklungslebenszyklus. Es lässt Raum für Änderungen und ermöglicht es Entwicklern, Produkte basierend auf kontinuierlichem Feedback anzupassen.
  • Qualität. Die Effizienz, kontinuierliche Verbesserung, Flexibilität und Zusammenarbeit von Lean führt zu einer allgemeinen Verbesserung der Produktqualität und einer Steigerung der Kundenzufriedenheit.

Was sind die Herausforderungen der Lean-Entwicklung?

Dies sind einige der Herausforderungen von Lean-Softwareentwicklungspraktiken:

  • Anforderungen an das Teamtraining. Wenn ein Team nicht in der Lage ist, zusammenzuarbeiten und zu kommunizieren, bringt die schönste Unternehmensphilosophie nichts. Sie müssen Teams und Teammitglieder schulen, damit sich gegenseitig Arbeit abnehmen können und sich an wechselnde Initiativen anpassen. Sie sollten außerdem wechselnde Prioritäten erkennen und sich an diese anpassen können.
  • Fehlende Metriken. Ein häufiges Problem bei Lean ist, die falschen Softwaremetriken zu messen oder überhaupt nicht zu messen. Da eines der Hauptziele von Lean Software Engineering darin besteht, Verschwendung zu beseitigen, müssen Teams in der Lage sein, Verschwendung zu identifizieren und zu messen.
  • Keine Grenzen. Software-Anforderungsspezifikationen entwickeln sich in Lean, wenn Kunden Feedback geben. Zu viele Anforderungen und zu viele Änderungen schaffen Komplexität und erschweren die Veröffentlichung einer zusammenhängenden Software.
  • Suboptimierung. Suboptimierung liegt vor, wenn nur ein Teil des Wertstroms des Produktionssystems optimiert wird. Dies geschieht, wenn ein Problem in Teile zerlegt wird, um diese isoliert zu lösen, ohne dass die Mitarbeiter Auswirkungen zu berücksichtigen, die ein Teil auf andere Teile oder das gesamte System haben wird.

Die Geschichte der Lean-Entwicklung

Das Lean-Manufacturing-Konzept entstand Mitte des 20. Jahrhunderts aus einem Produktionsprozess, den Toyota im Rahmen seiner Toyota-Way-Philosophie entwickelt hatte. Lean Manufacturing zielte darauf ab, Produktfehler zu reduzieren, Verschwendung zu vermeiden, die Produktivität zu steigern und Verantwortlichkeit und Innovation zu fördern. Der Ansatz breitete sich schließlich auf andere Branchen aus.

Mary und Tom Poppendieck verwendeten den Begriff Lean-Softwareentwicklung in ihrem gleichnamigen Buch, das sie 2003 veröffentlichten. Darin wurden die sieben Lean-Prinzipien auf das Software-Engineering und den Entwicklungsprozess angewendet.

Diese Definition wurde zuletzt im März 2022 aktualisiert

Erfahren Sie mehr über Business-Software