Software-Evolution: Wege zur Wertsteigerung und zu mehr Nachhaltigkeit
Wertsteigerung durch Anpassungsfähigkeit
Der finanzielle Wert von Softwaresystemen ist durch deren Funktionalität, Stabilität und Performanz oder allgemein durch deren Nutzen gegeben.
Um diesen Wert zu erhalten oder zu vergrößern, ist nicht nur die Bereitstellung neuer Funktionen für den Kunden wichtig. Vielmehr muss das Softwaresystem auch permanent an die sich kontinuierlich veränderte Systemlandschaft angepasst oder für neue gesetzliche Bestimmungen und Regelungen ausgelegt werden.
Die Gründe können vielfältig sein: der ursprüngliche Anwendungsfall hat sich geändert (Beispiel: Wer benötigt heutzutage noch eine Fax-Software?) oder es gibt neue Geschäftsmodelle (Beispiel: Software as a Service). Der Betriebssystem-Support läuft aus (Windows XP, 7, 10, …), Hardware ist nicht mehr lieferbar, die benötigten Hardwaretreiber sind für aktuelle Betriebssysteme nicht verfügbar. Oder aber spezielle Software-Bibliotheken sind für aktuelle Betriebssysteme nicht mehr erhältlich. Nicht zuletzt können gesetzliche Vorgaben wie DSGVO, EU Cybersecurity Act oder EU Cyber Resilience Act Änderungen an der Software erforderlich machen.
Der Wert von Softwaresystemen hängt daher maßgeblich von ihrer Anpassungsfähigkeit an veränderte Anforderungen, System-Landschaften und gesetzliche Vorgaben ab.
Strategische Roadmap für Kosteneffizienz und Risikominimierung
Bei einer überwiegend funktionsorientierten Entwicklung wird es mit der Zeit in der Regel immer schwieriger (und teurer), ein Softwaresystem zu warten, zu ändern und zu erweitern. Durch den starken Fokus auf immer neue Features werden fast zwangsläufig technische Schulden aufgebaut. Der Weiterentwicklung und Änderungen der Systemlandschaft und der damit verbundenen Randbedingungen wird meistens nicht ausreichend Rechnung getragen. Das Risiko, beim nächsten großen Betriebssystem Update nicht mehr lieferfähig zu sein, steigt kontinuierlich. Im schlimmsten Fall darf das Software-System wegen Verstößen gegen neue oder geänderte gesetzliche Vorgaben nicht in Betrieb genommen werden.
Eine langfristig ausgerichtete, strategische Entwicklung der Software-Architektur trägt dazu bei, diese Probleme zu vermeiden. Sie hilft, technische Schulden abzubauen, die Wartbarkeit und Erweiterbarkeit sicherzustellen und das Softwaresystem rechtzeitig auf die sich ändernde Systemlandschaft vorzubereiten. Das spart mittel- und langfristig nicht nur (erhebliche) Kosten, sondern es wird vor allem auch die zukünftige Liefer- und Einsatzfähigkeit sichergestellt. Die dafür notwendige strategische Planung beinhaltet sowohl die Evolution der zugrundeliegenden Software-Architektur als auch die Entwicklung neuer Funktionen.
Die strategische Entwicklung der Software-Architektur darf somit nicht isoliert betrachtet werden. Sie sollte vielmehr fortlaufend durch die geplanten Funktionserweiterungen und die identifizierten Probleme getrieben werden. Folglich ist zuerst die Roadmap der neuen Funktionen erforderlich, um darauf die Planung der Architektur-Entwicklung ausrichten zu können. Daraus entsteht dann in der Summe die notwendige, langfristig ausgerichtete, strategische Software-Evolution.
Eine der ersten Fragen ist dann: Gibt es für das betrachtete Softwaresystem diese Roadmap bzw. wie kann diese aufgebaut werden?
Erfolgsorientierte Planung mit Roadmap
Vorwärts- und Rückwärtsplanung: Funktionen und Architektur im Einklang
Durch die Produktvision wird vorgegeben, wo ein Softwaresystem in zwei bis fünf Jahren stehen soll.
Diese Vision ist die Basis für eine Vorwärtsplanung der Funktionen. Hieraus wird die Roadmap zur Entwicklung der neuen Features aufgebaut.
Ausgehend von dieser Roadmap werden dann die erforderlichen Architekturänderungen rückwärts geplant und die Meilensteine der nächsten Jahre definiert. Dabei wird die Planung immer detaillierter, je näher die Meilensteine zeitlich liegen. Weiter in der Zukunft liegende Meilensteine erfordern noch keine detaillierte Ausarbeitung und werden entsprechend grob definiert. So kann auch die mittel- oder langfristige Planung noch angepasst werden und die Entwicklung bleibt agil.
Sicher gilt es bei der Wahl des passenden Planungshorizontes die individuellen Rahmenbedingungen eines Projektes zu berücksichtigen. Als grobe Richtschnur hat sich aus unserer Sicht ein Planungshorizont von zwei bis fünf Jahren bewährt.
Dieser Zeitraum ist einerseits groß genug, um mit genügend Weitblick die nächsten Schritte zu planen. Andererseits ist er klein genug, um die Volatilität sinnvoll zu begrenzen.
![Blog_CP_Roadmap-Strategtische-Evolution_jpg Blog_CP_Roadmap-Strategtische-Evolution_jpg](https://www.sekas.de/wp-content/uploads/Roadmap-Strategtische-Evolution.jpg)
Agilität mit klarer Produktvision
Agile Softwareentwicklung bedeutet nicht, dass es keine Produktvision und keine langfristige Planung gibt. Im Gegenteil, die Produktvision ist für die agile Softwareentwicklung unabdingbar. Sie stellt sicher, dass man sich nicht in den Details von kleinen Produktinkrementen verliert. Deshalb ist eine Roadmap, wie oben beschrieben, wichtig. Auf dieser Grundlage können die notwendigen Architekturentscheidungen geplant und mit den Produktinkrementen umgesetzt werden.
Zielgerichtete Umsetzung für nachhaltigen Erfolg
Erst wenn die strategische Planung vorliegt, kann Software-Evolution zielgerichtet umgesetzt werden. Sie bietet die Basis, auf der die erforderlichen Einzelschritte wie Refactoring, Reengineering oder Rewriting geplant werden können.
Dabei muss klar sein, dass diese Schritte keinem Selbstzweck dienen. Sie müssen in Umfang und Tiefe immer an den Zielen ausgerichtet werden.
So ist es zum Beispiel häufig ebenso wenig sinnvoll, alten Code komplett durch neuen und aus Entwicklersicht natürlich “besseren und schöneren” Code zu ersetzen. Auch eine massive Überarbeitung eines bestehenden Programmteils mit dem primären Ziel, diesen „einfach zu verbessern“, ist häufig nicht die effektivste Maßnahme.
Dieser scheinbare Widerspruch wird verständlich, wenn neben den software-technischen Aspekten auch Risiken und Kosten in die Analyse einbezogen werden. Die Frage ist zudem, ob und wie die jeweiligen Maßnahmen auf die in der Produktvision und Roadmap erkennbaren Ziele einzahlen. Im Einzelnen hängt das von den Details und Herausforderungen der zu lösenden Aufgabe ab. Die Diskussion der damit verbundenen technischen Details und einer geeigneten Herangehensweise würde den Rahmen dieses Artikels jedoch sprengen.
Fazit: Mit der Roadmap zur zukunftssicheren Software-Evolution
Bei der Pflege und Weiterentwicklung eines Softwaresystems geht es um dessen Werterhalt, um die bisherigen Investitionen zu sichern. Mindestens genauso wichtig erscheint aber, jederzeit die Liefer- und Einsatzfähigkeit des Softwaresystems sicherzustellen.
Dies erfordert eine kontinuierliche Software-Evolution, um kontinuierlich auftauchenden Risiken schon pro-aktiv entgegenzuwirken. Software-Evolution zielt auf die Bereitstellung neuer Funktionen für den Kunden ab. Sie stellt aber auch die Eignung für Änderungen und Erweiterungen des Softwaresystems sicher.
Die Existenz einer Roadmap ist die Basis für eine zielgerichtete und effektive Weiterentwicklung eines Systems. Mit ihr können die Entwicklung von neuen Funktionen und die erforderlichen Architekturänderungen aufeinander abgestimmt werden.
Die Roadmap zeichnet die langfristige Perspektive des Softwaresystems. An ihr richten sich alle Entwicklungsschritte aus. Die technischen Arbeiten zur Umsetzung können zielgerichtet und kostenorientiert geplant und Risiken reduziert werden. Dies stellt eine effektive Weiterentwicklung und Pflege sicher, um damit den langfristigen Erfolg des Softwaresystems zu gewährleisten.