Jeder kennt das Zitat „Wer zu spät kommt, den bestraft das Leben“. Gemeint ist damit, den richtigen Zeitpunkt des Handelns zu finden. Bereits im Blogbeitrag über die Querulanten im eigenen Team haben wir über die Notwendigkeit des frühen Handelns in Bezug auf Tests gesprochen.
„Testende sollten frühzeitig in den Prozess eingebunden werden, denn der Test beginnt nicht erst am Ende der Softwareentwicklung, sondern bereits in deren frühen Phasen.“
Bevor wir uns mit dem Zeitpunkt beschäftigen, zu dem Testende tätig werden sollten, werfen wir zunächst einen Blick auf potenzielle Fehlerquellen.
Wo entstehen Fehler?
Betrachtet man den Softwareentwicklungszyklus, beginnt dieser beim auftraggebenden Unternehmen, das Anforderungen an die Software stellt. Diese Anforderungen werden während des Requirements Engineering im Rahmen des Anforderungsmanagements aufgenommen und für die Entwicklung und den Test dokumentiert.
Hier lauern bereits die ersten potenziellen Fehlerquellen:
Die Folge dieser Fehler ist eine fehlerhafte oder unvollständige Spezifikation.
Im weiteren Prozess werden die in der Spezifikation beschriebenen Anforderungen durch die Entwicklung in Software umgesetzt. Hierbei treten die nächsten möglichen Fehlerquellen auf.
Die Folge dieser Fehler ist eine fehlerhafte Software.
Die Aufgabe des Test- und Qualitätsmanagements besteht darin, die handelnden Personen aus den Bereichen Anforderungsmanagement, Requirements Engineering und Entwicklung bei ihrer Arbeit zu unterstützen und die entstandenen Artefakte (Spezifikationen und Software) Prüfungen zu unterziehen. Es kommen die unterschiedlichen Qualitätssicherungsmassnahmen (konstruktive und analytische Massnahmen) zum Einsatz.
Die Qualitätssicherung trifft somit vorbeugende und prüfende Massnahmen, um
Warum ist ein frühes Handeln notwendig, wenn man die Fehlerquellen kennt?
Fehlerkosten: Die 10er Regel („Rule of ten“)
Der römischer Dichter Publius Ovidius Naso [43 v. Chr. – 17. n. Chr.] sagte einst „Principiis obsta! – Wehret den Anfängen!“. Gemeint ist damit, dass durch frühzeitiges Handeln ein grösserer Schaden abgewendet werden kann. Was damals galt, gilt auch heute und erst recht in der Softwareentwicklung.
Betrachtet man die Phasen der Softwareentwicklung, so gibt es grob die nachfolgenden sechs Phasen:
In jeder Phase sind unterschiedliche Personen beteiligt: Anforderer:innen über Requirements Engineers, Entwickler:innen und Tester:innen bis zum Betriebsbereich der Kunden.
Jede dieser Personen kann in der jeweiligen Phase, in der sie tätig ist, Fehler machen.
Wird der Fehler in einer frühen Phase entdeckt, ist der Aufwand zu dessen Behebung geringer, als wenn er in einer späten Phase entdeckt wird.
Konkret bedeutet das: Die Kosten für die Beseitigung von nicht entdeckten Fehlern steigen mit jeder Phase ca. um den Faktor 10 an [„Rule of ten“].
Principiis obsta!
Das liegt darin begründet, dass bei der Behebung des Fehlers ggf. alle Phasen erneut durchlaufen werden müssen (Anpassung der Spezifikation – Entwicklung – Test – Auslieferung …).
Per Definition wird in den frühen Phasen von Fehlerverhütung und in den späten Phasen von Fehlerentdeckung gesprochen.
Hier setzt das Test- und Qualitätsmanagement an: Primäres Ziel ist die Fehlerverhütung, da 70 % aller Produktmängel ihre Ursachen in den frühen Phasen der Planung und Entwicklung haben.
Um diese Aufgaben wahrzunehmen, stehen der Qualitätssicherung diverse Massnahmen zur Verfügung. Jede einzelne Massnahme kostet Geld und Zeit. ABER: Geld und Zeit sind immer ein kostbares Gut, denn es gibt Lieferverpflichtungen und Budgetvorgaben, die eingehalten werden müssen.
Grundsätzlich gilt: Mit steigendem Qualitätsgrad nehmen die Fehlerkosten ab, im Gegenzug die Prüfkosten zu.
Bei der Qualitätssicherung wird ein Kostenoptimum angestrebt. Dieses liegt im Schnittpunkt der Kurven für die Fehlerkosten (Beseitigung) und der Prüfkosten (Qualitätssicherung).
Die Aufgabe der Qualitätssicherung besteht darin, die Massnahmen auf ein Kostenoptimum auszurichten. Nicht immer trifft das Sprichwort „Viel hilft viel“ zu.
Es gilt das „Richtige“ zum „richtigen Zeitpunkt“ im „richtigen Masse“ durchzuführen. Deshalb ist es bspw. essenziell, dass Testende bereits in frühen Phasen die Spezifikation prüfen, um zu vermeiden, dass Fehler bis zur Entwicklung oder zum Kunden gelangen, um gemäss der „Rule of ten“ die Prüfkosten geringzuhalten. Denn jeder Fehler, der frühzeitig gefunden wird, ist günstiger in der Behebung als in den späten Phasen. Da nicht alle Fehler in den frühen Phasen gefunden werden können, ist es wichtig, die Qualitätssicherung als einen Prozess zu verstehen, der die Dauer der gesamten Softwareentwicklung begleitet.
Am Ende bleibt die Frage: „Wenn das Optimum der Qualitätsgesamtkosten erreicht wird, ist dann die Software fehlerfrei?“ Dieser Fragestellung werden wir uns in dem kommenden Blog „Fehlerfreie Software – Ist das möglich?“ widmen.
Sie möchten mehr darüber erfahren, was unsere Software für Versicherer leisten kann? Dann wenden Sie sich gerne an unseren Experten Karsten Schmidt, Head of Business Development.