Qualität, funktionale und nichtfunktionale Anforderungen in der Software-Entwicklung

Nutzer und Kunden wünschen sich hochqualitative Software, mit der sie ihre Ziele effektiv und effizient erreichen. „Reibungslos“ soll sie funktionieren, möglichst „schnell“, möglichst „bugfrei“. Doch diese naheliegenden, aber sehr allgemeinen Anforderungen sind recht subjektiv und zunächst nichts, womit ein Entwicklungsteam arbeiten kann. Es muss konkreter und spezifischer sein. Was bedeutet also Qualität im Hinblick auf die Entwicklung von Software? Das wollen wir hier einmal beleuchten.

Was bedeutet Qualität „offiziell“?

Nähern wir uns dem Thema zunächst von der ganz offiziellen Warte aus. Was sollte uns hier weiterhelfen können, wenn nicht die internationalen Standards?

„Unter Software-Qualität versteht man die Gesamtheit der Merkmale und Merkmalswerte eines Software-Produkts, die sich auf dessen Eignung beziehen, festgelegte oder vorausgesetzte Erfordernisse zu erfüllen“
DIN EN ISO 8402:1995-08

„Der Grad, in dem ein Satz inhärenter Merkmale eines Objekts Anforderungen erfüllt“
DIN EN ISO 9000 2015

Funktionale und nichtfunktionale Anforderungen

In der Software-Entwicklung haben wir es in puncto Qualität mit funktionalen und nichtfunktionalen Anforderungen zu tun:

  • Funktionale Anforderungen legen fest, was das System/Produkt tun soll. (Beispiel: Das Shop-System soll einem Kunden seine getätigten Einkäufe in einer Übersicht darstellen können.)
  • Nichtfunktionale Anforderungen gehen über die funktionalen Anforderungen hinaus und beschreiben, wie gut ein System/Produkt eine Funktion erfüllt bzw. eine Leistung erbringt. (Beispiel: Das System darf nicht länger als drei Sekunden benötigen, um die Einkaufsübersicht darzustellen.) Solche nichtfunktionalen Anforderungen werden manchmal auch als Randbedingungen oder Qualitätseigenschaften bezeichnet.

Qualität und Qualitätskosten

Qualität braucht Zeit und Ressourcen. Daher ist Qualität kein Selbstzweck, sondern basiert auf der wirtschaftlichen Abwägung von Nutzen und Kosten. Solche Qualitätskosten sind wie folgt einteilbar:

  • Fehlerverhütungskosten: qualitätssteigernde Maßnahmen, Kontrollen, Planungen, Audits etc.
  • Fehlerkosten: Kundenverlust, Reputation, Vertragsstrafen, Abweichungen

Diese Abwägung bedeutet letztlich, dass aufgrund ökonomischer Zwänge ein gewisses Maß an Fehlern hinnehmbar ist. (Bekanntlich wird diese Faustregel im Software-Bereich bisweilen auch überreizt, siehe Bananen-Software. Entsprechend hoch sind dann oft die Fehlerkosten.)

Ausnahmen bilden hochkritische Systeme wie beispielsweise im medizinischen Bereich oder in der Flugsicherung, in denen Fehler aus naheliegenden Gründen nicht tolerierbar sind.

Klassifikation qualitativer Merkmale

Der Standard ISO-25010/9126 bietet eine Klassifikation qualitativer Merkmale an, die als Orientierungshilfe dienen kann:

Software-Qualität

Konkurrierende qualitative Anforderungen

Oft lassen sich in einem Software-Produkt nicht alle Qualitätsanforderungen gleichermaßen erfüllen. Vielmehr konkurrieren sie miteinander. In diesem Fall muss das Entwicklungsteam sie gegeneinander abgewägen und priorisieren. Hier sind zwei klassische Beispiele dafür:

  • Sicherheit versus Performance: Um die Sicherheit der Anwendung zu erhöhen, verwenden wir einen teureren Verschlüsselungsalgorithmus, der dafür die Response-Zeit der Services erhöht.
  • Usability versus Sicherheit: Die Eingabe eines 30-stelligen Passworts erhöht die Sicherheit, beeinträchtigt aber das Nutzererlebnis.

Qualitätsszenarien

Zur Spezifizierung qualitativer Anforderungen können wir sogenannte Qualitätsszenarien heranziehen, die auch als Grundlage spezifischer Testgattungen dienen können.

Das folgende Template kann zur Definition von Qualitätsszenarien verwendet werden. Es sollte je nach Bedarfsfall in der angemessenen Granularitätsstufe zur Anwendung kommen:

 Quelle -> Umgebung -> Stimulus -> Artefakt -> Response -> Metrik

Beispiel: Benutzer initiieren unter normalen Bedingungen 20.000 Transaktionen, diese werden mit einer durchschnittlichen Latenz von 1.5 Sekunden bearbeitet.

Goal Question Metric

Eine systematische Vorgehensweise zur Erstellung spezifischer Qualitätsmodelle bietet der Goal Question Metric-Ansatz, der sich als Baumstruktur darstellen lässt. Die Bestandteile des Baums repräsentieren dabei die Ziele, Fragen und Metriken.

  • Wurzel: das Ziel (Goal) -> Was soll durch die Messung erreicht werden?
  • Knoten: Fragen (Questions) -> Was soll gemessen werden? / Welche Fragen soll die Messung beantworten?
  • Blätter: Metriken (Metric) -> Welche Metriken können die notwendigen Eigenschaften beschreiben?

Software-Qualität

Metriken

Die Metriken, um die Eigenschaften zu beschreiben, sind vielfältig. Diese Wortwolke zeigt eine Auswahl:

Software-Qualität

Und das sind längst nicht alle.

Methoden und Werkzeuge

Für alle genannten Aspekte stehen dem Software-Team leistungsfähige Tools und Konzepte zur Verfügung. Hier sind einige Beispiele:

  • Wartbarkeit/Portierbarkeit: SonarQube, Bewertungsverfahren (ATAM, Audits)
  • Sicherheit: OWASP CVE Scanner, Jess Security Scanner, SonarQube
  • Verlässlichkeit: Stresstests, Regressionstests
  • Usability: A/B-Tests, WAI/AAA-Prüfung, Usability Inspection (Guideline-based Review), Umfragen
  • Performance: Lasttests, Performance-Tests

Ihr Partner für individuelle Software-Projekte

Planen Sie bereits ein konkretes Software-Projekt? Oder gibt es bestimmte Prozesse in Ihrem Unternehmen, die Ihnen schon lange Kopfzerbrechen bereiten? Bremst ein System oder eine Schnittstelle Ihre Mitarbeiter auf der einen oder Ihre Kunden auf der anderen Seite aus? Dann sprechen Sie mit uns darüber! Wir freuen uns darauf, gemeinsam eine individuelle Lösung zu entwickeln – bei höchster Qualität und voller Kostenkontrolle.

Weiterführende Infos

Code-Qualität optimieren mit SonarQube und Bamboo
Analyse einer Java-Anwendung mit Java Mission Control und Flight Recorder
Continuous Delivery in der Praxis: Deployment auf Knopfdruck und Release-Verwaltung mit Bamboo
Architekturregeln mit Java und ArchUnit sicherstellen