Mit wieviel Aufwand muss man in der Softwarewartung rechnen?

Softwarewartung ist gemäß IEEE1 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". Daraus lassen sich folgende Aufwandsfaktoren ableiten:
- Fehlerbeseitigung: Die Beseitigung von beim Anwender auftretenden (korrektive Wartung) bzw. anderweitig bekannten (präventive Wartung) Fehlern.
→ Kennt man die Anzahl an pro Jahr zu beseitigenden Fehlern und den durchschnittlichen Aufwand für die Fehlerbeseitigung, lässt sich dieser Aufwandsfaktor leicht eruieren. - Verbesserungen von Attributen: Die Verbesserung von Attributen wie Performanz, Usability, Wartbarkeit (perfektionierende Wartung). Dazu gehört beispielsweise sämtliche in der ISO/IEC 25000 Normenreihe beschriebenen Qualitätsanforderungen.
→ Bei einer einsatztauglichen Software müssen diese Attribute alle gemäß Vertrag erfüllt sein. Diesbezüglich ist nur dann Aufwand zu erwarten, wenn sich die Attribute z.B. auf Grund von Mengenänderungen oder neuen Funktionalitäten verschlechtern. - Anpassung an Umgebung: Die Anpassung der Software an veränderte oder veränderliche Bedingungen der Umgebung wie beispielsweise gesetzliche Rahmenbedingungen oder technisches Umfeld (adaptive Wartung). Zum technischen Umfeld gehören nicht nur die Versionen der Betriebssysteme, Laufzeitumgebungen oder Drittsysteme wie Datenbanken, sondern auch der insbesondere in der IT rasch fortschreitende Stand der Technik.
→ Kennt man die Geschwindigkeit der Veränderungen des gesetzlichen und technischen Umfelds, kann man auf den Aufwand der adaptiven Wartung schließen.
ACHTUNG: Wartungsaufwände bestimmen in den meisten Fällen nicht den dafür verlangten Preis und enthalten auch nicht Aufwände für über die Softwarewartung hinausgehende Services wie Support oder Betrieb.
Aufwand korrektiver und präventiver Wartung (Fehlerbeseitigung)
Der Fehlerbeseitigungsaufwand hängt hochgradig von der Anzahl der in der Software vorhandenen Fehler ab. Diese Anzahl lässt sich relativ einfach abschätzen. Diese Fehler zu beheben ist in der Wartungsphase um ein Vielfaches teurer, als wenn sie in früheren Phasen gefunden und behoben oder sogar vermieden worden wären.2 Google rechnet im Schnitt mit $ 1.500,- für die Beseitigungskosten jedes Fehlers.3 Der Aufwand für Kommunikation, Nachstellen, Finden und Beseitigen von Fehlern, sowie Testen und Produktivsetzen der Fehlerbehebungen ist eben nicht unerheblich. Hat man selbst diesbezüglich keine Kennzahlen, kann man leicht basierend auf den Werten von Google, sowie der Komplexität bzw. Wartbarkeit der Software und Leichtgewichtigkeit der Wartungsprozesse selbst einen passenden Kostenfaktor schätzen.
Ein typisches Softwareprojekt hat bei einer, für die Einsatztauglichkeit normaler Software nötigen Fehlerdichte, zum Zeitpunkt der Produktivsetzung max. 2 bugs / 1.000 lines of code (KSLOC). Davon werden üblicherweise auch nicht alle in Produktion gefunden, aber im Schnitt kann man sicherlich mit 0,2 in Produktion gefundenen Fehlern pro Jahr und KSLOC rechnen. Basierend auf den Schätzungen von Google und einer durchschnittlichen Entwicklerproduktivität4 kosten die jährlichen Fehlerbeseitigungskosten somit ca. 1,125% des Softwareentstehungsaufwandes. Das natürlich nur, wenn die Software hinsichtlich ihrer Fehlerdichte dem Stand der Technik entspricht (was selten der Fall ist): Im Schnitt hat kommerzielle Software zum Zeitpunkt ihrer Fertigstellung eine Fehlerdichte von 20 bis 30.5 Dann kann man also durchaus mit 11 bis 17% pro Jahr (neben verständlicherweise unzufriedenen Kunden, Imageschäden und Schadenersatzforderungen) rechnen.
Man erkennt schon jetzt: Fehlerbeseitigung im Rahmen der Softwarewartung kann man sich meist nur dann leisten, wenn die Software zum Zeitpunkt der Produktivsetzung dem Stand der Technik entsprach. Dabei macht die Fehlerbeseitigung nur einen Teil der Softwarewartung aus. Mit wieviel Aufwand man insgesamt bei Einhaltung des Standes der Technik bzw. im nicht so rosigen Industriedurchschnitt rechnen muss, erfährt man im nächsten Blogpost...
1. IEEE 610 Standard Computer Dictionary, ISBN 1-55937-079-3, Seite 127↩
2. siehe z.B. Barry Boehm: "Software Engineering Economics"↩
3. siehe Lynda Gaines: "Cost of fixing vs. preventing bugs"↩
4. siehe Steve McConnell: "Code Complete A Practical Handbook of Software Construction" 2. Auflage. Microsoft Press, 2004, ISBN 978-0-7356-1967-8, S. 514: "10 to 50 of lines of delivered code per person per day (including all non coding overhead)" - hier wird mit dem Mittel von 30 LOC pro PT, 200PT/Jahr bzw. $800 pro PT gerechnet↩
5. siehe W. Humphrey, "The Software Quality Index", Software Quality Professional, 1998/01, Seite 8–18, bzw. Steve McConnell: "Code Complete", ISBN 978-0-7356-1967-8, S. 521↩
Kommentare
Kommentar veröffentlichen
Wenn du auf meinem Blog kommentierst, werden die von dir eingegebenen Formulardaten (und unter Umständen auch weitere personenbezogene Daten, wie z. B. deine IP-Adresse) an Google-Server übermittelt. Mehr Infos dazu findest du in der Datenschutzerklärung von Google (https://policies.google.com/privacy).