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.“[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.
Arten
Es wurde ursprünglich zwischen korrektiver, perfektionierender und adaptiver Wartung unterschieden.[3][4][1] Mit ISO/IEC/IEEE 14764 wurde als vierter Bestandteil noch korrektive Wartung von präventiver Wartung unterschieden:[5]
- korrektive Wartung: die Beseitigung von Fehlern, die beim Anwender in Erscheinung getreten sind
- präventive Wartung: Behebung von Fehlern, die bekannt, aber beim Anwender noch nicht in Erscheinung getreten sind
- 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.
- 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.
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 %.[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] Gartner Inc. rechnet damit, dass die Wartung jährlich 15 bis 25 % der gesamten IT Kosten ausmacht.[9]
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.[10]
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).
Siehe auch
Literatur
- 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
Einzelnachweise
- ↑ a b 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]).
- ↑ ISO/IEC 12207
- ↑ 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.): "The purpose of the Maintenance process is to sustain the capability of the system to provide a service. This process monitors the system's capability to deliver services, records incidents for analysis, takes corrective, adaptive, perfective and preventive actions and confirms restored capability. Corrective maintenance = modification of a software product performed after delivery to correct discovered problems; preventive maintenance = modification of a software product after delivery to correct latent faults in the software product before they occur in the live system; perfective maintenance = modification of a software product to provide enhancements for users, improvements of information for users, and recording to improve software performance, maintainability or other software attributes; adaptive maintenance = modification of a software product, performed after delivery, to keep a software product usable in a changed or changing environment"
- ↑ 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).
- ↑ Harry M. Sneed: A Cost Model for Software Maintenance & Evolution. In: IEEE (Hrsg.): 20th IEEE International Conference on Software Maintenance (ICSM’04). 2004, ISBN 0-7695-2213-0, ISSN 1063-6773, S. 264–273, doi:10.1109/ICSM.2004.1357770 (englisch, 13 S.).
- ↑ Gartner, "Top Five Recommendations to Reduce Your Network Equipment Support and Maintenance Costs," Caio Misticone, November 2012
- ↑ Capers Jones: "The economics of software maintenance in the twenty-first century", 14. Februar 2006