Warum altert Software?

Alterung von Software

D. L. Parnas:

"Programs, like people, get old. We can’t prevent aging, but we can understand its causes, take steps to limit its effects, temporarily reverse some of the damage it has caused, and prepare for the day when the software is no longer viable. ... (We must) lose our preoccupation with the first release and focus on the long term health of our products."

Gemäß Definition ist Software ein immaterielles Gut. Der Begriff der Software-Wartung impliziert in der deutschen Sprache jedoch das Bild von Reparaturen welche notwendig sind, um dieses Gut funktionsfähig zu halten. Wieso muss es aber eine Erhaltung des Softwareprodukts geben, wenn das immaterielle Gut an sich keine materiellen Abnutzungserscheinungen zeigen kann und es sich bei Software im Endeffekt um mathematische Konstrukte handelt welche an sich nicht abgenuetzt werden können?

Nach dem amerikanischen Informatiker David Parnas gibt es vor allem zwei Faktoren die eine "Alterung" von Software verursachen:

Lack of movement

Bei Software zeigt sich ein Paradoxon im Vergleich zu materiellen Gütern. Wenn Software nicht benutzt wird, dann altert sie. Auch wenn Software nur benutzt wird, altert sie. Software welche in den 70ern verwendet wurde, würde heute möglicherweise aus fachlicher Sicht noch ausreichend gut funktionieren - nur niemand würde sie verwenden. Den Grund dafür sieht Parnas in 2 Punkten: den technischen und den fachlichen Anforderungen die immerzu auf das Softwareprodukt einwirken und dessen Anforderungsprofil dadurch ständig geändert wird.

Zu den technischen Anforderungen kann gehören, dass von bestimmter Hardware weg migriert werden muss, dass von Seiten des Betriebssystems geänderte Anforderungen gestellt werden, dass der Support für Bibliotheken oder Frameworks eingestellt wird, und vieles mehr.

Die fachlichen Anforderungen ändern sich - je nach Branche - in unterschiedlicher Geschwindigkeit und Frequenz, aber nur selten gibt es keine Änderungen an den Initialanforderungen. Auch wenn die Anforderungen an ein Produkt noch so genau formuliert wurden, gesetzliche Änderungen, Lücken in der Spezifikation oder neue Anforderungen der Endbenutzer sind nur ein paar Faktoren die ständig ändernde Bedingungen an das Softwareprodukt stellen.

Gibt es in der Entwicklung keine oder nur wenige Ansätze den geänderten Anforderungen gerecht zu werden, gibt es keine Bewegung in dieser Sache, dann weicht die Software immer mehr von den technischen und fachlichen Anforderungen ab und altert somit ohne zutun.

Ignorant Surgery

Software muss also gewartet und erweitert werden um das Lack of Movement zu vermeiden. Dabei kann laut Parnas das Ignorant Surgery Phänomen zum zweiten, davon abgeleiteten, Problem werden das eine Alterung der Software verursacht.

Für Änderungen aufgrund der Wartung oder Erweiterungen müssen die fachliche Logik, die verwendeten Patterns im Code, die Coding Standards und Richtlinien verstanden werden, ansonsten werden Änderungen eingeführt die eine Alterung der Software beschleunigen anstatt diese zu handhaben. Die Gefahr besteht, dass diese Änderungen dann von den Initialautoren ebenfalls nicht mehr verstanden werden und somit das System im Endeffekt schwerer wartbar gemacht wird, obwohl möglicherweise Fehlerbehebung oder Erweiterungen das Ziel waren.

Ignorant Surgery hängt auch sehr oft mit dem Fehlen oder mit der fehlenden Aktualität von Dokumentation zusammen. Sehr oft wird Dokumentation in Projekten vernachlässigt, überhaupt nicht erstellt oder kaum aktualisiert. Dies kann solange gut gehen, solange die Initialautoren der Software verfügbar sind beziehungsweise einen Überblick über die Funktionalität der Software haben. Gehen jedoch das Entwicklerteam oder einzelne Entwickler (Gurus) abhanden, so kann für neues Personal durchaus das Fehlen einer Dokumentation zum Problem werden. Änderungen werden dann gemacht, ohne dass die Logik der Applikation vollends verstanden wird, was zu mehr Fehlern und unentdeckten Restfehlern per Lines of Code (= LOC) führt.

Was nun?

Bedeuteten diese beiden Punkte dass man der Alterung von Software komplett ausgeliefert ist? Die schlechte Nachricht ist, ja, zu einem gewissen Grad ist man der Alterung von Software ausgeliefert. Die gute Nachricht ist jedoch, dass eine Alterung unter der Einführung eines strategischen Wartungsplans, davon abgeleiteten Wartungs- und Erweiterungsprozessen, einer Aufbauorganisation mit definierten Zuständigkeiten, Dokumentation und den passenden Vorgehensmodellen und Tools, geordnet(er) verlaufen kann, was durchaus die Lebensdauer einer Software verlängert.

Literatur

KONTAKTIEREN SIE UNS

Sie sind interessiert an einem unverbindlichen Gespräch oder Austausch via E-Mail?