Zum Inhalt springen
L

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
  1. 1. Begriff und Bedeutung
  2. 2. Qualitätsmodelle und messbare Merkmale
  3. 3. Qualitätskriterien nach ISO/IEC 9126
  4. 4. Qualitätssicherung in Entwicklung und Test
  5. 5. Besonderheiten verschiedener Softwaretypen
  6. 6. Auszeichnungen für Softwarequalität

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“.

Weiterlesen

Software Software ist ein Programm oder eine Menge von Programmen, die dazu dienen, einen Computer zu betreiben. · Software sind Programme sowie die zugehörige … Baum (Graphentheorie) Ein Baum ist in der Graphentheorie ein spezieller Typ von Graph, der zusammenhängend ist und keine geschlossenen Pfade enthält, d. h. ein Graph, … Graph (Graphentheorie) Ein Graph ist in der Graphentheorie eine abstrakte Struktur, die eine Menge von Objekten zusammen mit den zwischen diesen Objekten bestehenden Verbindungen … Quelltext Quelltext, auch Quellcode (englisch source code) oder unscharf Programmcode genannt, ist in der Informatik der für Menschen lesbare, in einer … Gesellschaft für Informatik Gesellschaft für Informatik ; 1969 · Bonn · Interessenvertretung der Informatiker in Wissenschaft, Wirtschaft, öffentlicher Verwaltung, Gesellschaft und Politik. Vorgehensmodell zur Softwareentwicklung Die agile Softwareentwicklung hingegen beschäftigt sich mit Methoden, die den Entwickler kreativ arbeiten und Verwaltungsaspekte zurücktreten lassen. Je … V-Modell Ähnlich dem Wasserfallmodell organisiert es den Softwareentwicklungsprozess in Phasen. Zusätzlich zu diesen Entwicklungsphasen definiert das V-Modell auch … Refactoring Refactoring ist ein zentraler Bestandteil der Agilen Softwareentwicklung. Dort wird meist von „kontinuierlichem“ Refactoring oder „kompromisslosem“ Refactoring … Testgetriebene Entwicklung Das Refactoring, also das Aufräumen im Code, führt zu weniger Fehlern; weil man dabei in kleinen Schritten vorgeht und stets entlang bestandener Tests … Softwaretest Ein Softwaretest prüft und bewertet Software auf Erfüllung der für ihren Einsatz definierten Anforderungen und misst ihre Qualität. Anforderungsanalyse (Informatik) Ziel ist es, die Anforderungen des Auftraggebers an das zu entwickelnde System zu ermitteln, zu strukturieren und zu prüfen. Das Ergebnis einer … Statische Code-Analyse Statische Code-Analyse oder kurz statische Analyse ist ein statisches Software-Testverfahren, das zur Übersetzungszeit durchgeführt wird.