Wo könnte Ihrer Meinung nach die Heimat der Softwarefehler liegen? Richtig, in der Software. Aber wo genau?
Warum funktionieren Programme nicht richtig? Es ist sehr einfach – sie werden von Menschen erstellt und verwendet. Wenn der Benutzer einen Fehler macht, kann dies zu einem Problem beim Betrieb des Programms führen – es wird falsch verwendet, was bedeutet, dass es sich möglicherweise nicht wie erwartet verhält.
Menschlicher Fehler
Ein Fehler – ist eine menschliche Handlung, die zu einem falschen Ergebnis führt.
Software wird jedoch von Menschen entworfen und erstellt, die auch Fehler machen können (und tun). Dies bedeutet, dass die Software selbst Fehler aufweist. Sie werden Defekte oder Fehler genannt (beide Bezeichnungen sind gleichwertig). Denken Sie daran – Software ist mehr als nur Code.
Softwaredefekte oder Fehler
Defekt, Fehler – ein Mangel einer Komponente oder eines Systems, der zum Ausfall bestimmter Funktionen führen kann. Ein während der Programmausführung entdeckter Defekt kann zum Ausfall einer einzelnen Komponente oder des gesamten Systems führen.
Während der Ausführung des Programmcodes können Fehler auftreten, die bereits während des Schreibens eingebettet wurden: Das Programm kann möglicherweise nicht das tun, was es sollte, oder umgekehrt – tun, was es nicht sollte, und es tritt ein Absturz auf.
Softwarefehler oder Absturz
Fehler oder Absturz ist eine Diskrepanz zwischen dem tatsächlichen Ergebnis des Betriebs einer Komponente oder eines Systems und dem erwarteten Ergebnis.
Ein Fehler des Programms kann ein Indikator für das Vorhandensein eines Defekts sein.
Der Fehler liegt also vor, wenn drei Bedingungen gleichzeitig erfüllt sind:
- Das erwartete Ergebnis ist bekannt;
- das tatsächliche Ergebnis ist bekannt;
- Das tatsächliche Ergebnis weicht vom erwarteten Ergebnis ab.
Es ist wichtig zu verstehen, dass nicht alle Fehler Abstürze verursachen – einige von ihnen können sich in keiner Weise manifestieren und unbemerkt bleiben (oder nur unter ganz bestimmten Umständen auftreten).
Fehler können nicht nur durch Defekte, sondern auch durch Umgebungsbedingungen verursacht werden: Beispielsweise können Strahlung, elektromagnetische Felder oder Verschmutzung auch den Betrieb von Software und Hardware beeinträchtigen.
Insgesamt gibt es mehrere Fehlerquellen und dementsprechend Fehler:
- fehler bei der Spezifikation, dem Entwurf oder der Implementierung des Softwaresystems;
- Systemnutzungsfehler;
- ungünstige Umgebungsbedingungen;
- vorsätzlicher Schaden;
- die möglichen Folgen früherer Fehler, Bedingungen oder vorsätzlicher Handlungen.
Defekte können auf verschiedenen Ebenen auftreten, und die Qualität des Systems hängt direkt davon ab, ob und wann sie korrigiert werden.
Qualität – der Grad, in dem die inhärenten Merkmale die Anforderungen erfüllen.
Softwarequalität ist eine Sammlung von Eigenschaften von Software, die ihre Fähigkeit widerspiegeln, angegebene und implizite Bedürfnisse zu erfüllen. Anforderung ist ein etabliertes Bedürfnis oder eine Erwartung. Normalerweise angenommen oder erforderlich.
Im ersten Fall wurde alles richtig gemacht und wir erhielten ein Produkt, das die Erwartungen des Kunden vollständig erfüllt und die Qualitätskriterien erfüllt.
Im zweiten Fall wurden bereits während der Codierung Fehler gemacht, die zum Auftreten von Defekten im fertigen Produkt führten. Aber auf dieser Ebene sind Fehler ziemlich einfach zu erkennen und zu beheben, da wir die Nichteinhaltung sehen.
Die dritte Option ist schlimmer – hier wurden Fehler in der Entwurfsphase des Systems gemacht. Dies kann nur durch eine gründliche Überprüfung der Spezifikation festgestellt werden. Das Korrigieren solcher Mängel ist ebenfalls nicht einfach – Sie müssen das Produktdesign neu gestalten.
Im vierten Fall wurden die Mängel in der Phase der Anforderungsbildung festgelegt; alle weiteren Entwicklungen und sogar Tests gingen den anfänglich falschen Weg. Während des Tests werden wir keine Fehler finden – das Programm besteht alle Tests, kann jedoch vom Kunden abgelehnt werden. Mehr dazu erfahren Sie in unseren Online-QS-Kursen und Zertifizierungen.
Herkömmlicherweise gibt es fünf Gründe für das Auftreten von Fehlern im Programmcode.
- Mangelnde Teamkommunikation. Oft erreichen Geschäftsanforderungen das Entwicklungsteam einfach nicht. Der Kunde hat ein Verständnis dafür, wie er das fertige Produkt sehen möchte, aber wenn seine Idee den Entwicklern und Testern nicht richtig erklärt wird, ist das Ergebnis möglicherweise nicht wie erwartet. Anforderungen sollten für alle am Softwareentwicklungsprozess Beteiligten verfügbar und verständlich sein.
- Komplexität der Software. Moderne Software besteht aus vielen Komponenten, die zu komplexen Softwaresystemen zusammengefasst sind. Multithread-Anwendungen, Client-Server- und verteilte Architektur, mehrstufige Datenbanken – Programme werden immer schwieriger zu schreiben und zu warten, und je schwieriger die Arbeit von Programmierern wird. Und je schwieriger die Arbeit ist, desto mehr Fehler kann die Person machen, die sie ausführt.
- Änderungen der Anforderungen. Selbst geringfügige Änderungen an Anforderungen spät in der Entwicklung erfordern viel Arbeit, um Änderungen am System vorzunehmen. Das Design und die Architektur der Anwendung ändern sich, was wiederum Änderungen am Quellcode und den Prinzipien der Interaktion von Softwaremodulen erfordert. Diese andauernden Veränderungen sind oft die Quelle subtiler Defekte. Dennoch sind häufig wechselnde Anforderungen in modernen Unternehmen eher die Regel als die Ausnahme, so dass die kontinuierliche Prüfung und Risikokontrolle unter solchen Bedingungen in der direkten Verantwortung der Qualitätssicherungsabteilung liegt.
- Schlecht dokumentierter Code. Es ist schwierig, schlecht geschriebenen und schlecht dokumentierten Code zu pflegen und zu ändern. Viele Unternehmen haben spezielle Regeln für das Schreiben und Dokumentieren von Code durch Programmierer. In der Praxis kommt es jedoch häufig vor, dass Entwickler gezwungen sind, Programme überhaupt schnell zu schreiben, was sich auf die Qualität des Produkts auswirkt.
- Software-Entwicklungswerkzeuge. Renderer, Bibliotheken, Compiler, Skriptgeneratoren und andere Entwicklungshilfen sind häufig auch schlecht funktionierende und schlecht dokumentierte Programme, die zu einer Fehlerquelle im fertigen Produkt werden können.