So funktioniert Software Qualitätssicherung

Die Software Qualitätssicherung (im Beitrag auch mit SQ abgekürzt) garantiert die Eignung der Software für die vorgesehene Aufgabe. 

Sie findet während der Entwicklung statt und basiert auf verschiedenen prozess- und zustandsorientierten Qualitätsmodellen.

Aufgabe der Qualitätsmodelle

Diese Modelle sollen den Qualitätsbegriff konkretisieren, weil Softwarequalität selbst als inoperabel gilt. Das bedeutet, es fehlen in der Praxis (während der Anwendung der Software) harte Kriterien für die Qualitätsmessung.

Die Qualitätsmodelle hingegen verfügen über solche Kriterien, konkretisieren damit die Softwarequalität, detaillieren sie und machen sie damit operabel. Folgende Begrifflichkeiten werden für die Software Qualitätssicherung verwendet:

  • Qualitätsmerkmal: factor
  • Qualitätsteilmerkmal: criterion
  • Qualitätsindikatoren: metrics

Das führt zur Bezeichnung „FCM-Modell“ (factor-criterion-metrics). Metrics sollen messbare Sachverhalte sein. Diese werden beispielsweise als Softwaremetriken dargestellt.

SQ nach ISO 9126

Der ISO-Standard ISO/IEC 9126 bietet ein Modell für die Qualitätssicherung von Software an. Er ist allerdings nur eines von mehreren Modellen. Es entsteht bei Anwendung des ISO/IEC 9126 eine Struktur in zwei Stufen. 

Eine der Stufen untersucht die prinzipielle Funktionalität, die auch als Fehlerfreiheit verstanden wird, die nächste (höhere) Stufe benennt die Zweckmäßigkeit der Software für die gedachte Anwendung. 

Die durch die Qualitätsmerkmale benannten erwünschten Eigenschaften sind dementsprechend auf den beiden Ebenen:

  • Stufe 1: funktionale Eigenschaften, welche die Einsetzbarkeit der Software in der Praxis garantieren
  • Stufe 2: nicht-funktionale Eigenschaften, welche die Software für den gedachten Anwendungszweck als absolut oder überwiegend geeignet erscheinen lassen

Es geht bei der Stufe 1 überwiegend um die Zuverlässigkeit (Ausfallsicherheit) und Wartungsfähigkeit, also beispielsweise die Fähigkeit, Updates und Upgrades umzusetzen, aber auch um eine grundlegende Beschaffenheit des Quelltextes, der Eingriffe erleichtern soll. 

Bei Stufe 2 geht es überwiegend um Effizienz im Sinne des Anwendungszwecks und auch um Usability. 

Die Kriterien des des ISO/IEC 9126 bilden einen Rahmen für die Software Qualitätssicherung. Dessen Bedingungen müssen für einzelne Softwareprodukte konkretisiert werden, wozu individuelle Spezifikationen dienen.

SQ: Modelle der Prozessqualitätssicherung und individuelle Qualitätsmodelle

Für die Qualitätsicherung von Software existieren prinzipiell Modelle der Prozessqualitätssicherung und individuelle Qualitätsmodelle. 

Ein Modell der Prozessqualitätssicherung geht von der Voraussetzung aus, dass qualitativ hochwertige Prozesse der Produkterstellung zu einer qualitativ hochwertigen Software führen.

Ein individuelles Qualitätsmodell wäre beispielgebend der Goal-Question-Metric-Ansatz (GQM). Dargestellt als Baumstruktur steht als Wurzel das Ziel (Goal). 

Dieses wird über Knoten (Questions) zu Blättern (Metrics) verfeinert. Auf diesem Weg lassen sich Softwaremaße ableiten. 

Die gemessenen Werte werden auf dem Weg interpretiert. Die Identifizierung geeigneter Metriken erfolgt über die Beantwortung dieser Fragen:

  • Wie sieht das Ziel der Messung aus?
  • Welche Fragen beantwortet die Messung?
  • Welche Metriken beschreiben die notwendigen Eigenschaften?

