Agile Softwareentwicklung

Scrum Foundation

Wie Agile Softwareentwicklung entstand

Klassische, lineare Softwareentwicklung hat seit Dekaden mit gravierenden Problemen zu kämpfen.

Als Beispiel, das Wasserfallmodell. Die Bearbeitung der Phasen von Planung, Entwurf, Implementierung Test und Wartung, erfolgt nacheinander. Die nächste Phase beginnt, wenn die vorhergehende abgeschlossen ist.

Dieser Prozess dauert von Monaten bis hin zu Jahren. Anschließend wird die Software geliefert oder veröffentlicht und es beginnt die Wartungsphase.

Die Phasen des Wasserfall-Modells entsprechen dem Deming Kreis. Dieser wird auch PDCA-Zyklus (Plan, Do, Check, Act) genannt und wurde von Edward Deming beschrieben.

Durch die Rahmenbedingungen des Wasserfallmodell und ergeben sich gewichtige Probleme:

  1. Umsetzungsfehler werden erst spät erkannt
  2. Durch die Entwicklungsdauer ist das Produkt fĂĽr den Markt uninteressant geworden.
  3. Es gibt kein Feedback aus dem Nutzerkreis. Potenzial fĂĽr Verbesserungen bleibt verborgen.
  4. Fehler zu beheben, kostet viel Geld.
  5. Designfehler lassen sich, wenn ĂĽberhaupt, schwer beseitigen.
  6. usw.

Was ist der Unterschied zwischen klassischen und agilen Softwareentwicklungs-Modellen?

Bei klassischen Modellen liegt zwischen Anforderung und Auslieferung eine lange Zeitspanne. Es dauert mitunter Jahre, bis ein lieferbares Produkt fertiggestellt ist. Das fĂĽhrt zu den oben genannten Probleme.

Agile Softwareentwicklungs-Modelle durchlaufen die gleichen Phasen des PDCA-Zyklus, mehrfach in wesentlich kĂĽrzerer Zeit. Die Phasen Plan, Do, Check, Act werden in wenigen Wochen, statt Monaten und Jahren durchlaufen.

Wird die Entwicklung durch agile Softwareentwicklung-Modelle schneller?

Nein und Ja.

Nein, weil der Menge der zu erledigen Arbeit, bei kĂĽrzeren Zyklen gleich bleibt.

Ja, wenn gleichzeitig die Werte und Prinzipien vom Agile Manifest gelebt werden. Dies verdeutlicht das zehnte agile Prinzip: Einfachheit, die Kunst, die Menge nicht getaner Arbeit zu maximieren, ist essenziell.

Durch das Befolgen aller agilen Prinzipien, verstärkt sich deren Wirkung und agile Softwareentwicklungsprojekte erreichen schneller ihr Ziel.

Kurze Zyklen ermöglichen die regelmäßige Bereitstellung, eines potenziell lieferbaren Produkts. Jedes potenziell lieferbare Produkt ist eine nützliche Erweiterung des Produkts, aus dem vorhergegangenen Zyklus.

Das Agile Manifest

Einige Leiter von Softwareentwicklungsprojekten fanden heraus, dass deren klassisch durchgefĂĽhrte Projekte, signifikant erfolgreicher waren als der allgemein Durchschnitt.

Warum waren diese Projekte erfolgreicher als der Durchschnitt? Siebzehn Projektleiter versuchten dies im Jahr 2001 in Utah, USA, herauszufinden.

Im Ergebnis, formulierten sie aus den Erkenntnissen das Agile Manifest.

Werte & Prinzipien aus dem Agile Manifest

Das Agile Manifest liefert Werte und Prinzipien fĂĽr die agile Softwareentwicklung, die das Resultat aus der Betrachtung erfolgreicher Projekte sind. Sie sind das Fundament agiler Modelle.

Die agilen Werte

Das Agile Manifest beinhaltet vier Werte:

  1. Wir schätzen Individuen und Interaktionen mehr als Prozesse und Werkzeuge
  2. Wir schätzen funktionierende Software mehr als umfassende Dokumentation
  3. wir schätzen Zusammenarbeit mit dem Kunden mehr als Vertragsverhandlungen
  4. wir schätzen das Reagieren auf Veränderung mehr als das Befolgen eines Plans

Im agilen Manifest heißt es weiter: “Obwohl wir die Werte auf der rechten Seite wichtig finden, schätzen wir die Werte auf der linken Seite höher ein.”

Das bedeutet nicht, dass die rechte Seite unwichtig ist. Die rechte Seite ist wichtig, wenn sie nĂĽtzlich und sinnvoll ist.

Die Prinzipien agiler Softwareentwicklung

