Die schrittweise Evolution vorhandener Lösungen bietet bei der Software-Modernisierung eine Alternative zum Komplettaustausch. Der IT-Dienstleister Consol vergleicht gängige Verfahren mit ihren Vor- und Nachteilen.
In der IT-Landschaft der meisten Unternehmen findet sich eine Vielzahl von Altsoftware. Sie durch neue Lösungen zu ersetzen, ist oft schwierig und mit Risiken verbunden. Um diese Systeme für künftige Anforderungen fit zu machen, empfiehlt sich daher in den meisten Fällen ein schrittweises Modernisieren. Für eine iterative und inkrementelle Evolution der vorhandenen Softwarearchitektur gibt es mehrere Verfahren. Consol stellt fünf davon auf den Prüfstand: Modularisierung, Extraktion, Abstraktion, Abschnüren sowie Klonen und Löschen.
1. Evolution durch Modularisierung
Bei der Modularisierung einer Software werden zunächst Code-Bestandteile identifiziert, die zu einer gemeinsamen Domäne gehören. Dann werden diese Code-Bestandteile etwa durch Refactoring und Anwendung von Clean-Code-Prinzipien modularisiert. Schließlich wird ein Interface für diese Domäne eingeführt.
Das Identifizieren von Domänen und die Modularisierung sind Voraussetzungen, um die Altsoftware zu zerteilen und gezielt zu modernisieren. Der Nachteil dabei ist, dass die einzelnen Domänen oft eng mit anderen Bestandteilen der Architektur verknüpft sind. Um erfolgreich zu modularisieren, ist deshalb ein gutes Verständnis der Domäne sowie des Codes der Altsoftware erforderlich.
2. Evolution durch Extraktion
Bei der Extraktion werden unabhängige Domänen innerhalb der Altsoftware identifiziert und in ein eigenes System extrahiert. Anschließend wird das System der nun eigenständigen Domäne verbessert, gegebenenfalls auch unter Nutzung der Technik ‚Abstraktion‘, um das System oder Teile davon neu zu entwickeln. Der letzte Schritt umfasst das Verbessern der Altsoftware, die nun weniger Aufgaben hat.
Dieses Vorgehen ist nur möglich, wenn innerhalb der Altsoftware unabhängige Domänen bestehen. Der Nachteil dabei ist, dass bestehender Code wiederverwendet wird. Dadurch können versteckte Abhängigkeiten zwischen dem neuen eigenständigen System und der Altsoftware entstehen.
3. Evolution durch Abstraktion
Bei der Abstraktion definiert der Systemarchitekt in einem ersten Schritt ein externes ideales Interface für die Altsoftware. Die Kommunikation mit der Altsoftware kapselt er dann über eine Fassade oder ein Fassadensystem. Nach dem Umstellen aller Clients auf das neue Interface erfolgt die iterative und inkrementelle Erstellung besserer Software für das Interface. Anschließend wird die Altsoftware schrittweise durch die neue Software ersetzt.
Dieses Vorgehen ist nur dann möglich, wenn sich eine klare Schnittstelle für bestehende Services definieren lässt. Der Nachteil: Orientiert sich das Interface zu sehr an der Altsoftware, werden Fehler möglicherweise nicht korrigiert.
4. Evolution durch Abschnüren
Bei dieser Modernisierungsvariante identifizieren die Programmierer zunächst den „schlechten“ Code-Teil innerhalb der Altsoftware, der ersetzt werden soll. Anschließend wird ein Switch (oder Dispatcher, Proxy, Load Balancer) eingefügt, der auf den schlechten Teil der Altsoftware weiterleitet. Nachdem für den schlechten Teil eine neue Implementierung geschrieben ist, wird die Last vom Switch übergangsweise sowohl auf den schlechten Teil der Altsoftware als auch auf die neue Implementierung weitergeleitet. Schließlich erfolgen eine zunehmende Reduzierung der Last auf dem schlechten Teil der Altsoftware und eine Erhöhung der Last auf der neuen Implementierung. Im Endzustand kommt der schlechte Teil der Altsoftware nicht mehr zum Einsatz.
Voraussetzung für dieses Vorgehen ist, dass sich der schlechte und zu ersetzende Teil der Altsoftware beispielsweise über ein Interface abgrenzen lässt. Der Nachteil dabei ist, dass sich das neue System an der Interaktion der anderen Systeme mit der Altsoftware orientieren muss. Diese anderen Systeme nutzen eventuell nicht dokumentierte Eigenschaften der Altsoftware oder sind abhängig von nicht spezifiziertem Verhalten und etablierten Workarounds.
5. Evolution durch Klonen und Löschen
Beim Klonen und Löschen werden die Anwendergruppen identifiziert und die gesamte Altsoftware für jede Anwendergruppe geklont. In jedem Klon wird alles gelöscht, was die jeweilige Anwendergruppe nicht benötigt. Gegebenenfalls werden Gemeinsamkeiten extrahiert. Besser ist eine Code-Duplizierung, um zu starke Abhängigkeiten zu vermeiden. Schließlich wird die Software für jede Anwendergruppe optimiert.
Voraussetzung für dieses Vorgehen ist ein eigenes (Produkt-) Team pro Klon. Der Nachteil dabei ist, dass die Klone via Datenbank für lange Zeit aneinander gekoppelt sind.
„Modularisierung, Extraktion, Abstraktion, Abschnüren sowie Klonen und Löschen sind vielfach bewährte Techniken, um vorhandene Altsysteme schrittweise in eine zukunftssichere Softwarearchitektur zu transformieren“, erklärt Christoph Ehlers, Technical Lead Software Engineering beim Münchner Münchner IT-Dienstleister Consol. „Wann welche Technik zum Einsatz kommt, hängt immer von den jeweiligen Gegebenheiten und vom Anwendungsfall ab. Eine generelle Empfehlung kann man nicht aussprechen. Es ist immer eine Einzelfallentscheidung zu treffen.“ Jürgen Frisch
Anzeige
Clever digitalisieren – Mit Bordmitteln mehr erreichen
Unter dem Motto „Clever digitalisieren – mit Bordmitteln mehr erreichen!“ bietet die Trovarit bewährte Services und Werkzeuge (IT-Matchmaker®), mit denen Unternehmen
- den Einsatz ihrer vorhandenen Software-Landschaft effizient überprüfen,
- Optimierungspotenziale entdecken,
- eine verlässliche IT-Roadmap erstellen können,
um ihre Prozesse nachhaltig zu optimieren, ohne große Summen zu investieren.
Clever digitalisieren: Jetzt mehr erfahren