Modelle der Prozessqualitätssicherung sind beispielsweise:

  • Capability Maturity Model Integration
  • RUP (Rational Unified Process)
  • V-Modell
  • das V²-Modell (W-Modell)
  • HIL (Hardware in the Loop)

Wiederum existieren Normen, die sich auf ganz bestimmte Anwendungsfälle der Software beziehen. 

So bewertet der Standard ISO/IEC 15504 (bekannt als SPICE) die Eignung einer Software für die Umsetzung von Unternehmensprozessen. Von diesem Standard gibt es auch domänenspezifische Varianten, so etwa den Automotive SPICE, der die Eignung der Software für die Entwicklung von Steuergeräten bewertet. Gleichzeitig muss sich die Software Qualitätssicherung auf verschiedene Methoden der Softwareentwicklung beziehen, so die iterative Softwareentwicklung, das Extreme Programming, das Refactoring, das Spiralmodell oder die testgetriebene Entwicklung. 

Das führt zu unterschiedlichen Methoden bei der Qualitätssicherung der Software. Die Entwicklungsmodelle bei der Entwicklung lassen sich teilweise, die Methoden größtenteils kombinieren. Von besonderem Interesse sind agile Entwicklungsprozesse wie beispielsweise das Extreme Programming: Diese nutzen Synergieeffekte beim gleichzeitigen Einsatz verschiedener Methoden. Extreme Programming (XP) stellt das Lösen von Programmieraufgaben in den Fokus der Softwareentwicklung, während formalisierte Vorgehensweisen eine geringere Bedeutung haben. 

XP nähert sich den Kundenanforderungen in kleinen Schritten und damit durch fortlaufende Iterationen an. Es nutzt mehrere Einzelmethoden für seine Struktur, weil der Kunde anfangs möglicherweise die Anforderungen noch gar nicht komplett kennt. 

Der daraus abgeleitete Entwicklungsprozess ist auch als Scrum bekannt und gilt als anspruchsvoll, weil sich während des Projektes die Prioritäten ändern können. Dementsprechend anspruchsvoll fällt auch auch die prozessbasierte Software Qualitätssicherung aus.

Softwaretests als Schwerpunkt der Software Qualitätssicherung

Die Tests stellen einen Schwerpunkt der Software Qualitätssicherung dar. Für Tests gibt es verschiedene Varianten, Vorgehensmodelle sowie Testarten und -stufen. Testverfahren können beispielsweise sein:

  • Risk Based Testing
  • Keyword Driven Testing
  • Data Driven Testing

Es gibt noch weitere Verfahren. Mit den Tests entsteht Vertrauen in die Software, allerdings sind sie nur eine von mehreren Maßnahmen im Qualitätsmanagement. 

Diese lassen sich grundsätzlich in konstruktive und analytische Maßnahmen unterscheiden. Konstruktive Maßnahmen sind beispielsweise die systematische Projektdefinition inklusive der Projektzieledefinition, die detaillierte Anforderungsanalyse und der Einsatz etablierter Programmierstandards. Analytische Maßnahmen sind etwa die statische Code-Analyse und dynamische Tests. 

Bei Letzteren erfolgt eine praktische Anwendung der Software in verschiedenen Szenarien und anschließend die Überprüfung der Ergebnisse. Aufgrund dieser Vorgehensweise verfügt die Software während einzelner Entwicklungsstufen über eine unterschiedliche Qualität. Diese soll bis zum Abschluss der Entwicklung bis zur vollständigen Zufriedenheit steigen.

Qualitätskriterien für Software

Die Kriterien der Softwarequalität unterscheiden sich bei einzelnen Softwarearten hinsichtlich ihrer Bedeutung. Daher lassen sie sich nicht durchweg einheitlich gewichten. 

