Nach DIN ISO 9126 versteht man unter Softwarequalität die Gesamtheit der Merkmale und Merkmalswerte eines Softwareprodukts, die sich auf dessen Eignung beziehen, festgelegte oder vorausgesetzte Erfordernisse zu erfüllen. [Balzert 1998, S. 257] Diese Definition bezieht sich damit ausschließlich auf die Produktqualität.
Qualitätsmodelle
Konzept
Der Begriff der Softwarequalität selbst ist nicht operabel und in der Praxis direkt anwendbar. [Balzert 1998, S. 257] Deshalb existieren Qualitätsmodelle, die durch eine weitere Detaillierung und Konkretisierung das Konzept der Softwarequalität operationalisieren. Dies leisten die Qualitätsmodelle durch Ableiten von Unterbegriffen. Dadurch entsteht ein Baum (oder ein Netz) von Begriffen und Unterbegriffen.
Die Qualitätsmerkmale tragen im Englischen die Bezeichnung factor, ein Qualitäts-Teilmerkmal heißt criterion und die Qualitäts-Indikatoren metrics. Deswegen erscheinen derartige Qualitätsmodelle in der Literatur auch als FCM-Modelle. Bei den Blattknoten im Baum des Qualitätmodells, dem Qualitätsindikatoren, sollte es sich um beobachtbare oder messbare Sachverhalte handeln. Hier können beispielsweise Softwaremetriken zum Einsatz kommen.
Modelle
Es existieren bereits ausgearbeitete Qualitätsmodelle, wie zum Beispiel das Qualitätsmodell nach ISO 9126 mit folgenden Qualitätsmerkmalen:
- Funktionalität: Inwieweit besitzt die Software die geforderten Funktionen? - Vorhandensein von Funktionen mit festgelegten Eigenschaften. Diese Funktionen erfüllen die definierten Anforderungen.
- Angemessenheit: Eignung von Funktionen für spezifizierte Aufgaben, z.B. aufgabenorientierte Zusammensetzung von Funktionen aus Teilfunktionen.
- Richtigkeit: Liefern der richtigen oder vereinbarten Ergebnisse oder Wirkungen, z.B. die benötigte Genauigkeit von berechneten Werten.
- Interoperabilität: Fähigkeit, mit vorgegebenen Systemen zusammenzuwirken.
- Sicherheit: Fähigkeit, unberechtigten Zugriff, sowohl versehentlich als auch vorsätzlich, auf Programme und Daten zu verhindern.
- Konformität: Grad, in dem die Software Normen oder Vereinbarungen zur Funktionalität erfüllt.
- Zuverlässigkeit: Kann die Software ein bestimmtes Leistungsniveau unter bestimmten Bedingungen über einen bestimmten Zeitraum aufrechterhalten? - Fähigkeit der Software, ihr Leistungsniveau unter festgelegten Bedingungen über einen festgelegten Zeitraum zu bewahren.
- Reife: Geringe Versagenshäufigkeit durch Fehlerzustände.
- Fehlertoleranz: Fähigkeit, ein spezifiziertes Leistungsniveau bei Software-Fehlern oder Nicht-Einhaltung ihrer spezifizierten Schnittstelle zu bewahren.
- Wiederherstellbarkeit: Fähigkeit, bei einem Versagen das Leistungsniveau wiederherzustellen und die direkt betroffenen Daten wiederzugewinnen. Zu berücksichtigen sind die dafür benötigte Zeit und der benötigte Aufwand.
- Konformität: Grad, in dem die Software Normen oder Vereinbarungen zur Zuverlässigkeit erfüllt.
- Benutzbarkeit: Welchen Aufwand fordert der Einsatz der Software von den Benutzern und wie wird er von diesen beurteilt? - Aufwand, der zur Benutzung erforderlich ist, und individuelle Beurteilung der Benutzung durch eine festgelegte oder vorausgesetzte Benutzergruppe.
- Verständlichkeit: Aufwand für den Benutzer, das Konzept und die Anwendung zu verstehen.
- Erlernbarkeit: Aufwand, für den Benutzer, die Anwendung zu erlernen (z.B. Bedienung, Ein-, Ausgabe).
- Bedienbarkeit: Aufwand für den Benutzer, die Anwendung zu bedienen.
- Attraktivität: Anziehungskraft der Anwendung gegenüber dem Benutzer.
- Konformität: Grad, in dem die Software Normen oder Vereinbarungen zur Benutzbarkeit erfüllt.
- Effzienz: Wie liegt das Verhältnis zwischen Leistungsniveau der Software und eingesetzten Betriebsmitteln? - Verhältnis zwischen dem Leistungsniveau der Software und dem Umfang der eingesetzten Betriebsmittel unter festgelegten Bedingungen.
- Zeitverhalten: Antwort- und Verarbeitungszeiten sowie Durchsatz bei der Funktionsausführung.
- Verbrauchsverhalten: Anzahl und Dauer der benötigten Betriebmittel bei der Erfüllung der Funktionen.
- Konformität: Grad, in dem die Software Normen oder Vereinbarungen zur Effzienz erfüllt.
- Wartbarkeit: Welchen Aufwand erfordert die Durchführung vorgegebener Änderungen an der Software? - Aufwand, der zur Durchführung vorgegebener Änderungen notwendig ist. Änderungen können Korrekturen, Verbesserungen oder Anpassungen an Änderungen der Umgebung, der Anforderungen oder der funktionalen Spezifikationen einschließen.
- Analysierbarkeit: Aufwand, um Mängel oder Ursachen von Versagen zu diagnostizieren oder um änderungsbedürftige Teile zu bestimmen.
- Änderbarkeit: Aufwand zur Ausführung von Verbesserungen, zur Fehlerbeseitigung oder Anpassung an Umgebungsänderungen.
- Stabilität: Wahrscheinlichkeit des Auftretens unerwarteter Wirkungen von Änderungen.
- Prüfbarkeit: Aufwand, der zur Prüfung der geänderten Software notwendig ist.
- Konformität: Grad, in dem die Software Normen oder Vereinbarungen zur Wartbarkeit erfüllt.
- Übertragbarkeit: Wie leicht lässt sich die Software in eine andere Umgebung übertragen? - Eignung der Software, von der Umgebung in eine andere übertragen werden zu können. Umgebung kann organisatorische Umgebung, Hardware- oder Software-Umgebung sein.
- Anpaßbarkeit:
- Installierbarkeit: Aufwand, der zum Installieren der Software in einer festgelegten Umgebung notwendig ist.
- Koexistenz:
- Austauschbarkeit: Möglichkeit, diese Software anstelle einer spezifizierten anderen in die Umgebung jener Software zu verwenden, sowie der dafür notwendige Aufwand.
- Konformität: Grad, in dem die Software Normen oder Vereinbarungen zur Übertragbarkeit erfüllt.
Es existieren allerdings auch Vorgehensmodelle, wie der GQM-Ansatz, der zu individuellen Qualitätmodellen führt.
Sicherstellung der Qualität
Für die Sicherstellung, dass die Software bezüglich der verschiedenen Qualitätsmerkmale den Anforderungen entspricht, existieren verschiedene Vorgehensmodelle und -methoden.
Einige Modelle:
- Organisatorische Qualitätsmodelle, zum Beispiel das Capability Maturity Model (CMM)
- Prozessmodelle, wie zum Beispiel
- der Rational Unified Process (RUP)
- Agile Methoden, wie Extreme Programming
- das V-Modell
Diese Modelle lassen sich eher dem Konzept der Prozessqualität zuordnen. Dieses geht davon aus ein qualitativ hochwertiger Prozess der Produkterstellung die Entstehung von qualitativ hochwertigen Produkten begünstigt. Deshalb stellen die obigen Modelle Qualitätsanforderungen an den Prozess, in dem die Software entwickelt wird.
Einige Methoden:
- iterative Software-Entwicklung
- das zur Methode gewordene Spiralmodell
- Softwaretests (siehe auch Test (Informatik))
- Refaktorisierung
- Code Reviews
- Paarprogrammierung
- Testgesteuerte Programmierung
Softwaretests, Refaktorisierung und Code Reviews gehen direkt auf die Produktqualität ein. Das konkrete Produkt wird untersucht und bearbeitet, damit es die gestellten Qualitätsanforderungen möglichst gut erfüllt.
Die Modelle lassen sich teils, die Methoden größtenteils miteinander kombinieren. Interessant sind die Modelle der agilen Prozesse wie das Extreme Programming insbesondere deshalb, weil sie Synergieeffekte des gleichzeitigen Einsatzes verschiedener Methoden nutzen.