Warum Software-Modernisierung?
Legacy-Anwendungen zeichnen sich dadurch aus, dass neue Features gar nicht oder nur noch mit großem Risiko und hohen Kosten umgesetzt werden können. Unternehmen tendieren in diesen Situationen dazu, die Software komplett neu zu entwickeln. Eine Neuentwicklung löst per se nicht alle vorhandenen Probleme und schafft zudem neue, heute noch nicht vorhersehbare Probleme. Zeitpläne und Budgets werden regelmäßig überschritten. Hinzu kommt, dass das Altsystem parallel zur Neuentwicklung weiter betrieben werden muss, was zusätzlich Mitarbeitende bindet.
Software-Modernisierung schlägt den entgegengesetzten Weg ein und minimiert das Kosten- und Zeitrisiko durch ein iteratives Vorgehen. Die Notwendigkeit des Parallelbetriebs zweier Systeme entfällt.
Wie Software-Modernisierung?
Im Kern geht es bei der Software-Modernisierung um das Wiederherstellen von "Feature-Fähigkeit": Features sollen wieder in akzeptabler Zeit und mit angemessenem Budget geändert oder zugefügt werden können. Voraussetzung für das Herstellen von Feature-Fähigkeit ist die Durchführung einer Grundsanierung. Diese schafft die Grundlagen für die Änderbarkeit des Legacy-Systems und umfasst in der Regel mindestens die folgenden Maßnahmen:
Einführung eines Versionskontrollsystems,
Automatisierung des Deployments und
Test-Automatisierung anhand von Smoke- oder Happy Path-Tests.
Steht die Grundsanierung, wird die Feature-Fähigkeit in der nächsten Phase anhand der Entwicklung eines konkreten Features verprobt. Während die Grundsanierung unabhängig von den umzusetzenden Features ist, fokussiert sich die Feature-bezogene Modernisierung explizit auf zu ändernde oder neue Features. Die erforderlichen Schritte hängen maßgeblich von der Altsoftware und den gewünschten Features ab, wie z.B.
Erweiterung der Legacy-Anwendung um eine API, um Zugriff auf die vom neuen Feature benötigten Daten zu bekommen.
Erstellen von Datenbank-Triggern, um Feature-bezogene Datenbanken mit den vom neuen Feature benötigten Daten zu füllen.
Einführung, Umsetzung und Überwachung klarer Modulgrenzen
Trennung von Business- und Infrastruktur-Code
Ähnlich dem Refactoring geht es in dieser Phase darum, das Design des existierenden Systems zu verbessern und Ansatzpunkte für Erweiterungen zu schaffen. Während Refactoring aus kleinen und überschaubaren Code-Anpassungen besteht, ist das Aufräumen einer Sanierung eher mit einem Bagger-Ansatz vergleichbar. Es werden größere Baustellen aufgerissen, die darüber hinaus über längere Zeit bestehen. Während dieser Phase wird die Testautomatisierung weiter ausgebaut.
Nachdem die Legacy-Anwendung Feature-fähig ist, erfolgt die Umsetzung des eigentlichen Features. In der Regel wird dabei versucht, die bestehende Altanwendung so wenig wie möglich zu ändern. Stattdessen werden Schnittstellen geschaffen, die den Austausch von Daten oder das Aufrufen von Funktionen ermöglicht. Darüber hinaus kann auch die Datenbank eine gute Basis für den risikoarmen Austausch von Daten sein.
In Abhängigkeit der umzusetzenden Features können die zweite und dritte Phase inkrementell ausgeführt werden, d.h. nach der Grundsanierung wechseln sich Phasen der Feature-bezogenen Sanierung und der Feature-Entwicklung ab. Auf diese Art und Weise wird Ihre bestehende Altanwendung schrittweise modernisiert und erweitert.
Methoden und Techniken der Software-Modernisierung
VCS
Strangler Pattern
Branch by Abstraction
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 wieder Feature- und damit zukunftsfähig.
+49 40 600 90 75 70
info@codekeepers.de