Zudem kann es zusätzliche Detailanforderungen geben. Auch dies erfordert unterschiedliche Vorgehensweisen bei der Software Qualitätssicherung. Einige Kriterien gelten grundsätzlich, so die Teilkriterien zur Funktionalität „Richtigkeit“ und „Ordnungsmäßigkeit“. 

Jede Software muss richtig und im Sinne des Anwendungszwecks ordnungsgemäß funktionieren. Abweichungen bei der Gewichtung von Qualitätskriterien benennt die oben zitierte ISO/IEC 9126 wie folgt:

  • Kriterien für Standardsoftware: Hier sind die Kriterien der Übertragbarkeit auf verschiedene Betriebssysteme, der Anpassbarkeit und des standardisierten Funktionsumfangs entscheidend.
  • Kriterien für Systemsoftware: Bei Systemsoftware achtet die Software Qualitätssicherung besonders auf die Effizienz, die Kompatibilität und die Wiederverwendbarkeit.
  • Kriterien für Spielesoftware: Wiederum ist die Effizienz sehr wichtig, wie von den Anforderungen an ruckelfreie Grafikkarten bekannt ist, zudem gilt die einfache Bedienbarkeit als entscheidend.
  • Kriterien für Mobile Software: Die Software für mobile Einsätze bzw. Endgeräte muss die Sicherheit zusätzlicher, nur auf mobilen Geräten erfasster Daten garantieren. Das sind vorrangig Bewegungsdaten des Nutzers. Die Effizienz ist aufgrund der limitierten Akkukapazität relativ wichtig. Zudem entwickelt sich gerade die Mobile Software sehr schnell und erfordert häufige Sicherheitsupdates, was eine hohe Flexibilität verlangt. Diese lässt sich durch Frameworks wie Xamarin oder PhoneGap erreichen, die auf unterschiedlichen Betriebssystemen laufen und sich einfach installieren lassen. Die Entwicklung von Web-Apps sichert ebenfalls die Plattformunabhängigkeit ab. Noch eine Anforderung an Mobile Software ist die Usability auf den teilweise recht kleinen Displays.

Software Qualitätssicherung der Konformität

In allen Kriteriengruppen geht es bei der Software Qualitätssicherung um die Konformität der Software. Diese bedeutet, dass die Software auf unterschiedlichsten Endgeräten und in allen gängigen Betriebssystemen zuverlässig (konform zur Hardware und zum Anwendungszweck) funktioniert. 

Konformität wird ein immer wichtigeres Qualitätskriterium, weil es spätestens seit 2010 einen Trend zur Vereinheitlichung gibt. Dieser bedeutet, dass Spezialsoftware nur noch in Nischen verwendet wird, während bei allen Standardanwendungen – Datenbanknutzung, Rechenprogramme, Text-, Bild-, Video- und Grafikverarbeitung – ein relativ einheitliches Userinterface erwünscht ist. 

Das hat auch damit etwas zu tun, dass die Entwicklungszyklen von Hard- und Software kürzer werden, die User sich aber nicht im Jahrestakt auf neue Benutzeroberflächen einstellen wollen. Außerdem wechseln sie häufiger ihre Marken, so von Windows zu Apple oder von Android zu iOS und umgekehrt. 

Also wünschen sie dabei ein relativ einheitliches Design. Für dieses stellen zumindest die großen Hersteller inzwischen Designrichtlinien bereit, so etwa Apple, Google und Microsoft. Diese sollen die Konformität der Software gewährleisten.            

Interessante Links:

Softwarequalität auf Wikipedia beschrieben

Wie man mit Software Testing, Qualitätssicherung in der Softwareentwicklung betreiben kann

Bilder: Freepik


Der Autor: Sascha Thattil arbeitet bei YUHIRO und hilft Unternehmern und Unternehmen beim einfachen Aufbau von Programmier-Teams in Indien. YUHIRO ist ein deutsch-indisches Unternehmen welches IT Firmen, Agenturen und IT Abteilungen Softwareentwickler bereitstellt.

Schreibe einen Kommentar