Unter Softwarewartung werden all jene Tätigkeiten verstanden, die nach der Einführung eines Softwaresystems dessen Verfügbarkeit und Nutzbarkeit sicherstellen oder die Lebensdauer der Software verlängern. Neben der Fehlerbehebung gehören die Funktionserhaltung und die Funktionserweiterung ebenso dazu wie perfektionierende Maßnahmen (z. B. Performanceverbesserung).
In der Umgangssprache wird unter Wartung die Reinigung, die Pflege, die laufende Instandhaltung (Reparaturen) und die vorbeugende Instandhaltung (Verschleißvorbeugung) von Geräten und Maschinen verstanden. Die Auffassung von Wartung im Sinn des Austausches alter, abgenutzter Teile gilt jedoch nicht für Software. Hier besteht die Wartung in der Beseitigung von Fehlern und in der Anpassung an Änderungen der Umwelt oder an neue Benutzeranforderungen.
Unter Softwarewartung werden demnach all jene Tätigkeiten verstanden, die nach der Einführung eines Softwaresystems dessen Verfügbarkeit und Nutzbarkeit sicherstellen oder die Lebensdauer der Software verlängern. Man rechnet den gesamten Aufwand dazu, der nach der Übergabe oder Einführung der Software auftritt. Zeit- und Kostenaspekte führen allerdings dazu, den Aufwand eines Wartungsprozesses gering zu halten. Folglich kann es dazu kommen, dass Änderungsanforderungen nur teilweise umgesetzt werden und weitere Fehler entstehen, die wiederum Folgen auf die Wartbarkeit haben können [vgl. Riebisch und Bode 2009].
In den meisten heute bekannten Definitionen und Definitionsversuchen werden sowohl die Funktionserhaltung als auch die Funktionserweiterung angesprochen. In der Literatur wurde ein Wartungverständnis, das sowohl Erweiterungen als auch Fehlerreparaturen miteinschließt, allerdings mehrfach kritisiert. Aus diesem Grund wird ein differenziertes Verständnis für Softwarewartung vorgeschlagen, bei dem insgesamt fünf Wartungskategorien unterschieden werden [vgl. Lehner 1991]:
-
Korrigierende Wartung, bei der es sich um die eigentliche Notfallwartung handelt, d. h. um die Korrekturen zunächst unerkannter Fehler, die erst beim Einsatz der Software auftreten.
-
Anpassungswartung, d. h. die Adaption der Software an eine veränderte Umwelt wie z. B. Betriebssystemänderungen, neue Hardware, geänderte gesetzliche Bestimmungen oder Änderungen von Standards..
-
Perfektionierende Wartung, d. h. eine Verbesserung der Leistungen im Sinne einer Performanceverbesserung, aber auch die Restrukturierung des Systems mit dem Ziel, den zukünftigen Wartungsaufwand zu reduzieren.
-
Funktionserweiterung; diese umfasst den Einbau zusätzlicher Funktionen, die ursprünglich nicht vorgesehen waren, sowie die Integration mit benachbarten, neu hinzugekommenen oder geänderten Systemen.
-
Unterstützung und Betreuung; damit sind Schulungsmaßnahmen für Benutzer, Hilfestellung bei Bedienungsproblemen, Klärung von Fehlersituationen, Performance-messungen, Koordination der Wartungsaktivitäten u. ä. gemeint.
Die Ursachen der Wartung (z. B. Softwarefehler, gesetzliche Änderungen) und die Einflussfaktoren auf den Wartungsaufwand (z. B. Softwarequalität) stehen in einem engen wechselseitigen Zusammenhang. Eine Differenzierung empfiehlt sich deswegen, weil die Ursachen zwar den unmittelbaren Anlass für die Wartungsaktivitäten liefern, der tatsächlich erforderliche Wartungsaufwand jedoch von weiteren Einflussfaktoren wie Dokumentation, Strukturierung oder Komplexität der Software beeinflusst wird.
Eine wichtige Kennzahl in Unternehmen ist auch das Verhältnis des Wartungsaufwandes zur Neuentwicklung von Software. Dieses Verhältnis wird oft als Ausdruck für das Innovationsverhalten eines Unternehmens gewertet. Hierzu finden sich in der Literatur unterschiedliche und zum Teil auch widersprüchliche Angaben. Der durchschnittliche Wartungsanteil wird oft zwischen 20 und 30 % beziffert. Es gibt allerdings die Vermutung, dass de facto ein höherer Wartungsanteil vorliegt. Gründe könnten in einem ungenauen Wartungsbegriff und in ungenauen Daten über Wartungsaktivitäten liegen. Die punktuelle Betrachtung, die solchen Prozentwerten zugrunde liegt, vermittelt aber ohnehin ein verzerrtes Bild. Die in der Literatur ebenfalls verbreitete Meinung, dass der Wartungsanteil gegenüber der Neuentwicklung immer mehr zunimmt, lässt sich bei genaueren Analysen meist nicht nachweisen. Wesentlich mehr als die Wartung selbst dürften die verfügbare Personalkapazität, die Personalplanung, sowie die Abgrenzung zwischen Neuentwicklung und Wartung zur Erklärung des Wartungsaufwands beitragen. Es handelt sich also nicht um eine beobachtbare Gesetzmäßigkeit, sondern um unternehmensspezifische Gegebenheiten. Empirische Untersuchungen zeigten, dass das Verhältnis zwischen Wartung und Neuentwicklung weder stabil noch periodisch gleich bleibend ist [Lehner 1991].
Studien, die sich mit dem Thema Software-Wartung befasst haben, ergaben, dass Wartungsmaßnahmen im Vergleich zu Software-Neuentwicklungen einen höheren Anteil des IT-Budgets beanspruchen. Ein hoher Teil der Wartungskosten fällt dabei für die Anpassung des Systems an neue Anforderungen oder geänderte Rahmenbedingungen in der Umwelt an. Die tatsächliche Verteilung variiert abhängig vom jeweiligen Unternehmen und der jeweiligen Anwendung [vgl. Sommerville 2011]. Abbildung 1 verdeutlicht den Anteil der Kosten, die auf einzelne Wartungsaktivitäten entfallen.
Abbildung 1: Kostenanteil für Wartungsaktivitäten (In Anlehnung an Sommerville 2011, S. 244)
Erweiterungen und Anpassungen im Funktionsumfang eines Systems verursachen demnach weitaus höhere Kosten als z. B. die Fehlerbehebung. Mögliche Ursachen für diese Verteilung können mit dem Aufwand für das Verstehen von Änderungswünschen und mit der Analyse der Änderungsauswirkungen begründet werden [vgl. Sommerville 2011, S. 244]. Eine Folge davon ist, dass in den meisten Fällen das Hinzufügen neuer Funktionen während des Systembetriebs kostenintensiver ist als wenn sie bereits im Verlauf der Entwicklung mit eingebaut werden.
Die Höhe des Wartungsaufwandes lässt nicht unmittelbar Schlüsse auf die damit erzielte Wirkung zu. Die Wirkung kann erst nachträglich durch Beobachtung der veränderten Leistungsfähigkeit von unterstützten Anwendungen ermittelt werden. Dies bedeutet, dass die Beurteilung des Wartungsaufwands letztlich an den Unternehmenszielen und der spezifischen Unternehmenssituation zu erfolgen hat. Die Wartung von Software wird daher im Unternehmenskontext heute nicht nur als softwaretechnische Aufgabe, sondern auch als Managementaufgabe verstanden.
Literatur
Bommer, Ch. et al.: Softwarewartung – Grundlagen, Management und Wartungstechniken. Heidelberg 2008.
Lehner, F.: Softwarewartung. Management, Organisation und methodische Unterstützung. München 1991.
Lehner, F.: Softwarewartung und Reengineering als Kernprobleme der Informatik. In: Huber-Wäschle, F., Schauer, H., Widmayer, P. (Hrsg.): GISI 95. Herausforderungen eines globalen Informationsverbundes für die Informatik. Proceedings zur Jahrestagung der Gesellschaft für Informatik 1995. Berlin et al. 1995, 552-561.
Mens, T.; Demeyer, S. (Hrsg.), Software Evolution, Springer-Verlag, 2008.
Riebisch, Matthias; Bode, Stephan: Software-Evolvability. In Informatik-Spektrum 32(4), 2009, 339-343.
Sneed, H. et al.: Software-Produktmanagement: Wartung und Weiterentwicklung bestehender Anwendungssysteme, Heidelberg 2005.
Sommerville, I.:Software-Engineering. Boston, Mass. ; Munich [u.a.], 2011, 9. Auflage.