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.“[1] 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.“[2]. 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.
Es wurde ursprünglich zwischen korrektiver, perfektionierender und adaptiver Wartung unterschieden.[3][1] 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:[4]
- 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.[5]
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 %.[6] Dies entspricht den Vorhersagen von Lehman in seinen Gesetzen der Softwareevolution 1980.[7]
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.[8] 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.[9] Gartner Inc. rechnet damit, dass die Wartung jährlich 15 bis 25 % der gesamten IT Kosten ausmacht.[10]
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.[11]
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).
- Ch. Bommer, M. Spindler, V. Barr: Softwarewartung – Grundlagen, Management und Wartungstechniken, dpunkt.verlag, Heidelberg 2008, ISBN 3-89864-482-0
- Harry Sneed, M. Hasitschka, M.T. Teichmann: Software-Produktmanagement: Wartung und Weiterentwicklung bestehender Anwendungssysteme, dpunkt.verlag, Heidelberg 2005, ISBN 3-89864-274-7
- A. April, S3m-Model to Evaluate and Improve the Quality of Software Maintenance Process, Shaker Verlag, 2005, ISBN 3-8322-4592-8
- M.A. Curth, M.L. Giebel: Management der Software-Wartung, Vieweg+Teubner, Wiesbaden 1989, ISBN 3-519-02492-6
Institute of Electrical and Electronics Engineers, Inc (Hrsg.): IEEE Standard Computer Dictionary. IEEE Std. 610. New York 1990, ISBN 1-55937-079-3 (englisch, 217 S.): “The process of modifying a software system or component after delivery to correct faults, improve performance or other attributes, or adapt to a changed environment. Syn: software maintenance. See also: adaptive maintenance; corrective maintenance; perfective maintenance. [610.12]” Definition gemäß §6 Absatz 2 KONSENS-Gesetz
Burt E. Swanson: The dimensions of maintenance. In: Proceedings of the 2nd international conference on Software engineering. Portal.acm.org, San Francisco 1976, S. 492 — 497, doi:10.1145/359511.359522 (englisch, acm.org [abgerufen am 12. März 2021]). International Organization for Standardization (Hrsg.): ISO/IEC/IEEE 14764 Software engineering - Software life cycle processes - Maintenance. 2022, 8.2 Types of maintenance, S. 21 (englisch, 39 S.): "Corrective maintenance refers to changes necessitated by actual errors in a software product. If the software product does not meet its requirements corrective maintenance is performed. Emergency maintenance is an unscheduled fix performed to temporarily keep a system operational pending corrective maintenance. Preventive maintenance refers to the changes necessitated by detecting potential errors in a software product. Adaptive, additive and perfective maintenance refers to changes to a software product. These changes are those that were not in the specifications or the released software. Adaptive changes are those changes necessary to accommodate a changing environment. Adaptive changes include changes to implement new system interface requirements, new system requirements, or new hardware requirements. Additive changes are those where little if any change is made to the existing software. Perfective changes improve the software product's performance or maintainability. A perfective change can entail providing new functionality improvements for users or reverse engineering to create documentable functionality improvements."
International Organization for Standardization (Hrsg.): ISO/IEC/IEEE 14764 Software engineering - Software life cycle processes - Maintenance. 2022, 3.1.7 enhancement, S. 3 (englisch, 39 S.): "enhancement - software change that addresses and implements a new requirement. There are three types of software enhancements: adaptive, perfective and additive. An enhancement is not a software correction."
Macario Polo, Mario Piattini, Francisco Ruiz: A Methodology for Software Maintenance. In: Universidad de Castilla (Hrsg.): Advances in Software Maintenance Management. Technologies and Solutions. Idea Group Publishing, LaMancha 2003, ISBN 1-59140-047-3, Kap. 9, S. 228–229 (englisch, eingeschränkte Vorschau in der Google-Buchsuche). M.M. Lehman: Programs, Life Cycles, and Laws of Software Evolution. In: Proceedings of the IEEE 68. 1980, S. 1060–1076 (englisch).
Jochen Schneider: Handbuch EDV-Recht. IT-Recht mit IT-Vertragsrecht, Datenschutz, Rechtsschutz und E-Business. 5. Auflage. Verlag Dr. Otto Schmidt KG, Köln 2017, ISBN 978-3-504-56094-2, Softwarepflegeverträge - Allgemeines, S. 2524 (3312 S.): „Die Pflichten bzw. Leistungen, die der Anbieter i.R.d. Pflege erbringt, sind heterogen und Hersteller-spezifisch […] Andererseits ist der Faktor zur Berechnung des Pauschalpreises der Pflege relativ einheitlich, nämlich etwa 15 bis 23% des Lizenzbetrags bei Einmalvergütung pro Jahr.“ Gartner, "Top Five Recommendations to Reduce Your Network Equipment Support and Maintenance Costs," Caio Misticone, November 2012