Software Aging Ein Erosionswächter für die Software muß her
Als Projektmanager und Software-Entwickler kann man mit der Zeit den Eindruck gewinnen, dass unsere kunstvoll gestaltete Software langsam zerbröckelt – sie erodiert unter unseren Händen und lässt sich immer schwerer ändern. Wie können wir unsere Software vor Erosion schützen?
Anbieter zum Thema
Manchmal kann man den Eindruck gewinnen, dass mit der Zeit an der so kunstvoll gestalteten Software einige Ecken und Kanten abgebröckelt seien. Zu Anfang ist eine Software ihren Aufgaben gewachsen. Ich kenne jedoch keine Software, deren Aufgabenstellung sich mit der Zeit nicht geändert oder ausgeweitet hätte. Die Software muss ständig an neue Kundenwünsche und an eine sich ändernde Umgebung angepasst werden. Zusammen mit der unvermeidlichen Fehlerbehebung fasst man diese Tätigkeit unter den Begriff der Software-Wartung zusammen.
Da kaum jemand anfängt, auf der grünen Wiese Software zu entwickeln, sind wir mehr oder weniger alle Wartungsentwickler. Meistens stehen wir dabei unter Zeitdruck. Unsere Aufgabe ist es, die uns anvertraute Software mit den uns zur Verfügung stehenden Ressourcen zu warten. Gemessen werden wir oft an der Zeitspanne, die wir brauchen, um neue Anforderungen für den Kunden umzusetzen. Dabei kann man auch beobachten, wer an unserer Software nagt: Es sind wir selbst, da nur wir aktiv Änderungen an der Software vornehmen.
Besonders wenn wir neu im Projekt sind und uns per Training-on-the-Job zurechtfinden müssen oder wenn wir, ganz profan, unter Projektdruck stehen. Hier ein wenig, dort ein bisschen. Tag ein, Tag aus. Unbemerkt, aber stetig. Irgendwann fällt auf, dass die Software im Innern erodiert ist. Die Qualität hat gelitten: zuerst die innere Qualität, die außer uns Entwicklern kaum jemand zur Kenntnis nimmt, später auch die äußere Qualität, die uns dann vorgeworfen wird. Dieser Effekt hat viele Namen bekommen: Software Aging, Software Decay, der vielleicht plastischste ist Software-Erosion.
Die Ersosionskräfte wider unsere Software sind vielgestaltig, so wie die Erosion in der Natur von Winderosion bis zum Frostaufbruch reicht: Verstöße gegen die Software-Architektur sind die gröbsten Schnitzer, Stilverstöße im Kleinen betreffen nur einzelne Zeilen im Quellcode.Es gibt per Copy&Paste duplizierte Quelltexte (sogenannte Klone), die wir synchron halten müssen und die zur schieren Größe der Software beitragen. Zyklen in der Abhängigkeit – z.B. zwischen unseren Quelldateien – und tote Teile in der Software sind ebenso beteiligt. Und schließlich degenerieren Teile durch ungebremstes Wachstum und ungezügelte Ad-Hoc-Änderungen.
Ein Erosionswächter für die Software muß her
Aber was können wir gegen uns selbst unternehmen? Wir können versuchen, diszipliniert zu arbeiten und beständig Reviews vorzunehmen. Hand aufs Herz: Wer kann das durchhalten? Sobald Termindruck aufgebaut wird, werden viele gute Vorsätze fallen gelassen, auch wider besseres Wissen. Also brauchen wir Unterstützung, so weit wie möglich automatisiert: Ein Erosionswächter für unsere Software muss her.
Die wichtigste Einsicht ist, dass unsere Software nicht über Nacht zerfällt, sondern einem langsamen Zerfallsprozess unterliegt. Der Zerfall kann auch nicht an einer einzelnen Aktion festgemacht werden. Vielmehr sind es die vielen kleinen Schritte, die uns jeder für sich vermutlich sogar Zeit gespart haben, in Zukunft aber dafür sehr viel mehr Zeit verschlingen werden. Wir haben durch unser Handeln eine Erosions-Hypothek auf unsere Software aufgenommen, die wir teuer zurück zahlen müssen.
(ID:326052)