Software-Modernisierung, Teil 5 Software von Grund auf zukunftsfähig gestalten
Anbieter zum Thema
Bei der Modernisierung von Software stellt sich schnell auch die Frage nach der Nachhaltigkeit: Wie ist es möglich, die neue Software so zu gestalten, dass sie auch möglicherweise unbekannten künftigen Anforderungen gewachsen ist?

Legacy-Software wächst und gedeiht in vielen Unternehmen, bis eines Tages eine Grenze erreicht ist: Dann ist eine oft aufwändige und kostspielige Modernisierung notwendig, bis hin zur vollständigen Neuentwicklung des vorhandenen Produkts. In diesem Fall ist es sinnvoll, vorab einige Überlegungen über die Zukunftsfähigkeit des neuen Produkts anzustellen.
So lässt sich bereits beim Design eine maximale Kompatibilität mit künftigen Anforderungen, Funktionen und kommender Hardware erzielen. Andernfalls wird die Neuentwicklung nämlich auch eines Tages Legacy-Status erreichen – und ein unübersichtliches Flickwerk aus schlecht dokumentierten Ergänzungen, Änderungen und Funktionserweiterungen darstellen. Womit der erste Punkt bereits klar wäre:
Dokumentation der Software-Neuentwicklung sicherstellen
Viele Köche verderben den Brei, auch bei Legacy-Software. Über die Jahre haben mitunter längst ausgeschiedene Mitarbeiter, freie Programmierer, IT-Dienstleister oder Agenturen Hand angelegt. Im Ergebnis steht nicht selten ein handfestes Chaos aus altem Basis-Quellcode und zahlreichen Hacks und Umbauten.
Das Chaos entsteht auch dadurch, dass die Änderungen nicht oder nur schlecht dokumentiert sind, weshalb es wichtig ist, vorab die Dokumentierbarkeit möglicher Software-Änderungen und -Ergänzungen sicherzustellen. Zunächst sollten deshalb Richtlinien bezüglich der Code-Qualität und der Kommentierung im Code selbst erstellt werden, die sich auch praktisch überprüfen lassen.
Das Aufsetzen eines internen, zukunftssicheren (weil quelloffenen) Dokumentations-Systems wie Doxygen kann ebenso dabei helfen, Änderungen nachzuhalten wie eine eine einfache Form der Dokumentation in Text-Dateien. Wichtig ist nur, dass der jeweils Projektverantwortliche diese Dokumentation auch nachhält. Zusätzlich kann eine Benutzerdokumentation in Form eines Wikis aufgesetzt werden, das verhindert, dass „Geheimwissen“ mit pensionierten oder wechselnden Mitarbeitern verschwindet.
Code-Basis maximal portabel gestalten
Generell ist es sinnvoll, die Neuentwicklung oder Modernisierung so zu gestalten, dass die Code-Basis des neuen Softwareprodukts maximal portabel ist. Daher sollte der Quellcode in einer zukunftsfähigen Sprache und natürlich mit der Software geliefert werden; denn niemand kann garantieren, dass das entwickelnde Unternehmen in zehn, zwanzig oder dreißig Jahren noch existiert.
Es ist daher sinnvoll, die Struktur der Entwicklung vom Ende her zu betrachten: Vor welchen Problemen könnte das Unternehmen in Zukunft bei der Verwendung der Software stehen? Faktoren können hier neben schlicht nicht mehr verfügbaren Hardware-Ersatzteilen etwa fehlende Plattformunterstützung oder beschränkte Schnittstellen und APIs darstellen. Der Code sollte also so gestaltet sein, dass er sich leicht für andere Betriebssysteme konvertieren lässt.
Schnittstellen für Erweiterungen schaffen
Irgendwann kommt zwangsläufig jede Software ein wenig in die Jahre und wird von neuen Technologien eingeholt. Daher ist es sinnvoll, diese Entwicklungen von vornherein zu antizipieren. Zwar zeigen die vergangenen 20 Jahre der IT, dass es kaum möglich ist, künftige Entwicklungen vorherzusehen. Dennoch ist sicher, dass nichts sicher ist.
Generell ist davon auszugehen, dass es über die (möglicherweise deutlich verlängerte!) Lebensdauer der neuen Software zu möglicherweise extremen Änderungen kommen wird. Das sind zum Beispiel Änderungen der Hard- und Software-Anforderungen, die Kompatibilität zu Drittanbieter-Produkten, dir Einbindung kommender Technologien oder die Verwendung neuerer Hardware-Plattformen.
Genau deshalb sollten Unternehmen und Entwickler hier von Vornherein dafür sorgen, dass solche Entwicklungen mit nicht allzu großem Aufwand aufgefangen werden können. Ein leistungsfähiges System von Softwareschnittstellen kann dabei helfen. Auch die Schaffung (quell-)offener Strukturen, in denen sich Änderungen schnell und nachvollziehbar einpflegen und dokumentieren lassen, sind sinnvoll.
Sicherheits- und Wartungsaspekte beachten
Da auch die Software-Neuentwicklung, die das Legacy-Produkt ersetzen soll, höchstwahrscheinlich weit länger läuft als ursprünglich vorgesehen, sollten auch Sicherheits- und Wartungsaspekte für diese Zukunft direkt im Design berücksichtigt werden. Mit der Zeit schwindet die Zahl der Mitarbeiter und der Wartung betrauten Firmen.
Um teures „Geheimwissen“, Dokumentationslücken und damit Flickwerk bei sicherheits- oder funktionsrelevanten Updates auch in Zukunft zu vermeiden, ist es daher wichtig, auf Security by Design zu setzen: Die Software muss so entworfen sein, dass sie auch ohne Updates in Zukunft maximale Sicherheitsstandards erfüllen kann. Für funktionale Patches sollte eine gut dokumentierte Schnittstelle entworfen werden.
Skalierbarkeit sicherstellen
Niemand weiß, was die Zukunft bringt. Umso wichtiger ist es daher, bei der Erstellung von voraussichtlich lang im Einsatz befindlicher Software, die Skalierbarkeit zu gewährleisten. Denn auch diese ist ein wichtiger Faktor für die Zukunftssicherheit. Dabei ist zunächst vom Ist-Zustand des Unternehmens auszugehen, allerdings sollten die Perspektiven berücksichtigt werden. Das ist nicht immer ganz einfach – wer hätte beispielsweise Ende der 1990er Jahre gedacht, dass aus dem kleinen Online-Buchhändler Amazon das weltumspannende Logistikunternehmen werden würde, das wir heute kennen?
Das betrifft viele Unternehmen, doch genauso ist auch eine Verkleinerung denkbar: Etwa, wie wenn durch die Corona-Pandemie, plötzlich viele Mitarbeiter ins Home-Office gehen oder das Unternehmen aus wirtschaftlichen Gründen schrumpft. Hier muss ein System im Fall der Fälle die notwendigen Änderungen mittragen oder wenigstens die notwendige Kompatibilität zu dritten Lösungen bieten.
Was kommt nach der Cloud?
Bei der Entwicklung neuer, zukunftssicherer Software sollten technische „Moden“ berücksichtigt, aber nicht überinterpretiert werden. Zwar sind etwa Clouds und Mobile Devices sowie smarte Objekte derzeit ein ausgesprochen interessantes und wichtiges Thema, das uns noch eine Weile erhalten bleiben dürfte – doch niemand kennt die künftigen Entwicklungen.
Erfahrungsgemäß ist das Boom-Thema von heute der Schnee von gestern – und neue Dinge sind wichtig. Ein Beispiel für ein Mode-Thema sind zum Beispiel die in den 10er-Jahren allgegenwärtigen Tablets, die inzwischen immer häufiger von hybriden Laptops verdrängt werden oder sich selbst in diese Richtung entwickelt haben, wie etwa Apples iPad.
Fazit: Es gibt viel zu beachten
Unter dem Strich kommt die Schaffung einer zukunftssicheren Software immer einem Blick in die Zukunft gleich. Neue, unvorhergesehene Technologien poppen oft scheinbar aus dem Nichts auf und sicher geglaubte Kandidaten verschwinden unerwartet genau dorthin, ins Nichts. Trends und Technologien kommen und gehen, weshalb es für Unternehmen, die eine neue Software entwickeln (lassen), sehr schwer ist, diese wirklich zukunftssicher für Dekaden haltbar zu gestalten.
Unter dem Strich sind daher die Wahl einer möglichst zukunftssicheren Programmiersprache, maximale Plattformunabhängigkeit, gute Dokumentation, leistungsfähige Schnittstellen und nicht zuletzt Sicherheit durch Design ein guter Weg, für maximale Zukunftsfähigkeit zu sorgen. Auch wenn sich der Legacy-Status in ein, zwei oder fünf Dekaden wohl kaum vermeiden lässt.
(ID:47974705)