Wikipedia · einfach zusammengefasst · Stand
Softwarequalität
„Unter Softwarequalität versteht man die Gesamtheit der Merkmale und Merkmalswerte eines Softwareprodukts, die sich auf dessen Eignung beziehen, …
Inhalt6 Abschnitte
Begriff und Bedeutung
Softwarequalität ist „die Gesamtheit der Merkmale und Merkmalswerte eines Softwareprodukts, die sich auf dessen Eignung beziehen, festgelegte oder vorausgesetzte Erfordernisse zu erfüllen“. Sie beschreibt damit den Vergleich zwischen dem tatsächlichen Zustand einer Software und den Anforderungen an sie (Ist/Soll). Qualität bedeutet nicht nur Fehlerfreiheit, sondern umfasst auch Eigenschaften wie Zuverlässigkeit, Benutzbarkeit, Effizienz, Änderbarkeit und Übertragbarkeit.
IEEE-Standards benennen wichtige Dokumente für Entwicklung und Qualitätssicherung: SQAP steht für Software Quality Assurance Plan (IEEE 730), SCMP für Software Configuration Management Plan (IEEE 828), STD für Software Test Documentation (IEEE 829), SRS für Software Requirements Specification (IEEE 830), SVVP für Software Validation & Verification Plan (IEEE 1012), SDD für Software Design Description (IEEE 1016), SPMP für Software Project Management Plan (IEEE 1058) und SRA für Software Reviews and Audits (IEEE 1028).
Qualitätsmodelle und messbare Merkmale
Der allgemeine Begriff Softwarequalität ist nicht direkt operabel, also in der Praxis nicht unmittelbar anwendbar. Qualitätsmodelle konkretisieren ihn, indem sie Qualität in Merkmale und immer genauere Teilmerkmale zerlegen. So entsteht ein Baum oder Netz aus Begriffen und Unterbegriffen.
In englischer Fachsprache heißt ein Qualitätsmerkmal factor, ein Qualitätsteilmerkmal criterion und ein Qualitätsindikator metrics. Daher werden solche Modelle auch als FCM-Modelle bezeichnet. Beispiele sind FURPS, das Modell von Boehm u. a. aus dem Jahr 1978, das DGQ-Modell von 1986 und das Modell von McCall u. a. aus dem Jahr 1977.
Am Ende der Untergliederung stehen Qualitätsindikatoren. Diese sollen beobachtbare oder messbare Sachverhalte darstellen. Dazu können Softwaremetriken eingesetzt werden, also Messgrößen, mit denen bestimmte Eigenschaften einer Software bewertet werden.
Qualitätskriterien nach ISO/IEC 9126
Der Standard ISO/IEC 9126 ordnet Qualitätskriterien für Software in einer zweistufigen Struktur. Er macht deutlich, dass Softwarequalität mehr umfasst als Fehlerfreiheit, die im Wesentlichen dem Kriterium Funktionalität zugeordnet wird.
Auf der obersten Ebene unterscheidet das Modell:
- funktionale Eigenschaften: grundlegende Eigenschaften der Funktionen einer Software, also was sie leisten soll und wie;
- nicht-funktionale Eigenschaften: Merkmale, die das Betriebsverhalten des Softwareprodukts im täglichen Einsatz kennzeichnen.
Zu den nicht-funktionalen Eigenschaften gehören Zuverlässigkeit, Benutzbarkeit (Usability) und Effizienz. Die entsprechenden Anforderungen beschreiben, was das Produkt während seines Betriebs erfüllen soll. Änderbarkeit beziehungsweise Wartbarkeit und Übertragbarkeit beziehen sich dagegen auf die interne Beschaffenheit der Software, vor allem auf den Quelltext. Eine geeignete innere Struktur soll notwendige Anpassungen ermöglichen oder vereinfachen.
Diese Kriterien bilden einen allgemeinen Rahmen. Für ein konkretes Softwareprodukt müssen sie in einer individuellen Spezifikation genauer festgelegt werden, damit sie bei der Entwicklung berücksichtigt und später überprüft werden können.
Qualitätssicherung in Entwicklung und Test
Qualitätssicherung (QS) umfasst Vorgehensmodelle und Methoden, mit denen sichergestellt werden soll, dass eine Software die Anforderungen an ihre verschiedenen Qualitätsmerkmale erfüllt. Manche Modelle konzentrieren sich auf Prozessqualität. Dahinter steht die Annahme, dass ein hochwertiger Entwicklungsprozess die Entstehung hochwertiger Produkte begünstigt. Solche Modelle formulieren deshalb Qualitätsanforderungen an den Herstellungsprozess. Andere Ansätze, etwa Goal-Question-Metric, führen zu individuell entwickelten Qualitätsmodellen.
Zu den organisatorischen Qualitätsmodellen gehören das Capability Maturity Model (CMM) und Automotive SPICE. Prozessmodelle sind beispielsweise Capability Maturity Model Integration, Rational Unified Process (RUP), V-Modell, V²-Modell beziehungsweise W-Modell sowie Hardware in the Loop (HIL). Der Standard ISO/IEC 15504, auch SPICE genannt, dient der Bewertung der Umsetzung von Unternehmensprozessen. Daneben gibt es domänenspezifische Varianten wie Automotive SPICE für Entwicklungsprozesse von Steuergerätelieferanten.
Wichtige Methoden sind iterative Softwareentwicklung, Spiralmodell, Refactoring, testgetriebene Entwicklung sowie unterschiedliche Testarten und Methoden des Softwaretests. Modelle können teilweise und Methoden größtenteils miteinander kombiniert werden. Agile Prozesse wie Extreme Programming nutzen Synergieeffekte, indem sie mehrere Methoden gleichzeitig einsetzen.
Softwaretests überprüfen erstellte, geänderte oder weiterentwickelte Software vor ihrer tatsächlichen Nutzung. Dabei werden unterschiedliche Verfahren wie Keyword-Driven Testing, risk based Testing und data driven Testing sowie verschiedene Vorgehensmodelle, Testarten und Teststufen verwendet. Tests sollen „Vertrauen in die Qualität der Software schaffen“. Sie sind jedoch nicht die einzige Maßnahme des Qualitätsmanagements und oft nur die letztmögliche: Qualität kann nicht „eingetestet“ werden.
Die Qualitätssicherung unterscheidet konstruktive und analytische Maßnahmen. Konstruktive Maßnahmen sollen Qualität bereits während der Entstehung fördern. Dazu gehören eine systematische Definition des Projekts und seiner Ziele, eine detaillierte und von den Auftraggebern verbindlich verabschiedete Anforderungsanalyse sowie die Verwendung etablierter oder vorgeschriebener Programmierstandards.
Analytische Maßnahmen untersuchen das entstandene Produkt. Statische Maßnahmen wie statische Code-Analyse und Code Reviews prüfen den Programmcode, ohne die Anwendung auszuführen. Dies kann unmittelbar während der Entwicklung, etwa bei der Paarprogrammierung, oder erst vor der Freigabe für Benutzertests geschehen. Bei dynamischen Tests wird die Anwendung tatsächlich unter unterschiedlichen Bedingungen und anhand von Testfällen ausgeführt; anschließend werden die Ergebnisse überprüft. Während der Entwicklung befindet sich die Qualität einer Software somit in verschiedenen Zuständen. Bei der produktiven Nutzung soll sie schließlich alle festgelegten Anforderungen und Kriterien erfüllen.
Besonderheiten verschiedener Softwaretypen
Die Bedeutung und Gewichtung von Qualitätskriterien hängt teilweise vom Softwaretyp ab. Kriterien wie Richtigkeit und Ordnungsmäßigkeit, die zur Funktionalität gehören, sind im Allgemeinen für alle Softwaretypen ähnlich wichtig. Andere Kriterien können je nach Einsatzgebiet unterschiedlich gewichtet werden und zusätzliche Detailanforderungen erzeugen. Deshalb können auch Herstellung und Qualitätssicherung unterschiedliche Vorgehensweisen erfordern.
Bei Standardsoftware ist die Übertragbarkeit beziehungsweise Anpassbarkeit besonders wichtig, weil dieselbe Software bei verschiedenen Anwendern eingesetzt wird. Durch Parametrisierung lässt sich ihr Funktionsumfang an die Anforderungen eines Unternehmens anpassen.
Bei Systemsoftware spielen Effizienzkriterien wie Verbrauchsverhalten und Zeitverhalten eine besondere Rolle. Ebenfalls wichtig sind Wiederverwendbarkeit und Kompatibilität, also die Lauffähigkeit in unterschiedlichen Systemumgebungen.
Bei Spielesoftware ist Effizienz beispielsweise für die optimale Nutzung von Grafikkarten und „ruckelfreie“ Bildbewegungen bedeutsam. Für die Bedienbarkeit gelten besondere Anforderungen, darunter Einheitlichkeit und Einfachheit.
Bei Software für mobile Geräte entstehen zusätzliche Anforderungen:
- Funktionalität und Sicherheit: Neben anderen sensiblen Daten können Bewegungsprofile des Nutzers anfallen.
- Effizienz: Prozessorleistung, Arbeitsspeicher und Online-Datenvolumen sollen sparsam genutzt werden. Ein geringer Akkuverbrauch ermöglicht eine möglichst lange Laufzeit.
- Änderbarkeit: Mobile Plattformen sind vielfältig und entwickeln sich schneller weiter als Arbeitsplatzrechner. Deshalb muss Software einfach und schnell angepasst werden können. Frameworks wie PhoneGap und Xamarin können diese Flexibilität unterstützen, weil sie in unterschiedlichen Betriebssystemen und Umgebungen eingesetzt und einfach installiert werden können. Eine weitere Möglichkeit sind Web-Apps, die in einem Webbrowser angezeigt und bedient werden.
- Übertragbarkeit und Bedienung: Mobile Anzeigeflächen reichen von 1 bis 10 Zoll. Anwendungen müssen auf kleinen Bildschirmen bedienbar sein und größere Anzeigen sinnvoll nutzen. Außerdem ist der Wechsel zwischen Hoch- und Querformat häufig. Meist fehlt eine echte Tastatur; Texteingaben sind langsamer, es gibt weniger Tasten und Tastenkombinationen sind unüblich. Dafür stehen häufig alternative Eingabemöglichkeiten zur Verfügung, die mit passenden Funktionen belegt werden müssen.
- Konformität: Vorgaben und Designrichtlinien der Hersteller mobiler Systeme bieten besonders für Benutzbarkeit und Bedienbarkeit eine wichtige Grundlage. Als Beispiele nennt der Artikel die Richtlinien von Google, Apple und Microsoft.
Auszeichnungen für Softwarequalität
In Deutschland wird seit 2021 der Deutsche Preis für Software-Qualität (DPSQ) gemeinsam von der ASQF, der Gesellschaft für Informatik Fachgruppe TAV und dem German Testing Board vergeben.
In den USA verleihen die IEEE Computer Society und das Software Engineering Institute (SEI) den Watts S. Humphrey Software Quality Award. Er würdigt „herausragende Leistungen bei der Verbesserung der Fähigkeit einer Organisation, hochwertige softwareabhängige Systeme zu erstellen und weiterzuentwickeln“.