Software-Code

Gezielte Evolution statt wahlloser Wucherung

von - 14.05.2018
Evolution Software
Foto: mmatee / Shutterstock.com
Es gibt viele Gründe, Programmen frischen Code einzubauen. Innerhalb von Software ist Evolution wichtig, um natürlich gewachsene Verflechtungen durch eine geplante Architektur zu ersetzen.
Entwickler sind meist stark auf den Code ihrer Anwendung fokussiert. Diesen verstehen sie als ein Ergebnis aus den umzusetzenden Anforderungen und konzentriertem Nachdenken. Tatsächlich unterliegen die Strukturen, die Entwickler schaffen, noch einer Vielzahl anderer Einflüsse, die ihnen unter Umständen aber nicht bewusst sind.
Hendrik Lösch
Hendrik Lösch: Coach und Consultant bei Saxonia Systems sowie Fachautor
Zu Beginn steht immer die eigentliche Entwicklungsphase. Um diese dreht sich für die meisten Programmierer im Grunde genommen ihr Arbeitsleben. Es geht um die Definition von Anforderungen, das Umsetzen des Codes und damit das Sicherstellen von neuen Merkmalen und Funktionen. Gerade in dieser Phase lernt das System hinzu und wächst in seinem Umfang. Die zweite Phase wird allgemein gern als Wartungsphase oder „Maintenance“ bezeichnet. In dieser Zeit ist das System livegeschaltet, wird von einer Vielzahl von Anwendern genutzt und muss nur durch Fehlerkorrekturen gepflegt werden. Ein Wartungsauftrag, der vor allem dazu dient, Fehler zu beheben, die andere Entwickler hinterlassen haben, gilt unter Programmierern jedoch eher als Vorhof zur Hölle denn als Pforte zum Paradies. Dies wirkt sich vor allem deshalb negativ aus, da es die Maintenance-Phase ist, die solides Wissen zu den eingesetzten Technologien, Konzepten und Fachzusammenhängen erfordert, um die Struktur des – spätestens jetzt als „Legacy“ bezeichneten – Systems nicht zu beschädigen. Solche Schädigungen können langfristig dazu führen, dass das System schlechter arbeitet. Es altert durch fehlgeleitete Anpassungen sogar schneller, da es immer weiter von der ursprünglichen Architektur abweicht.

Museumsreif

Dieser Alterungsprozess von Software ist aber nicht nur auf schlechte Programmierung zurückzuführen. Software altert auch durch den technischen Fortschritt. Darüber hinaus führen auch Veränderungen in der Gesetzgebung oder in Unternehmensprozessen dazu, dass ein Software-System nicht mehr aktuell ist. Wenn sich das System nicht mehr an Veränderungen anpassen lässt, wird es irgendwann abgeschaltet.
Diese letzte Phase wird als „Close Down“ bezeichnet. Dieser Close Down muss mit dem Kunden abgesprochen sein und den vertraglichen Rahmenbedingungen entsprechen.
Vor dem Close Down und nach der Maintenance-Phase gibt es zudem noch das „Phase Out“. In dieser Zeit ist das Ende des Systems schon offensichtlich, da nicht mehr aktiv in seine Werterhaltung investiert wird. Eigentlich wird es hier nur noch seinen letzten verbliebenen Nutzern zur Verfügung gestellt, bis sein Betrieb unwirtschaftlich wird.
Stabilisieren, Optimieren, Sanieren
Neben der reinen Programmierung neuer Merkmale begegnen Entwickler weiteren Aufgaben:
Stabilisierung: Die Stabilisierung stand im Wasserfallmodell immer am Ende der eigentlichen Entwicklungsphase, um verbliebene Programmfehler zu entfernen. Der Grund lag darin, dass auch der Software-Test erst am Ende der Entwicklung tatsächlich zum Zuge kam. Dies war insofern schlecht, als sich auf diese Weise Fehler auswirken können, die – solange sie sich noch im Quellcode befinden – zum Ausgangspunkt weiterer Entscheidungen werden können. In den letzten Jahren wird daher die Stabilisierung meist möglichst parallel oder sogar mit höherer Priorität gegenüber der Umsetzung neuer Merkmale und Funktionen betrieben.
Optimierung: Die Optimierung erfolgt meist dann, wenn sie offensichtlich nötig wird. Hierbei gilt die sogenannte Premature Optimization als ein sogenanntes Antimuster. Denn sie bindet Ressourcen an Stellen, an denen sie eventuell nicht gebraucht werden. Zu solchen Optimierungen zählen dann etwa die Verbesserung von Mechanismen für die Sicherheit oder die Steigerung des Tempos von Laufzeiten. Das Ziel von Software-Optimierungen ist dabei natürlich, das Verhalten der produzierten Applika­tion für den Kunden und Anwender möglichst spürbar und nachhaltig zu verbessern.
Sanierung: Die Sanierung ist ein besonderer Fall. Denn hierbei wird vorrangig bestehendes Verhalten durch eine andere Technologie oder Ähnliches ersetzt. So soll das System aktualisiert werden, um das Nutzer­erlebnis zu steigern oder die Software zukunftssicherer zu machen. Die Sanierung ist oft mit erheblichen argumentatorischen Schwierigkeiten verbunden, weil sie keine sichtbare Verbesserung bringt. Im schlimmsten Fall kostet eine Sanierung viel Geld, ohne dass der Nutzer am Ende einen sichtbaren Mehrwert erhält. Die Wertsteigerung lässt sich dann also nur schwer verteidigen.
Verwandte Themen