Scheinbar ja, zumindest existieren mehrere solche Definitionen in unterschiedlichen Fachbereichen. So versteht zum Beispiel die Informatik ein Programm als eine Reihe von Anweisungen an einen Computer. Das ist eine sehr technische Sichtweise und auch wenn diese Definition per se korrekt ist, wirkt sie doch unvollständig. Wo bleibt die Berücksichtigung der menschlichen Komponente?
Die Definition des Software-Testers Cem Kaner erscheint da schon vielversprechender: Laut ihm ist ein Computerprogramm die Kommunikation zwischen Menschen und Computern über Raum und Zeit hinweg, wobei besagte Kommunikation Anweisungen umfasst, die von einem Computer ausgeführt werden können.
Werde jetzt in 6-12 Monaten Software-Tester!
Eine etwas sperrige Beschreibung, aber im Kern scheint sie die wesentlichen Merkmale eines Programms bereits zu erfassen. Sowohl die Technik als auch der Mensch werden darin berücksichtigt. Doch auch diese Definition vernachlässigt noch einen wichtigen Aspekt: den Zweck eines Programms.
Dabei ist dieser doch das eigentliche Ziel bei der Softwareentwicklung: Zu welchem Zweck erstellen wir das Programm bzw. die Anwendung? Die Antwortmöglichkeiten auf diese Frage sind mindestens genauso vielfältig wie die existierenden Programme selbst. Das eine soll dem Nutzer die Kommunikation mit anderen Nutzern ermöglichen, dass andere ihm dabei helfen, seine Bankgeschäfte abzuwickeln, und wieder ein anderes soll es ihm ermöglichen, seine Fotos zu bearbeiten.
Bricht man diese spezifischen Zwecke jedoch auf das Wesentliche herunter, lässt sich eine allgemeingültige Aussage treffen: Der Zweck eines Programms ist es, den Stakeholdern, wie z. B. den Nutzern, den Entwicklern oder den Support-Mitarbeitern, einen Mehrwert zu bieten.
Berücksichtigt man diesen Aspekt und verknüpft ihn mit der Aussage von Cem Kaner, erhält man eine dritte Definition: Ein Programm ist eine Reihe von Anweisungen, die von einem Computer ausgeführt werden, mit dem Ziel, einen Mehrwert für die Stakeholder zu generieren. Uns persönlich gefällt diese Definition von „Programm” am besten. Sie berücksichtigt alle wesentlichen Aspekte – Technik, Mensch und Zweck – und ist trotzdem präzise und gut nachzuvollziehen.
Sie stellt uns als Software-Tester bzw. Entwickler aber auch vor neue Aufgaben. Denn wir haben gelernt: Der Zweck eines Programms ist das Generieren eines Mehrwerts. Wollen wir also testen, ob eine Software eben diesen Zweck erfüllt, müssen wir zunächst wissen, welchen Mehrwert es überhaupt haben soll und für wen. Auch müssen wir uns fragen, wie hoch der Mehrwert sein soll und welche Risiken im Programm auftreten können, die ihn reduzieren.
Diese Fragen zu beantworten, ist unerlässlich, wenn wir die Qualität einer Software beurteilen wollen – was schon für sich genommen alles andere als unkompliziert ist.
Die Frage nach der Qualität
Um die Qualität einer Software zu messen, wurden von der ISO (International Organization for Standardization) Merkmale definiert, die eine gute Software ausmachen. Diese Merkmale beziehen sich aber nur auf das Produkt und nicht auf den Prozess der Softwareentwicklung. Es gibt insgesamt 8 Merkmale, die von der ISO definiert wurden.
Das erste Merkmal ist die Wartbarkeit/Änderbarkeit einer Software. Das bedeutet, wie viel Aufwand notwendig ist, um etwas an der Software zu ändern. Diese Änderungen beinhalten Korrekturen und Verbesserungen, aber auch Anpassungen an Änderungen der Umgebung, der Anforderungen oder der funktionalen Spezifikationen.
Das zweite Merkmal ist die Benutzbarkeit einer Software. Das heißt: Welcher Aufwand wird vom Benutzer verlangt, um die Software anwenden zu können, und wie wird dieser Aufwand von den Benutzern beurteilt?
Die Effizienz ist das dritte Merkmal und berücksichtigt, wie das Leistungsniveau mit den eingesetzten Betriebsmitteln zusammenhängt.
Weiter geht es mit der Funktionalität einer Software, diese ist das vierte Merkmal. Die Funktionalität beschreibt, ob die Software alle geforderten Funktionen besitzt.
Das fünfte Merkmal beschreibt die Übertragbarkeit der Software. Heißt: Wie leicht ist es, die Software in eine andere Umgebung zu übertragen? Die Umgebung kann eine organisatorische Umgebung oder eine andere Hard- bzw. Software sein.
Das sechste Merkmal ist die Zuverlässigkeit. Die Zuverlässigkeit einer Software beinhaltet das Leistungsniveau. Kann dieses unter bestimmten Bedingungen über einen bestimmten Zeitraum aufrechterhalten werden?
Die Sicherheit ist das siebte Merkmal einer guten Software. Es hinterfragt, ob eine Software einen guten Datenschutz besitzt, wie die Integrität ist, ob die Software nicht manipulierbar ist, ob die Benutzerkonten geschützt sind und zu guter Letzt, ob die Software eine hohe Authentizität besitzt.
Das letzte und achte Merkmal ist eine hohe Kompatibilität. Damit ist gemeint, ob das System eine optimale Koexistenz zu weiterer Software und eine hohe Interoperabilität besitzt.
Weitere Qualitätsmerkmale, die wir kennengelernt haben, sind zum Beispiel die Testbarkeit einer Software, die Verständlichkeit einer Software, die Richtigkeit oder auch die Wiederherstellbarkeit.
Bei der Testbarkeit einer Software geht es darum, wie viel Aufwand benötigt wird, um eine Software beim Entwickeln oder nach einer Änderung zu testen.
Wiederherstellbarkeit einer Software bedeutet, dass die Daten, die man schon eingegeben hat, nicht gelöscht werden, wenn das System auf einmal abstürzt. Denn seien wir mal ehrlich, wer würde eine Software verwenden, die immer unsere Daten verliert? Es kann immer mal passieren, dass ein PC abstürzt und man gerade dabei war, eine Datei bei Google Docs zu schreiben. Es würden wohl weniger Benutzer diese Software verwenden, wenn sie immer von vorne anfangen müssten.
Wir finden, diese Qualitätsmerkmale sind wichtig, um eine gute Software herzustellen und um Leitlinien vorzugeben, die eingehalten werden müssen bzw. sollten, wenn eine Software hergestellt wird. Natürlich kommt es auch darauf an, für wen die Software ist, und diesbezüglich werden andere Merkmale in den Vordergrund gestellt.
Bei einer Spielesoftware legen die Hersteller mehr Wert auf die Übertragbarkeit der Software, damit möglichst viele Nutzer das Spiel herunterladen können. Bei einer Software für eine Bank wird mehr Wert auf deren Sicherheit gelegt, da die Nutzer eine Software, die Sicherheitslücken hat, nicht herunterladen werden.
Wenn man sich so die Definitionen der einzelnen Qualitätsmerkmale durchliest, würden doch mehrere denken: „Natürlich kann man so die Qualität jeder Software messen!” Es gibt aber auch bestimmt welche, die sich denken: „So leicht ist es aber auch nicht, die Qualität zu messen!”
Wir persönlich schließen uns der zweiten Gruppe an. Natürlich kann man bis zu einem gewissen Grad die Qualität beurteilen, aber bei den Feinheiten funktioniert das nicht mehr. Die meisten Menschen würden eine Software, die ständig abstürzt oder sich nicht mal öffnen lässt, schlecht bewerten.
Was allerdings die Feinheiten betrifft, ob zum Beispiel eine Seite automatisch speichert oder manuell, sehen viele Menschen unterschiedlich – manche brauchen einfach die Sicherheit, selber auf „Speichern” zu klicken. Oder auch, ob ein Button abgerundete Ecken hat oder ob die Ecken kantig sind, bewerten viele Menschen unterschiedlich.
Auch Softwarefehler sind subjektiv
Wir wissen nun, dass ein Programm einen Zweck erfüllt, und dieser ist es, einen Mehrwert für jemanden zu generieren. Erfüllt es diesen Zweck, hat es auch Qualität für diese Person, wobei das subjektive Empfinden des Einzelnen eine große Rolle spielt.
Was aber, wenn das Programm seinen Zweck verfehlt? Wenn es ihm nicht gelingt, diesen beabsichtigten Mehrwert zu generieren, oder zumindest das Risiko besteht, dass ihm das nicht gelingt? Laut dem amerikanischen Softwaretester James Bach liegt in diesem Fall ein Softwarefehler vor. Diesen definiert Bach wie folgt: Ein Softwarefehler ist alles, was den Mehrwert des Produkts für einen wichtigen Stakeholder bedroht.
Die Betonung, dass es sich um einen wichtigen Stakeholder handeln muss, mag hier zunächst überraschen. Doch wenn wir uns ins Gedächtnis rufen, dass Qualität subjektiv ist, ist sie einleuchtend: Selbst die beste Software wird es vermutlich nie schaffen, jeden einzelnen Nutzer hundertprozentig zufrieden zu stimmen.
Es wird immer die eine oder andere Person geben, die sich von dem Programm etwas anderes versprochen hat und deshalb damit nichts anfangen kann. Doch können wir diese vernachlässigen, solange die Zielgruppe – oder zumindest ein wesentlicher Großteil davon – einen Mehrwert aus der Software ziehen kann. Wenn dieses Ziel erreicht ist, erfüllt das Programm seinen Zweck und es besitzt Qualität.