Softwaregüte (Softwarequalität)

 

Was macht die Güte einer Software aus?

 

Etwas pauschal kann man auf diese Frage antworten: die Güte einer Software hängt davon ab, wie gut sie ihren Zweck erfüllt. Vorausschauende und ökonomisch denkende Menschen werden anfügen: sie sollte diesen Zweck über längere Zeit hinweg erfüllen können und sich den Bedürfnissen der Benutzer leicht anpassen lassen, wenn diese sich ändern.

 

Wenn wir gezielt auf die Softwaregüte einwirken wollen, genügt eine solche pauschale Betrachtung allerdings nicht. Wir müssen den Begriff der Güte in einzelne Komponenten aufspalten, an denen wir uns orientieren können. Man bezeichnet solche Komponenten als Qualitätsziele oder Softwarequalitätsmerkmale. Bei der folgenden Betrachtung dieser Komponenten setzen wir stillschweigend voraus, dass die Software die gewünschte Funktionalität besitzt. Ohne diese Funktionalität nützen alle Qualitätsmerkmale nichts. Ein Benutzer, der ein Programm zur Verwaltung seiner Briefmarkensammlung wünscht, wird mit einem Programm zur Verwaltung des Weinkellers nicht zufrieden sein, auch wenn es noch so gut funktioniert. Nun aber die wichtigsten Qualitätsziele:

 

 

Benutzerfreundlichkeit

 

Ein Programm ist benutzerfreundlich, wenn der Benutzer damit bequem arbeiten kann. Er soll in jeder Phase seiner Arbeit genau wissen, was das Programm von ihm erwartet. Ein gutes Benutzerhandbuch hilft anfangs dabei, aber im Idealfall ist ein Programm so weit selbsterklärend, dass der Benutzer nach kurzer Einarbeitungszeit auch so zurechtkommt. Daneben soll die Software auch ästhetischen Ansprüchen genügen: die Benutzeroberfläche soll sachdienlich und harmonisch aufgebaut sein, so dass es ein Vergnügen ist, damit zu arbeiten.

 

 

Zuverlässigkeit

 

Wir nennen ein Programm zuverlässig, wenn Fehler selten auftreten und nur geringe Auswirkungen haben. Zuverlässigkeit ist natürlich besonders von korrekter Programmierung abhängig, jedoch sind Korrektheit und Zuverlässigkeit nicht dasselbe. Zum einen braucht es für eine hinreichende Zuverlässigkeit keine völlige Korrektheit (man erreicht sie ohnehin so gut wie nie), zum anderen wäre auch völlige Korrektheit nicht ausreichend, um Zuverlässigkeit zu gewährleisten. Wichtig ist, dass das Programm in seinen wesentlichen Funktionen korrekt arbeitet. Neben dem Aspekt der Korrektheit ist die Robustheit der zweite wichtige Aspekt der Zuverlässigkeit. Ein Programm sollte auf keine Eingabe „bösartig“ reagieren, also z.B. mit einem Absturz, so unsinnig die Eingabe des Benutzers auch sein mag. Bessere Reaktionen auf Fehleingaben sind aussagefähige Fehlerhinweise, verbunden mit der Möglichkeit, die Eingaben zu wiederholen.

 

 

Wiederverwendbarkeit

 

Damit ist gemeint, dass man Teile der Software herauslösen und im Rahmen anderer Software verwenden kann. Offensichtlich ist dies am ehesten möglich, wenn die Software aus in sich geschlossenen Bausteinen zusammengesetzt ist. Man spricht dann auch von einem modularen Aufbau. Ein modularer Aufbau harmoniert im Übrigen gut mit einer Schichtenarchitektur (s. dort). Eine spezielle Variante der Wiederverwendbarkeit liegt vor, wenn das gesamte Programm in einer anderen Umgebung verwendet werden soll als ursprünglich vorgesehen. Man bezeichnet dies als Portabilität. Auch die Portabilität profitiert von einem modularen Aufbau.

 

 

Wartbarkeit

 

Nicht nur Geräte müssen gewartet werden, sondern auch Programme, obwohl sie sich im Gegensatz zu ersteren nicht im Laufe der Zeit abnutzen. Anlass für die Softwarewartung sind zum einen die Änderungswünsche der Benutzer, zum anderen die Programmierfehler, die nach und nach zu Tage treten. Wichtige Bestimmungsfaktoren der Wartbarkeit sind Architektur, modularer Aufbau, Entwicklungsdokumentation und Art der Codierung (Kommentierungen, Übersichtlichkeit).

 

 

Effizienz

 

Wenn man von Effizienz einer Software spricht, meint man vor allem ihre Schnelligkeit. Ein langsames Programm wird besonders zum Ärgernis, wenn der Benutzer eines Dialogprogramms lange vor dem Bildschirm sitzt, bevor er die Rückmeldung auf seine Aktionen sieht. Dies kann am Ende dazu führen, dass ein solches Programm von den Benutzern nicht akzeptiert wird.

 

Aber auch wenn kein Benutzer vor dem Bildschirm sitzt, um auf die Antwort zu warten, kann Langsamkeit ein Hinderungsgrund sein, ein Programm einzusetzen. Dies gilt vor allem, wenn aufwendige Rechnungen auf einem großen Datenumfang durchzuführen sind.

 

Manche Programme kann man als Programmierer dramatisch beschleunigen, indem man den Großteil der Daten ständig im Arbeitsspeicher hält, anstatt die benötigten Daten erst bei Bedarf vom Externspeicher zu laden. Man fördert in diesem Fall die Geschwindigkeit zu Lasten des Arbeitsspeicherbedarfs. Im Einzelfall muss man in solchen Fällen prüfen, was wichtiger ist, Geschwindigkeit oder geringer Speicherbedarf.