Zusätzlich zum Agile Manifest wurden noch 12 Prinzipien formuliert, die agiles Vorgehen ermöglichen.

  1. Unsere höchste Priorität ist es, den Kunden durch frühe und kontinuierliche Auslieferung wertvoller Software zufriedenzustellen. Dahinter verbirgt sich nichts weiter als: Baue, Liefere und Lerne daraus. Schau dir den Demingkreis an.
  2. Heiße ​Änderungen, selbst spät in der Entwicklung willkommen. Agile Prozesse nutzen Veränderungen zum Wettbewerbsvorteil des Kunden. Dieses Prinzip fordert dich auf, zu jeder Zeit Änderungen in der Entwicklung zu akzeptieren und umzusetzen. Nutze den Wettbewerbsvorteil frühzeitiger Lieferungen. Sei bereit, Änderungen zu akzeptieren und realisiere einen schnelleren Return on Invest.
  3. Liefere funktionierende Software regelmäßig innerhalb weniger Wochen oder Monate und bevorzuge die kürzere Zeitspanne. Beschreibt das ​Iterative Vorgehen. Je kürzer die Zeitspanne, umso schneller kann Feedback in die Entwicklung einfließen.
  4. Fachexperten und Entwickler müssen während des Projektes täglich zusammenarbeiten. Baue mit allen Beteiligten ein gemeinsames Verständnis für das Ziel auf und halte eine positive Kommunikation aufrecht.
  5. Errichte Projekte rund um motivierte Individuen, gib ihnen das Umfeld und die Unterstützung, die Sie benötigen und vertraue darauf, dass sie die Aufgabe erledigen. Es ist herausfordernd, Teams motivierter Individuen zu bilden. Versuche alles, um motivierte Teams zusammenzustellen und motiviert zu halten.
  6. Die effizienteste und effektivste Methode, Information an und innerhalb eines Entwicklungsteams zu übermitteln, ist im Gespräch von Angesicht zu Angesicht. Heißt auch: Schreib keine E-Mails, sondern begebe dich direkt zu deinem Gesprächspartner und interagiere mit ihm persönlich. Der Prozess lautet: Miteinander sprechen, vereinbaren, dokumentieren.
  7. Funktionierende Software ist das wichtigste Fortschrittsmaß. Das bedeutet egal, was du tust, am Ende zählt die funktionierende Software.
  8. Agile Prozesse fördern nachhaltige Entwicklung. Die Auftraggeber, Entwickler und Benutzer sollten ein gleichmäßiges Tempo auf unbegrenzte Zeit halten können. Hier hilft es, die Velocity, die Geschwindigkeit der Entwicklung, im Auge zu behalten und die Teams nicht permanent zu 100 % auszulasten. Es ist wie mit einem Fahrzeugmotor. Bei andauernder Volllast, verkürzt sich die Zeit bis zu einem Ausfall.
  9. Ständiges Augenmerk auf technische Exzellenz und gutes Design fördert Agilität.
    Mike Beedle schrieb in einem Tweet:
    „Agile heilt keine INKOMPETENZ. Sie können Teams coachen, um engagierter und kollaborativer zu sein, aber KEIN agiles Framework, keine agile Methode oder Denkweise wird Sie vor ​EKLATANTEM ​MISSERFOLG bewahren, wenn ihr Entwicklungsteam in Konstruktionspraktiken INKOMPETENT ist. Technische Exzellenz ist ein MUSS!“
  10. Einfachheit, die Kunst, die Menge nicht getaner Arbeit zu maximieren, ist essenziell. Für Softwareentwickler ist dieser Hinweis entscheidend. Jeder, der in einem agilen Prozess mitwirkt, soll den einfachen Weg wählen. Keine Sonderlocken, keine goldenen Henkel, sondern: Mache weniger und liefere mehr.​ Sind Profis schneller, wenn man sie antreibt? Nein, Profis sind schneller, indem sie Tätigkeiten auf das notwendige reduzieren.
  11. ​Die besten Architekturen, Anforderungen und Entwürfe entstehen durch selbstorganisierte Teams. Harte Vorgaben verhindern optimale Lösungen und Kreativität.
  12. ​In regelmäßigen Abständen reflektiert das Team, wie es effektiver werden kann und passt sein Verhalten an.Die Verpflichtung zur kontinuierlichen Verbesserung. ​Perfektion existiert nicht.​ Ständige Verbesserung ist ein Grundbaustein der Agilität. Strebe nach Perfektion, um näher an Perfekt heranzukommen, ohne sie zu erreichen.

Das Agile Mindset

Um Agilität sinnvoll zu leben, bedarf es der richtigen Einstellung. Agilität ist keine Methode oder Anleitung. Agilität ist ein Mindset, die gedankliche Einstellung einer Person.

Du kannst agile Methoden einsetzen, ohne ein agiles Mindset zu besitzen. Im Ergebnis wird es schlechter, anstatt besser.

Vor- und Nachteile agiler Softwareentwicklungs-Modelle

