# Softwarealterung

Die Softwarealterung ist für Software das Pendant zur Materialermüdung. Im Gegensatz zur allgemeinen Meinung unterliegt auch Software einer besonderen Art von Alterung. Sie hat keinen Verschleiß und auch keine Abnutzung, da sie nur aus digitalen Daten besteht, aber sie hat trotzdem nur eine begrenzte Lebenserwartung.
David Parnas hat erstmals 1994 die Alterung von Software untersucht.

## Gründe

Im Laufe der Zeit ändern sich die Gegebenheiten der Softwareumgebung. Es sind neue Techniken, Anforderungen und Formate entstanden, die bei der Entwicklung nicht vollständig bekannt waren oder vorhergesagt werden konnten. Eine mangelnde Anpassung an diese Gegebenheiten kann zu Problemen, Fehlern oder einfach zu einem verringerten Nutzen des Programmes führen, im Extremfall bis zu dem Punkt, dass das Programm nicht mehr lauffähig ist.
Auf der anderen Seite führen gerade diese notwendigen Anpassungen, Fehlerbehebungen, Erweiterungen des Funktionsumfanges oder andere Änderungen oft zu einem unstrukturierten Programm, einem unübersichtlichen Quelltext und zu neuen Fehlern; genau dies sind die Kennzeichen der Alterung von Software.

## Beispiele

Die wohl bekanntesten Beispiele waren das Jahr-2000-Problem, die Einführung der neuen Postleitzahlen und in gewissem Umfang auch die Einführung des Euro.
Im Jahr 2000 stellte sich das Grundsatzproblem, dass viele Programme nur mit zweistelligen Jahreszahlen arbeiteten, hier aber die 00 für 2000 kleiner als die 99 des Vorjahres gewesen wäre, obwohl die Jahreszahl in Wirklichkeit größer war. Viele Programme mussten in diesem Zusammenhang überprüft und angepasst werden, etliche auch durch neue Software abgelöst werden.
Bei der durch die Deutsche Wiedervereinigung ausgelösten Reform des Postleitzahlsystems stellte sich nicht nur das Problem, die vorhandenen Datenbestände aktualisieren zu müssen, sondern auch, dass die neue Postleitzahl mit fünf Stellen eine Stelle länger war als die vorher verwendeten Postleitzahlen. Außerdem musste regelmäßig das erzeugte Schriftgut angepasst werden.
Bei der Einführung des Euro stellte sich die Situation anders dar, da oftmals die Arbeit mit verschiedenen Währungen bereits im Leistungsumfang der Software enthalten war. Änderungsbedarf ergab sich nur in Programmen, die ausschließlich mit einer Währung arbeiteten und während der Übergangsphase Einführung des Euro als Buchgeld bis zum Bargeld überschneidende Berechnungen vornehmen können mussten.
Unter alten Microsoft-Windows-Versionen lag noch das Betriebssystem MS-DOS. Neuere Windows-Versionen sind jedoch fast komplett neu geschrieben worden, um die zugrundeliegende Architektur abzuändern. Solche Neuanfänge lassen sich in vielen Projekten beobachten. Sie resultieren oft daraus, dass der zugrundeliegende Quelltext zu „alt“ ist, um ihn zu überarbeiten und ein kompletter Neustart effizienter scheint.

## Verlängerung der Lebenszeit

Man ist der Softwarealterung jedoch nicht bedingungslos ausgeliefert und kann die Lebensdauer einer Software auch bewusst verlängern. Die heute übliche Software-Entwicklung mit Objektorientierung, die letztlich dazu führt, dass jede Funktion ihr eigenes, in sich abgeschlossenes Modul darstellt, eignet sich hierfür besonders.
Eine andere Möglichkeit ist eine längere Designphase, in der bewusst überlegt wird, welche Funktionen die Software haben wird oder welche Möglichkeiten später noch genutzt werden können. Spätere Änderungen können dann gut eingepasst werden, da sie schon vorher eingeplant wurden. In vielen Fällen sind aber derartige Überlegungen kontraproduktiv, da erst später klar wird, welche Funktionen und Möglichkeiten die Software bieten soll. Die Agile Softwareentwicklung bevorzugt daher ein Design, welches sich leicht ändern lässt, gegenüber einem Design, welches die Zukunft bereits vorwegnimmt. Leicht änderbares Design wird durch Vermeidung von technischen Schulden beim Softwaredesign, beispielsweise durch eine Vermeidung von zu komplexem Code und Design, enge Kopplung oder zyklische Abhängigkeiten der Komponenten erreicht.
Auch einzelne Restaurierungsarbeiten können helfen. Es besteht immer die Möglichkeit, neuen Code gerade so einzubauen, dass er funktioniert, oder Teile der Software neu zu entwerfen, um neue Funktionen besser einbetten zu können.

## Abhängigkeit vom Hersteller

Die Alterung der Software führt dazu, dass der Anwender auch auf Änderungen der Software angewiesen ist. Bei proprietärer Software kann diese nur der ursprüngliche Hersteller liefern, der Nutzer ist damit auch nach dem Kauf von diesem abhängig. Bei Open-Source-Software besteht keine zwingende Abhängigkeit von einem bestimmten Hersteller.
Da man durch die Aktualisierungen an den Hersteller gebunden ist, wird die illegale Nutzung von Software erschwert, da man auch einen Weg braucht, um an die Aktualisierungen der Software zu gelangen. Bei Microsoft Windows sind zum Beispiel einige Updates auf registrierte Benutzer beschränkt.

## Quellen

* Harald Gall: Software Wartung und Evolution. 2006, abgerufen am 8. Juni 2007. (Alterung ab S. 14)
* David Lord Parnas: Software Aging. Abgerufen am 14. März 2015.
* Rikard Land: Software Deterioration And Maintainability – A Model Proposal. (PDF; 154 kB) Abgerufen am 9. August 2009.
* Kalyanaraman Vaidyanathan and Kishor S. Trivedi: Extended Classification of Software Faults Based on Aging. (PDF; 31 kB) 2001, archiviert vom Original am 9. Juni 2003; abgerufen am 8. Juni 2007.
* V. Castelli u. a.: Proactive management of software aging. März 2001, archiviert vom Original am 1. November 2004; abgerufen am 8. Juni 2007.