Methodoloty Approach

Agiles Vorgehen für die Softwareentwicklung

Agilität ist für PONTON kein Buzzword und keine Modeerscheinung, sondern die Antwort auf hohe Komplexität in Softwareprojekten, Innovation und die Adressierung der konkreten Bedürfnisse unserer Kunden.

Komplexität in Softwareprojekten zeichnet sich primär durch unklare bzw. noch unbekannte Anforderungen zu Projektbeginn aus, sowie durch sich kontinuierlich ändernde Rahmenbedingungen und Prioritäten. Das Zielbild des gewünschten Systems kann zwar grob auf Feature-Ebene beschrieben werden, auf eine kleinteilige, detaillierte und vollumfängliche Spezifizierung aller Anforderungen wird jedoch zunächst bewusst verzichtet, da es sehr wahrscheinlich ist, dass im weiteren Projektverlauf noch nicht bekannte Anforderungen identifiziert werden und sich Anforderungen und Prioritäten ändern. PONTON arbeitet agil, um

  • konstruktiv mit Komplexität und Innovation umzugehen,
  • Time-To-Market (schnelle produktive Ergebnisse),
  • Passgenauigkeit für den Kunden und
  • eine Maximierung des Kundennutzen zu erzielen.

Wir setzen auf das frühe Ausliefern von Software-Inkrementen, frühes Kunden-Feedback, auf regelmäßige Überprüfung der Prozesse und Arbeitsweisen sowie auf Transparenz der Anforderungen durch klare Akzeptanzkriterien und Prioritäten.

In einem solchen Projekt sind folgende Prinzipien essenziell für einen nachhaltigen Projekterfolg:

  • Interdisziplinäre und cross-funktionale Teams, deren Mitglieder sich über Fachgrenzen hinaus unterstützen,
  • kurze Iterationen mit schnellen Feedbackzyklen, um Risiken durch Missverständnisse und Fehlinterpretationen zu reduzieren und
  • regelmäßige, gemeinsame Reflexion der Arbeitsweise, um aus Störungen und Irrtümern kontinuierlich zu lernen.

PONTON ist es gewohnt mit verschiedenen agilen Methoden zu arbeiten, Scrum (https://www.scrum.org), Large Scale Scrum (LeSS, https://less.works/de), Scaled Agile Framework (SAFe, https://www.scaledagileframework.com) und ScrumBan.

Agile Softwareentwicklung nach dem Scrum-Ansatz

In der Regel geht PONTON nach dem Scrum-Ansatz mit zweiwöchentlichen Sprints vor. Das cross-funktionale Scrum-Team sollte dabei aus maximal 9 Personen bestehen (inkl. Product Owner). In dem Team werden alle erforderlichen Kompetenzen und Ressourcen vereint, damit Produktinkremente in relativ kurzen Zeiträumen definiert, entwickelt, getestet und ausgeliefert werden können (cross-funktionales Team). Am Ende eines Sprints sollte möglichst immer ein potenziell auslieferbares/ produktivsetzbares Produktinkrement verfügbar sein. Damit effektive Teams dazu in der Lage sind, müssen mindestens die Rollen Softwareentwickler (inkl. Know-How im Bereich Softwarearchitektur), Qualitätssicherer/ QA Experte, Scrum Master und Product Owner (PO) besetzt sein. Optional wird das Team zusätzlich von einem Agile Coach unterstützt. Scrum Master, Product Owner und Qualitätssicherer/ QA Experte sind bei PONTON nach anerkannten Standards geschult und zertifiziert.

Die folgende Grafik stellt die Scrum-Methodik vom generellen Ablauf her dar:

Eine detaillierte Darstellung zum Vorgehen nach Scrum finden Sie u.a. im offiziellen Scrum Guide: https://scrumguides.org/scrum-guide.html.

Skalierung nach LeSS

LeSS ist ein Vorgehensmodell zur schlanken Skalierung von Scrum. Mit LeSS ist eine Skalierung von einem Scrum-Team zu mehreren nach LeSS organisierten Scrum Teams als auch ein Rückbau von LeSS mit mehreren Scrum Teams zu einem Scrum Team organisch und einfach gestaltbar. Mit LeSS bleiben zentrale Elemente des Scrum-Vorgehens erhalten, wie z.B.:

  • Es gibt nur einen Product Owner und ein Product Backlog.
  • Teams sind cross-funktional besetzt.
  • Alle Teams arbeiten synchron im gleichen Sprint-Rhythmus.
  • Teams arbeiten an einem gemeinsamen Inkrement.

Basierend auf den von Scrum übernommenen Ansätzen definiert LeSS zusätzliche Events und erweitert den Kompetenzbereich existierender Scrum-Rollen. Das heißt, LeSS ist eine Erweiterung der Rollen, Events und Artefakte von Scrum. Die folgende Grafik gibt einen Überblick von LeSS (Quelle: https://less.works/de):

Weiteres zu LeSS siehe z.B. https://less.works/less/framework?preferred_lang=de.

DevOps-Ansatz als integraler Bestandteil des agilen Vorgehens

PONTON integriert den DevOps-Ansatz in die agile Vorgehensweise. Sowohl bei Scrum als auch bei LeSS arbeitet das (die) Team(s) an demselben Produkt. Schnelle Feedbackschleifen, häufige Check-Ins und automatisierte Tests fördern die Zusammenarbeit von Entwicklern. PONTON Teams setzen immer die Prinzipien von Continuous Integration und Continuous Deployment (CI/CD) um. Das schnelle Auffinden von Integrationskonflikten führt zu kleineren Integrationsproblemen und schnelleren Lösungen. Die Entwickler commiten ihren Code mehrmals am Tag. In Scrum bzw. LeSS muss das Team/ müssen alle Teams bis zum Ende des Sprints vollständig in eine einzige Code-Basis integriert sein. Je häufiger das Team/ diese Teams ihre Anwendung integrieren und erstellen, desto geringer sind die Integrationskonflikte innerhalb oder zwischen den Teams und desto schneller werden sie gelöst, um eine insgesamt robuste, skalierbare Lieferumgebung zu schaffen.

Automatisiertes Testen dient der Zusammenarbeit innerhalb eines Teams als auch zwischen Teams. Durch die Beschreibung der gewünschten Funktionalität in automatisierten Tests werden z.B. Unklarheiten darüber beseitigt, wie die Anwendung funktionieren soll. Auf diese Weise können die Mitglieder des Teams/ der Teams effektiver an derselben Aufgabe arbeiten, ohne die Anwendung in unterschiedliche Richtungen zu entwickeln. Des Weiteren wird ein Entwickler (oder ein Team) durch die Ausführung automatisierter Tests bei jedem Build gewarnt, falls die von ihm vorgenommenen Codeänderungen versehentlich die Arbeit eines anderen beeinträchtigen.

DevOps erweitert die Idee der cross-funktionalen Teams um die Fähigkeiten, die für Lieferung der Software in eine Zielumgebung bzw. der Produktivsetzung der Software erforderlich sind. Jedes Team muss in der Lage sein, ein Produkt-Inkrement zu jedem Zeitpunkt in eine Zielumgebung bzw. in die Produktion zu überführen.