Definition „Software Aging“ Was ist Software-Alterung?
Anbieter zum Thema
Software altert nicht wie Hardware, es gibt bei Software keinen mechanischen Verschleiß. Doch obwohl Code in seiner ursprünglichen Form erhalten bleibt, spricht man von einer Softwarealterung.

Alleine der Begriff Softwarealterung scheint zunächst konterintuitiv. Schließlich kann die Software für sich nicht altern, der digital gespeicherte Code bleibt in seiner Form konsistent. Selbst eine Jahrzehnte alte Software würde auf einem lauffähigen System noch funktionieren wie direkt nach Release.
Softwarealterung ist dennoch ein reales Phänomen, das vor allem mit dem Umfeld und den Anforderungen an eine Software zu tun hat. Anders als Code verändern diese sich nämlich ständig.
Das Resultat von Softwarealterung ist dann durchaus vergleichbar mit verschlissenem Material und ermüdeten Konstruktionen: Ausfälle und einer Software oder Abstürze im System häufen sich.
Die Ursachen der Softwarealterung
Eine Software wird mit einer bestimmten Funktionalität auf den Markt gebracht und soll diese Funktionen erfüllen. Eine saubere Programmierung und QA zugrunde legend, ist also bei Release von einer funktionierenden Software auszugehen, die die an sie gestellten Anforderungen auf den für sie gemachten Systemen auch erfüllt.
Veränderten sich Umfeld und Anforderungen nicht, würde es für diese Software auch nicht zu einer Alterung kommen. In der Praxis bedeutet dies allerdings, dass jede Software eine begrenzte Lebensdauer hat. Auch Möglichkeiten, der Softwarealterung entgegenzuwirken, können die Auswirkungen nur eindämmen.
Es gilt: Je mehr am Code einer Software angepasst wird, je mehr Updates und Bugfixes implementiert werden, je mehr Funktionen nachträglich hinzugefügt werden, desto größer ist auch die Chance eines instabilen Codes. In solchen Fällen ist der Austausch einer Softwareversion durch eine neue Version oftmals die bessere Wahl.
Der Y2K-Bug – ein (beinahe) katastrophales Beispiel für Softwarealterung
In der Anfangszeit der Softwareentwicklung war jedes Byte Speicherplatz extrem wichtig und Programmiererinnen und Programmierer sparten Platz ein, wo sie nur konnten. Unter anderem auch bei den Datumsangaben, so dass statt des Jahres 1974 nur das Jahr 74 gespeichert wurde.
Je größer der verfügbare Speicherplatz wurde, desto obsoleter wurde die Idee dieser übertriebenen Sparsamkeit. Doch jegliche Folgesoftware baute auf diesem fragilen Gerüst auf, ohne dass dies je in Frage gestellt wurde.
Lediglich als das Jahr 2000 nahte und Systeme vom Jahr 99 ins Jahr 00 zurück springen würden, setzte die Realisation ein, dass viele Systeme diese „Zeitreise“ nicht verkraften könnten. Das sich verändernde Umfeld und die neuen Anforderungen sorgten so für eine Softwarealterung in einem System, das bis dato fehlerfrei funktioniert hatte. Trotz ausbleibender Katastrophen ist der Y2K-Bug sicherlich das prominenteste Beispiel für Softwarealterung.
Andere Beispiele für Softwarealterung:
- Der Wechsel auf ein neues Betriebssystem, das die Software nicht unterstützt
- Der Umstieg von 32-bit auf eine 64-bit Systemarchitektur
- Der Wegfall von obsolet werdenden Format
Developer Teams sind keineswegs hilflos
So wie sich Menschen gegen das eigene Altern zur Wehr setzen, können Entwickler und Entwicklerinnen auch das Altern von Software mit gewissen Mitteln einschränken. Auch hier lässt sich analog zur Alterung des menschlichen Körpers denken. Wer schon in der Jugend stets Sonnencreme aufträgt, hat bessere Chancen auf junge Haut im Alter.
Sprich: Wenn Developer schon beim Coden an die Lebenszeit der Software denken und die Softwarealterung ins Design einbeziehen, lässt sich diese im Einsatz besser bekämpfen.
Eine Möglichkeit hierfür ist eine leichte Veränderbarkeit der Software, so dass Veränderungen und Anpassungen leichter implementiert werden können.
Komplexer Code oder starke Abhängigkeiten sollten hierbei vermieden werden, was der Schule des agile Development entspricht. Allerdings gibt es auch hier Grenzen. Zwar lässt sich während der Entwicklungsphase viel planen, welche Änderungen nach Release notwendig werden, wirklich ersichtlich wird dies jedoch erst im Nachhinein.
Potenziell lassen viele Probleme in der Softwarealterung sich durch Hotfixes temporär lösen, reduzieren dann wiederum aber die Einfachheit, mit der Code angepasst werden kann.
Darum entscheiden Entwicklerinnen und Entwickler sich in vielen Fällen extremer Softwarealterung eher dazu, eine neue Version komplett neu zu schreiben, um keine „Erbkrankheiten“ überalterten Codes zu übernehmen.
Wirtschaftliche Implikationen von Softwarealterung
Nicht nur aus Sicht der Fachkräfte hat die Softwarealterung Auswirkungen, sondern auch die User müssen sich Gedanken zur Alterung und Kompatibilität ihrer Software machen. So wie Hardware in vielen Fällen eine geplante Obsoleszenz hat, ist Softwarealterung – je nach Perspektive – ein Innovationsmotor oder ein Zwang zu ständigen Updates. Nicht umsonst steigen viele Distributoren auf Abomodelle um.
In großen Unternehmen führt die Softwarealterung zu einem nahezu bizarren Problem. Software kann in Systemen oft gar nicht oder nur sehr schleppend aktualisiert werden, da andere Software in diesem geschlossenen System sonst einer plötzlichen Softwarealterung ausgesetzt wäre.
Softwarealterung lässt sich nicht verhindern
Jede Software hat eine gewisse Lebensdauer. Dies ist schon seit Jahrzehnten klar, bereits 1994 untersuchte David Parnas (Entwickler des Modulkonzepts, das als Grundlage des objektbasierten Programmierens gilt) die Softwarealterung. Agile Entwicklung, frühzeitige Planung und rechtzeitige Anpassungen können der Alterung entgegen wirken, sie jedoch nie ganz verhindern. Dafür verändern sich die digitalen Umfelder, Formate und Systeme, mit denen Software agieren muss, zu schnell.
(ID:48608605)