Was ist Software-Modernisierung?
Software-Modernisierung oder Legacy-Modernisierung bezeichnet die Aktualisierung existierender Software-Systeme, so dass diese zukunftsfähig werden und mit wirtschaftlich vertretbarem Aufwand weiterentwickelt werden können. Software-Modernisierung ist eine Unterdisziplin der Software-Entwicklung und zeichnet sich im Kern dadurch aus, dass das Software-System bereits existiert. Systeme, die seit Jahren existieren werden als Legacy-Systeme, Altsysteme oder Bestandssysteme bezeichnet. Eine fast allen Legacy-Anwendungen anhaftende Eigenschaften ist deren schwerfällige Weiterentwicklung und die daraus resultierenden Kosten für das Unternehmen.
Warum Software-Modernisierung?
Software unterliegt einem Alterungsprozess. Während der initialen Entwicklungsphase steht die Entwicklung von Features und das Generieren von Geschäftswert im Vordergrund der Entwicklung. Automatisierte Unit-Tests oder kontinuierliches Refactoring bleiben häufig auf der Strecke. Die Folgen sind zunehmende Regressionen, abnehmende Entwicklungsgeschwindigkeit und veraltende Technologien. Die Entwicklungskosten werden so hoch, dass die Frage nach der wirtschaftlichen Sinnhaftigkeit einer Weiterentwicklung der Software gestellt wird. Für die Unternehmen entsteht ein Dilemma: Auf der einen Seite ist die Software unternehmenskritisch. Auf der anderen Seite explodieren die Entwicklungskosten und gefährden den Unternehmenserfolg. Software-Modernisierung bietet einen Ausweg aus diesem Dilemma.
Die Gründe für eine Software-Modernisierung
Der Hauptgrund für die Modernisierung von Legacy-Software ist deren unzureichende Funktionalität. Die Software unterstützt Geschäftsprozesse nur noch unzureichend, lässt sich aber auch nicht mehr mit vertretbarem Aufwand an die sich ändernden Geschäftsprozesse anpassen.
Mangelnde Änder- und Erweiterbarkeit führt zum Hauptgrund für die Software-Modernisierung: Kosten. Die Kosten für die Anpassung der Anwendungen an sich ändernde Geschäftsprozesse sind über die Jahre so groß geworden, dass das die betriebswirtschaftliche Sinnhaftigkeit der Weiterentwicklung dieser Software in Frage gestellt werden muss.
Während unzureichende Funktionalität der am häufigsten genannte Grund für eine Software-Modernisierung sind (Quelle: Studie Software-Modernisierung 2022), gibt es eine Reihe weiterer Gründe die Software zu modernisieren: Sicherheit, Rechtliche Vorschriften, Performance, Robustheit, Skalierbarkeit oder Benutzbarkeit. Einige dieser Baustellen lassen sich durch dedizierte Einzelmaßnahmen beseitigen. So lassen sich z.B. Sicherheitsprobleme gezielt durch die Aktualisierung von Bibliotheken beheben. Andere Probleme, wie mangelnde Skalierbarkeit oder schlechte Performance erfordernd tiefgreifendere Modernisierungsmaßnahmen.
Möglichkeiten der Software-Modernisierung
Software-Modernisierung umfasst zwei grundsätzliche Varianten der Erneuerung: Neuentwicklung und Sanierung. Bei der Neuentwicklung werden die betroffenen Anwendungen von Grund auf neu entwickelt. Die existierende Legacy-Anwendung wird parallel betrieben. Eine Sanierung hingegen verfolgt die iterative Modernisierung des Systems, indem einzelne Module oder Services Schritt für Schritt modernisiert werden. Dies kann von einfachen Technologie-Updates, wie dem Austausch von Frameworks und Bibliotheken, bis hin zur kompletten Remodularisierung bestehender Komponenten reichen. Die Entscheidung für eine der beiden Modernisierungsstrategien hängt von einer Reihe von Faktoren ab.
Neuentwicklung vs. Sanierung
Vorteile einer Neuentwicklung
Motiviertes Personal
Einsatz modernster Technologien
Geschäftsprozesse des Unternehmens können neu gedacht werden
Nachteile einer Neuentwicklung
Parallelbetrieb erforderlich
Mehr Personal erforderlich
höheres Risiko
höhere Kosten
Big bang Ablösung
neue Features müssen doppelt implementiert werden
Mehrwert erst nach langer Zeit
Vorteile einer Sanierung
geringeres Risiko
geringere Kosten
System bleibt immer am Laufen
neue Features müssen nur einmal implementiert werden
kontinuierlicher Mehrwert durch schrittweises modernisieren
Nachteile einer Sanierung
hohe Expertise erforderlich
weniger Raum, um Geschäftsprozesse von Grund auf neu zu denken
Ablauf einer Software-Modernisierung
Der Ablauf einer Software-Modernisierung variiert von Projekt zu Projekt. Häufig wissen unsere Kunden bereits, was ihr Hauptproblem ist und haben eigene Ideen für dessen Lösung.
Istzustand: Analyse und Bewertung des Bestandssystems
Die Software-Modernisierung startet mit der Analyse des Bestandssystems. Angeleitet durch Qualitätszielebewerten wir für jedes im Kontext ihres Systems relevante Qualitätsziel dessen Bedeutung und Erfüllungsgrad.
Im Fokus stehen wichtige Qualitätsziele mit geringer Bewertung. So wird das Qualitätsziel Funktionalität häufig schlecht bewertet und soll in der Zielversion einen deutlich besseren Wert erhalten. Hingegen ist Skalierbarkeitim obigen Beispiel nicht sonderlich wichtig und gerät aus dem Fokus der Zielvision.
Strategie: Antworten finden
In der Strategiephase einer Software-Modernisierung erarbeiten wir Antworten für das Erreichen wichtiger aber zu niedrig bewerteter Qualitätsziele. So müssen wir Antworten auf die Frage liefern, warum die Software die aktuellen Geschäftsprozesse nur noch unzureichend abbildet.
Antworten basieren auf Ursachen. Ein Beispiel: Mittels Interviews, Code- und Architekturanalyse begeben wir uns auf die Suche nach den Ursachen für das schlechte Abschneiden des Qualitätsziels Funktionalität. Es stellt sich heraus, dass die Software schlecht modularisiert ist und der Domänencode nicht sauber vom Infrastrukturcode getrennt ist. In der Folge müssen bei Änderungen und Erweiterungen viele unterschiedliche Code-Stellen angepasst werden. Hinzu kommt die hohe Regressionsanfälligkeit der Software, was zu langen Entwicklungszeiten und hohen Kosten führt. Ergo wird die Software nur noch erweitert, wenn dies absolut erforderlich ist.
Basierend auf den Ursachen erarbeiten wir Strategien für die Verbesserung des betrachteten Qualitätsziels. Für das Ziel Funktionalität könnte dies z.B. die Trennung von Domänen- und Infrastrukturcode durch Einführung einer Hexagonalen Architektur und Verbesserung der Modularisierung durch Einführung von Bounded Contexts sein.
Entscheidung: Neuentwicklung oder Sanierung?
Im Anschluss an die Strategiephase treffen wir die Entscheidung für eine Neuentwicklung oder eine Sanierung. Grundlage für die Entscheidung sind neben den von uns erarbeiteten Antworten die Vor- und Nachteile einer Sanierung bzw. Neuentwicklung vor dem Hintergrund ihrer konkreten Situation. Aufgrund des deutlich geringeren Risikos und der geringeren Kosten tendieren wir fast immer zu einer Sanierung. Ausnahmen bilden No Go's, wie auslaufender Herstellersupport oder die Nicht-Verfügbarkeit von Fortran-Entwickler:innen.
Ergebnis: Sanierungs-Backlog
Das Ergebnis der Analyse- und Entscheidungsphase ist ein Sanierungs-Backlog. Das Backlog enthält die nach Geschäftswert priorisierten Aufgaben zur Erreichung der untererfüllten Qualitätsziele. Das Backlog ist Feature-orientiert, d.h. die enthaltenen Aufgaben sind fachlicher Natur. Statt "Einführung einer Hexagonalen Architektur" enthält das Backlog ein neues Feature, das das einzuführende Architekturmuster forciert.
Methoden und Techniken der Software-Modernisierung
Four Key Metrics
CI/CD
VCS
Business Fitness Functions
Architectural Fitness Functions
Software-Review
Strangler Fig-Pattern
Hexagonal Architektur
Domain-driven Design
Fallbeispiele
Wir helfen weiter
Die Modernisierung von Legacy-Software ist komplex, aber fast immer risikoärmer und kostengünstiger als ihre Neuentwicklung. Mit unserem iterativen und inkrementellen Vorgehen machen wir Ihre Software und Ihr Unternehmen wieder Feature- und damit zukunftsfähig.
+49 40 600 90 75 70