Agile Softwareentwicklungs-Modelle funktionieren gut, weisen aber auch Nachteile auf. Die wichtigsten davon sind:

  • Vorhersagbarkeit steigt erst mit dem Projektfortschritt
  • Schwierige Budgetplanung
  • GefĂĽhl von Kontrollverlust bei den FĂĽhrungskräften
  • Laterale FĂĽhrung erforderlich
  • Ungenaue Terminplanung

So schwerwiegend wie die Nachteile erscheinen, die Vorteile agiler Softwareentwicklung ĂĽberwiegt deutlich:

  • Der Auftraggeber darf den Projektverlauf direkt beeinflussen.
  • Flexibles reagieren auf  Veränderung und Neuerung
  • FrĂĽhzeitige Fehlererkennung
  • Motivierte Mitarbeiter
  • Schneller Return on Invest
  • Schnelle Anpassung an Marktverhältnisse

Agile Softwareentwicklung bedarf enger Zusammenarbeit und dem Reagieren auf Veränderung

Voraussetzungen für eine agile Softwareentwicklung ist einerseits die enge Zusammenarbeit zwischen Auftraggeber, Auftragnehmer und den Anwendern. Sind die Anforderungen nicht im Voraus bekannt, werden diese Schritt für Schritt während des Entwicklungsprozesses definiert.

Eine enge Zusammenarbeit ist unumgänglich. Über die Beschaffenheit des Produkts muss eine stete Diskussion bestehen.

Andererseits wird vorausgesetzt, dass das Entwicklungsteam auf Veränderung eingestellt sein muss. Zu jeder Zeit sind Änderungen möglich, auf die das Entwicklungsteam reagieren muss.

Wann sind Modelle fĂĽr agile Softwareentwicklung sinnvoll?

Woran erkennst du, wann eine agile Vorgehensweise einem klassischen Modell vorzuziehen ist? Entscheide dich fĂĽr das geeignete Modell, anhand des Entwicklungsziels.

Klassische Entwicklungsmodelle sind Prädiktive / Inkrementelle Modelle. Agile Entwicklungsmodelle sind Adaptiv / Iterativ.

Prädiktive / Inkrementelle Projekte

Wenn das Endprodukt vorhersagbar ist, entscheide dich für ein klassisches Modell. In klassischen Modellen ist es möglich, einzelne Komponenten als Inkremente parallel zu erstellen und hinterher zusammenzufügen. Klassische Modelle sind Prädiktive/Inkrementelle Modelle und heißen unter anderem Wasserfallmodell, V-Modell, Spiralmodell und so weiter.

Adaptiv / Iterative Projekte

Entscheide dich für ein agiles Modell wie Scrum, Kanban oder XP, wenn das Endprodukt nicht klar definierbar ist. Weil nicht feststeht, welche Bestandteile erforderlich sind und die Änderung von Anforderungen möglich ist, kommt eine prädiktive Herstellung nicht infrage. In agilen Modellen ist nach jedem Zyklus, ein potenziell lieferbares Produkt verfügbar.

Halten wir fest: Bei unvollständigen Anforderungen an das Zielprodukt, erwäge eine agile Entwicklungsmethode.

Existieren zu Beginn der Entwicklung klare Anforderungen an das Zielprodukt, ziehe ein klassisches Modell oder prozessorientiertes Modell, wie Kanban, in Betracht.

Agile Softwareentwicklung in Organisationen einfĂĽhren

Es scheint leicht zu sein, agile Softwareentwicklung und deren Modelle in Organisationen zu implementieren.

Der Schein trügt. Viele Organisationen tragen auf der Verpackung die Bezeichnung “Agil” ohne Agilität zu leben. In der Praxis hat die Implementierung agiler Modelle Hindernisse zu bewältigen. Zu nennen sind:

  • Die Organisationsphilosophie oder -kultur steht im Widerspruch zu den zentralen agilen Werten.
  • Es besteht mangelnde Erfahrung mit der agilen Methode
  • mangelnde UnterstĂĽtzung des Managements
  • Es formiert sich allgemeiner organisatorischer Widerstand gegen die anstehenden Veränderungen.
  • Mitarbeiter sind fĂĽr die Anwendung agiler Modelle, unzureichend ausgebildet.

FĂĽhren Organisationen agile Modelle ein, scheitern sie, wenn:

  • Organisationen gegen Veränderung resistent sind,
  • Ein Kulturwandel in der Organisation nicht erfolgt,
  • FĂĽhrungskräfte ihre Machtpositionen schĂĽtzen und ihre Komfortzone nicht verlassen.

Ich wĂĽnsche dir eine stressfreie Zeit.
Frank

Frank Schatz

Frank Schatz

Als Trainer, Mentor und Coach ist Frank Schatz vielleicht einer der gefragtesten T-Shaped Agilisten im deutschsprachigen Raum. Er ist geprüfter Sachverständiger für agiles Projektmanagement und seit über 25 Jahren IT-Unternehmer, Agile Work Experte und Certified Instructor. Frank Schatz, damit es agil wird.

Agile Work

Die Agile Transformation

Agiles Mentoring