Software-Modernisierung

Reparieren oder neu bauen? Diese Frage stellen sich viele Unternehmen beim Blick auf ihre Legacy-Software. Software-Modernisierung ist ein Qualitätsziel-getriebenes Vorgehen zur Bewertung und Sanierung existierender Software-Systeme.

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. 

Grafik über den Ablauf einer Software-Sanierung

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

  • Branch by Abstraction

  • 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.  

Angewandte Szenarien