# Softwarewartung

In der Softwaretechnik bezeichnet der Begriff Softwarewartung „die Veränderung eines Softwareprodukts nach dessen Auslieferung, um Fehler zu beheben, Performanz oder andere Attribute zu verbessern oder Anpassungen an die veränderte Umgebung vorzunehmen.“ In Deutschland wird darüber hinaus geregelt: „Die Aufgabe der Wartung umfasst sämtliche Maßnahmen zur Erhaltung der Funktionsfähigkeit der eingesetzten IT-Verfahren und Software. Hierzu gehören auch erforderliche fachliche und technische Anpassungen der IT-Infrastruktur.“. Diese gesetzliche Regelung grenzt hierbei bewusst die Softwarepflege gegenüber der Softwarewartung durch Fokussierung auf den Erhalt der Funktionsfähigkeit ab.
Im weiteren Sinne darf man auch Dienstleistungen und Maßnahmen, die die von der Norm beschriebenen Veränderungen begleiten oder unterstützen, zur Softwarewartung rechnen. Die Softwarewartung dient in der Regel dazu, die Funktionsfähigkeit und Betriebssicherheit von Software zu erhalten.

## Arten

Es wurde ursprünglich zwischen korrektiver, perfektionierender und adaptiver Wartung unterschieden. Diese Unterscheidung ging auch in die Norm ISO/IEC 12207 ein. Mit ISO/IEC/IEEE 14764 (1999) wurde als vierter Bestandteil noch korrektive Wartung von präventiver Wartung unterschieden, mit ISO/IEC/IEEE 14764 (2022) noch Notfallswartung von korrektiver Wartung und additive Wartung von perfektionierender Wartung unterschieden:
* korrektive Wartung: die Beseitigung von Fehlern, die beim Anwender in Erscheinung getreten sind
* Notfallswartung: ungeplante Hotfixes um das System kurzfristig am Laufen zu halten, befristet bis der eigentliche Fehler durch korrektive Wartung beseitigt wurde
* präventive Wartung: Behebung von Fehlern, die bekannt, aber beim Anwender noch nicht in Erscheinung getreten sind
* adaptive Wartung: Anpassung der Software an veränderte oder veränderliche Bedingungen der Umgebung. Darunter fallen beispielsweise Änderungen der gesetzlichen Rahmenbedingungen oder Änderungen der technischen Umgebung bzw. des Standes der Technik. Darunter fallen aber auch neue Interface-, System- oder Hardwareanforderungen.
* additive Wartung: Kleine Ergänzungen
* perfektionierende Wartung: Verbesserung von Attributen wie etwa der Software-Ergonomie, Rechenleistung oder der Wartbarkeit. Darunter fällt insbesondere die Behebung von technischen Schulden durch Reengineering, Refactoring usw.
Verbesserungen, welche neue Anforderungen im Sinne von Änderungsanforderungen betreffen, fallen entweder unter adaptive, perfektionierende oder additive Wartung.

## Wartungsaufwand

In die Wartung fließt traditionell der größte Teil des Aufwandes des Software-Lebenszyklus. Der für die Wartung einzurechnende Aufwand steigt darüber hinaus stetig – rechnete man noch in den 1970er Jahren damit, dass der Wartungsaufwand 35 % bis 60 % des Gesamtaufwandes des Softwarelebenszyklus ausmacht, stieg dieser bis Ende der 1990er Jahre auf 80 % bis 90 %. Dies entspricht den Vorhersagen von Lehman in seinen Gesetzen der Softwareevolution 1980.
Ob und mit wie viel Aufwand Software gewartet werden muss, hängt stark ab vom Einsatz der betreffenden Software (Fehleroffenbarung durch unterschiedliche Anwendungsszenarien; dem Wunsch, bestimmte Attribute zu verbessern) und der Einsatzdauer (änderndes Umfeld). Bei unternehmenskritischer Software leistet die Softwarewartung in der Regel einen erheblichen Beitrag zur Investitionssicherheit, stellt andererseits aber auch einen erheblichen Kostenfaktor dar. Daher sind Wartungsvereinbarungen bei unternehmenskritischer Software häufig zu finden. Je nach vereinbartem Service Level (vgl. Service Level Agreement) liegen die jährlichen Kosten dabei üblicherweise in der Größenordnung von 15 % der Entwicklungskosten der Software. Dementsprechend verrechnen IT-Unternehmen für die Softwarewartung, auch wenn die diesbezüglichen Leistungen sich im Detail unterscheiden, relativ einheitlich zwischen 15 und 23 % des Lizenzbetrags bei Einmalvergütung pro Jahr. Gartner Inc. rechnet damit, dass die Wartung jährlich 15 bis 25 % der gesamten IT Kosten ausmacht.
Der Wartungsaufwand wird darüber hinaus stark von der betreffenden Software selbst (Fehlerdichte, Wartbarkeit) und den mit der Wartung befassten Personen (Erfahrung, Mitarbeit von Spezialisten) und Prozessen beeinflusst. Der Aufwand kann so auf ein Fünffaches anwachsen oder auf ein Fünftel reduziert werden.
Wenn bereits beim Systementwurf das notwendige Augenmerk auf eine angemessene Wartbarkeit gelegt wird, kann unnötig hohen Aufwänden für die Softwarewartung vorgebeugt werden. Bei hohen Wartungsaufwänden wird die Softwarewartung in der Regel von einer fest organisierten Gruppe von Mitarbeitern (Wartungsorganisation) in einem geordneten Wartungsprozess betrieben (vgl. Bommer/Spindler/Barr).