Softwarequalität Grundlagen
Softwarequalität ist weit mehr als das Fehlen von Bugs. Sie beschreibt, wie gut eine Software die Anforderungen ihrer Nutzer erfüllt und wie effizient sie über ihren Lebenszyklus hinweg gewartet werden kann. Dieser Artikel erklärt die Grundlagen der Softwarequalität und zeigt, wie Du sie in der täglichen Entwicklung messbar umsetzt.
Gerade in den Zeiten von Vibecoding erstellt man so schnell Code, dass man zu selten noch auf die Qualität achtet.
AP1 und AP2 Themen, Du solltest die Iso25010 bereits in der AP1 kennen und später, wenn Dein Projekt startet, auch Deine funktionalen und nicht funktionalen Anfoderungen kennen. In der Regel kann man dies sehr gut lernen und anwenden. Zudem ist noch der Unterschied zwischen ISO 9126 und ISO 25010 wichtig, also ALT gegen NEU, am Ende ist es nur eine Art Erweiterung.
In a Nutshell : Softwarequalität - Anwendungsentwicklung
- Softwarequalität umfasst funktionale und nicht-funktionale Anforderungen.
- ISO 25010 definiert acht Hauptmerkmale: Functional Suitability, Performance Efficiency, Compatibility, Usability, Reliability, Security, Maintainability, Portability.
- Hohe Qualität reduziert Fehlerkosten, beschleunigt die Entwicklung und steigert die Zufriedenheit der Nutzer.
- Qualität entsteht durch Tests, Clean Code, klare Architektur, Reviews und kontinuierliche Metriken.
Softwarequalität misst also, ob ein Programm das tut, was es soll, und wie gut es das tut. Sie ist kein binärer Zustand, sondern ein Verhältnis von Eigenschaften, die je nach Kontext unterschiedlich gewichtet werden. Eine medizinische Anwendung benötigt beispielsweise hohe Zuverlässigkeit und Sicherheit, während eine Streaming-Plattform primär Performance Efficiency und Skalierbarkeit braucht.
Die wichtigsten Dimensionen lassen sich in drei Gruppen einteilen:
- Funktionale Qualität: Korrektheit, Vollständigkeit, Angemessenheit der Funktionen.
- Nicht-funktionale Qualität: Performance, Sicherheit, Zuverlässigkeit, Benutzbarkeit.
- Strukturelle Qualität: Wartbarkeit, Testbarkeit, Erweiterbarkeit, Code-Qualität.
Kernkomponentender Softwarequalität
- Funktionale Korrektheit: Die Software erfüllt die spezifizierten Anforderungen fehlerfrei.
- Zuverlässigkeit: System bleibt unter Last und bei Fehlern stabil.
- Performance: Reaktionszeiten, Durchsatz und Ressourceneffizienz liegen im Zielbereich.
- Sicherheit: Schutz vor unautorisiertem Zugriff, Datenlecks und Manipulation.
- Wartbarkeit: Code ist lesbar, modular und einfach änderbar.
- Testbarkeit: Komponenten lassen sich isoliert und automatisiert testen.
- Benutzbarkeit: Nutzer können die Software intuitiv und effizient bedienen.
- Kompatibilität: Zusammenspiel mit anderen Systemen, Browsern und Geräten.
Praxisbeispiel: Qualitätsziele für eine Web-API
Ziel: Ein Bestell-API für einen Online-Shop
Functional Suitability:
- Alle Use-Case-Endpunkte sind vorhanden und korrekt dokumentiert.
- Preis, Steuer und Rabatt werden in 100 Prozent der Fälle richtig berechnet.
Performance Efficiency:
- 95-Perzentil der Antwortzeit unter 200 Millisekunden bei 100 parallelen Nutzern.
- Durchsatz von mindestens 500 Requests pro Sekunde ohne SLA-Bruch.
Reliability:
- Verfügbarkeit von 99,9 Prozent monatlich.
- MTTR unter 30 Minuten bei Ausfällen.
Security:
- Transportverschlüsselung mit TLS 1.3.
- Authentifizierung über OIDC mit MFA für Administratoren.
- Unveränderliches Audit-Log für alle kritischen Änderungen.
Maintainability:
- Code-Coverage von mindestens 70 Prozent bei Unit Tests.
- Keine zyklischen Abhängigkeiten zwischen Modulen.
- Feature Flags ermöglichen kontrollierte Rollouts.
Vorteile und Nachteile
Vorteile
- Niedrigere Gesamtkosten: Fehler früh zu finden ist deutlich günstiger als nachträgliche Korrekturen im Betrieb.
- Höhere Entwicklungsgeschwindigkeit: Sauberer Code und gute Tests ermöglichen schnellere Iterationen.
- Bessere Kundenzufriedenheit: Stabile, performante und intuitive Software wird gerne genutzt.
- Geringeres Risiko: Sicherheitslücken und Ausfälle lassen sich proaktiv minimieren.
Nachteile
- Höherer initialer Aufwand: Tests, Reviews und Metriken kosten Zeit zu Projektbeginn.
- Zielkonflikte: Maximale Sicherheit kann Performance reduzieren, maximale Flexibilität kann Komplexität erhöhen.
- Messaufwand: Qualität muss definiert, gemessen und überwacht werden, um wirksam zu sein.
Prüfungsrelevante Stichpunkte
- Definition von Softwarequalität nach ISO 25010.
- Unterscheidung zwischen funktionalen und nicht-funktionalen Anforderungen.
- Acht Hauptmerkmale der ISO 25010 und ihre Bedeutung.
- Zusammenhang zwischen Qualität, Tests und Wartbarkeit.
- Kosten für Fehlerbehebung in verschiedenen Phasen des Lebenszyklus.
- Bedeutung von Clean Code, Reviews und statischer Analyse.
Typische Prüfungsfragen (mit Kurzantwort)
-
Was ist Softwarequalität? Das Maß, in dem Software festgelegte und implizite Anforderungen erfüllt.
-
Nenne drei nicht-funktionale Qualitätsmerkmale. Performance, Sicherheit, Zuverlässigkeit.
-
Was bedeutet Wartbarkeit? Die Fähigkeit, Software mit vertretbarem Aufwand anzupassen, zu korrigieren oder zu erweitern.
-
Warum ist Testbarkeit wichtig? Sie ermöglicht automatisierte, wiederholbare Tests und frühes Finden von Fehlern.
-
Was ist der Unterschied zwischen ISO 9126 und ISO 25010? ISO 25010 erweitert die sechs Merkmale von ISO 9126 auf acht und ergänzt Sicherheit sowie Kompatibilität.
Weiter im Softwarequalität Lernpfad
Der nächste Artikel im Softwarequalität Lernpfad behandelt Softwarequalität und ISO 25010 — die acht Qualitätsmerkmale nach dem internationalen Standard.
Wichtigste Quellen
- https://iso25000.com
- https://www.iso.org/standard/35733.html
- https://en.wikipedia.org/wiki/ISO/IEC_25010



