Praxisbericht: Agiles Software Engineering im Rahmen einer SiteOS Auftragsentwicklung
SiteOS wurde mit der Entwicklung einer anspruchsvollen B2C und später B2B Applikation im Finanzdienstleistungsumfeld – aka „Fintech“ - beauftragt. Wir setzen seit mehreren Jahren erfolgreich agile Entwicklungsmethoden ein und möchten mit diesem Artikel einen Erfahrungsbericht zur Anwendung dieser Methoden im Kontext des Projektes geben.
Ausgangslage
Ausgangslage für das Projekt waren folgende Rahmenbedingungen:
- Verwaltung von mehreren Milliarden Objekten in vermutlich verschiedenen Datenspeichern
- Online Integration mit ca. 20 unterschiedlichen Marktpartnern über offene Schnittstellen
- Gleichzeitige Implementierung der benötigten Frontoffice und Backoffice Applikationen
- Antwortzeiten der Server im Durchschnitt unter 20ms
- 24/7 Betriebsfähigkeit inkl. einer definierten Absicherung - mehrfache Ausfallsicherheit
- z. T. Bankfachliche Anforderungen
- Integration eines Near Shore Teams zur Umsetzung von User Interfaces, so dass sich SiteOS auf die Umsetzung der Kernanforderungen konzentrieren kann
Klare Vorstellungen existierten zum Projektstart vor allem hinsichtlich des Zeitrahmes und des verfügbaren Budgets, bei den funktionalen Anforderungen und der benötigten Technologien bis hin zum Betrieb mussten die Lösungen erst erarbeitet werden.
Aufgrund der sehr guten Erfahrungen mit agilen Methoden über mehrere Jahre und der anspruchsvollen, aber offenen Ausgangslage hat sich SiteOS für ein agiles Vorgehen entschieden.
Paradigmen der agilen Software Entwicklung
Die Paradigmen der agilen Software Entwicklung sind u. a.:
- Entwicklung in kurzen Iterationszyklen, die prüfbare bzw. abnehmbare (Zwischen-) Ergebnisse liefern (hier ca. 2-5 Wochen)
- Erarbeitung eines Anforderungskatalogs, zunächst niedrig detailliert
- Priorisierung der Anforderungen und damit der Entwicklungsaktivitäten - Kritische Themen zuerst!
- Vorab Detaillierung der Anforderungen für den nächsten Iterationszyklus
- Laufende Anpassung der Planung auf Basis der Projekterfahrungen und der im Projektverlauf entstehenden Anforderungen (durch Anpassung, Detaillierung)
- Kontinuierliche Messung des Projektfortschritts
Im Rahmen unseres Vorhabens war insbesondere das Paradigma, kritische Themen zuerst zu lösen, maßgeblich für den Projekterfolg.
Suchalgorithmus, Datenspeichertechnologien und Write Performance
Wir haben einen Suchalgorithmus konzipiert, der es ermöglicht, einen Datenbestand von mehreren Milliarden Objekten mit allen benötigten Filtern und Sortierungen mit Antwortzeiten im Bereich von unter 20ms zuverlässig zu durchsuchen.
Dazu notwendig war auch die Konzeption, Erprobung und Auswahl geeigneter Datenspeicherkonzepte und -technologien.
In einem dritten Schritt musste die Befüllung der Datenspeicher so umgesetzt werden, dass eine Verarbeitung von ca. 600.000 Objekten, in diesem Fall Angeboten pro Sekunde ermöglicht wird, von der Live Abfrage beim Datenlieferanten, über die Verarbeitung in mehrere Kalkulationsschritten bis hin zur zeitgleichen Ablage in relationale und nicht relationale und verteilte Datenspeicher. Die Umsetzung dieser Geschwindigkeit war notwendig, so dass bei Änderungen der externen Datengrundlagen der Komplettbestand der Daten innerhalb von wenigen Stunden neu aufgebaut und auf jede Detailänderung garantiert innerhalb weniger Sekunden reagiert werden kann.
Durch die Konzentration auf diese kritischen Anforderungen konnte die Machbarkeit des Projekts – zu vertretbaren Aufwänden- inkl. der Technologieauswahl bereits mit nur 10% des Projektbudgets nachgewiesen werden. Auf Basis dieses Lösungsansatzes konnten auch bereits zu diesem Zeitpunkt die Anforderungen an die gesamte Entwicklungs- und Produktinfastruktur abgeleitet werden, so dass die notwendigen Betriebskennzahlen garantiert werden konnten (Stichwort: DevOps).
Kritische Erfolgsfaktoren in agilen Projekten
Die Grundlagen für ein solches Vorgehen sind
- hochqualifizierte und erfahrene Mitarbeiter, die die technischen und organisatorischen und persönlichen Grundlagen für dieses Vorgehen einbringen
- tiefes fachliches Know how im Anwendungsgebiet, damit kritische Themen für das Software Engineering bereits in den konzeptionellen Phasen identifiziert werden können (Budgetfindung)
- das Vertrauen der Kunden in den Lösungspartner
- klar priorisierte Anforderungen, so dass Budget, Funktionen und Aufwand über die Prioritäten durch den Auftraggeber gesteuert werden können.
Fazit
Unter den gegebenen Voraussetzungen ist aus Sicht von SiteOS ein agiles Vorgehen im Software Engineering zu bevorzugen. Letztlich erhält der Kunde im Vergleich zu klassischen Vorgehensmodellen bei gleichem Budget mehr Leistung und dies zu früheren Zeitpunkten - in Form von produktiven Auslieferungen. Nachteilig wirkt sich lediglich aus, dass bei Auftragserteilung ein genauer Aufwand und der Funktionsumfang nicht feststehen können. Dies könnte jedoch nur über eine aufwändige Detailspezifikation und die Planung von Risikoaufschlägen erreicht werden – inkl. hoher Vorabkosten und höheren Projektrisiken. In gewissen Projektumfeldern können jedoch aus Sicht von SiteOS klassische Vorgehensweisen notwendig sein.