Wieviele Bugs darf eine Software haben? (Teil 1 - Fehlerdichte)

"Fehlerfreie Software gibt es nicht" - dieser Ausspruch ist zwar nicht korrekt1, üblicherweise aber verlangt der Stand der Technik (da er zielgerichtet und somit wirtschaftlich sein muss) keine Fehlerfreiheit bei Software. Aber ist es deshalb ok, wenn eine Software beliebig viele Fehler enthält?

Ab wievielen Fehlern gilt eine Software als mangelhaft bzw. nicht einsatzbereit?

Die Antwort auf diese Frage lässt sich an Hand der sogenannten Fehlerdichte (en. defect-density) klären: In der Informatik bezeichnet die Fehlerdichte die Anzahl an Fehlern pro 1.000 Zeilen Code. Die angestrebte Fehlerdichte ist idealerweise vertraglich festgelegt oder zumindest während der Analysephase mit dem Auftraggeber definiert worden. Wenn nicht, gilt der Stand der Technik, der diesbezüglich durch die Fachliteratur klar definiert ist:2

  • Unbrauchbar - also nicht einmal für Previews, Teststellungen oder user-acceptance-tests verwendbar - ist eine Software bei einer Fehlerdichte > 10
  • Produktionsreif - also der früheste mögliche Zeitpunkt um in Produktivbetrieb gehen zu können - ist eine Software bei einer Fehlerdichte von
    • < 2 bei "normaler" Software (auf die die nächsten Punkte nicht zutrifft)
    • < 1 bei sicherer Software - also z.B. Software die schützenswerte Daten gemäß DSGVO enthält
    • < 0,5 bei Software, wo Fehler Menschenleben kosten könnten
  • Stabil - also das was man von Softwareprodukten, Standardsoftware oder COTS Software erwartet - ab einer Fehlerdichte < 0,5 (davor gilt Software noch als "reifend")

Fazit: Wenn man bei einer Software ihre Größe (in Codezeilen) und Anzahl an Fehlern kennt, kann man ihre Fehlerdichte leicht errechnen. Die Fehlerdichte wiederum lässt darauf schließen, ob die Software hinsichtlich ihrer Fehleranzahl den Anforderungen bzw. dem Stand der Technik entspricht.

Es stellt sich nun die Frage, wie man die Anzahl an Fehlern in einer Software errechnen kann, ohne dafür erst alle Fehler finden zu müssen. Diese Frage wird im Teil 2 - Anzahl Fehler abschätzen geklärt.

___

1. Mittels formaler Spezifikation und Verifikation ist 100% Fehlerfreiheit möglich und beweisbar - allerdings nur zu exorbitant hohen Kosten und auch nur für relativ kleine Software möglich 

2. siehe z.B. Linda M. Laird, M. Carol Brennan: "Software Measurement and Estimation: A Practical Approach", S. 135, Frank Witte: "Testmanagement und Softwaretest", S. 288, Capers Jones: "Programming Productivity", S. 268 

Kommentare

CC BY-NC-SA 3.0 AT Sebastian Dietrich, e-movimento