„Unter Softwarequalität versteht man die Gesamtheit der Merkmale und Merkmalswerte eines Softwareprodukts, die sich auf dessen Eignung beziehen, festgelegte oder vorausgesetzte Erfordernisse zu erfüllen“ (Ist/Soll).[1]
Qualitätsmodelle
Konzept
Der Begriff der Softwarequalität selbst ist nicht operabel, d. h. in der Praxis nicht direkt anwendbar.[1] Deshalb existieren Qualitätsmodelle, die den Begriff konkretisieren und durch eine weitere Detaillierung operationalisieren. Dadurch entsteht ein Baum (oder ein Netz) von Begriffen und Unterbegriffen.
Die Qualitätsmerkmale tragen im Englischen die Bezeichnung factor, ein Qualitätsteilmerkmal heißt criterion und die Qualitätsindikatoren metrics. Deswegen erscheinen derartige Qualitätsmodelle in der Literatur auch als „FCM-Modelle“ (z. B. FURPS, Boehm u. a. 1978, DGQ-Modell 1986, McCall u. a. 1977.[2]) Bei den Blattknoten im Baum des Qualitätmodells, den Qualitätsindikatoren, sollte es sich um beobachtbare oder messbare Sachverhalte handeln. Hier können beispielsweise Softwaremetriken zum Einsatz kommen.
Beispiel ISO/IEC 9126
Qualitätsmodelle existieren zum Beispiel in der Form des ISO-Standards ISO/IEC 9126. Diese Norm definiert die in der nebenstehenden Grafik dargestellten Qualitätskriterien für Software in zweistufiger Struktur. Danach wird deutlich, dass unter Softwarequalität mehr als nur Fehlerfreiheit (die im Wesentlichen dem Kriterium Funktionalität zuordenbar ist) verstanden wird.
Die Qualitätsmerkmale benennen unterschiedliche Eigenschaften, die die Software aufweisen soll. Dies sind auf oberster Ebene:[3]
- funktionale Eigenschaften, „die grundlegenden Eigenschaften zu den Funktionen der Software“ (was sie funktional leisten soll und wie),
- nicht-funktionale Eigenschaften, die „das Betriebsverhalten des Softwareprodukts im täglichen Einsatz kennzeichnen.“
Während bei den nicht-funktionalen Eigenschaften zur Zuverlässigkeit, Benutzbarkeit (Usability) und Effizienz die Anforderungen einzuordnen sind, die das Softwareprodukt bei seinem Betrieb erfüllen soll, sind die Qualitätskriterien zu Änderbarkeit (Wartbarkeit) und Übertragbarkeit auf die interne Beschaffenheit der Software (i. W. des Quelltextes) ausgerichtet, die ggf. erforderliche Anpassungsmaßnahmen ermöglichen/vereinfachen soll.
Diese Kriterien stellen einen Rahmen dar, der für einzelne Softwareprodukte in individuellen Spezifikationen konkretisiert werden kann, um in der Softwareentwicklung berücksichtigt zu werden.
Sicherstellen der Softwarequalität
Für die Sicherstellung, dass die Software bezüglich der verschiedenen Qualitätsmerkmale den Anforderungen entspricht (= Qualitätssicherung, kurz QS), existieren verschiedene Vorgehensmodelle und -methoden.
Manche Modelle lassen sich eher dem Konzept der Prozessqualität zuordnen. Dieses geht davon aus, dass ein qualitativ hochwertiger Prozess der Produkterstellung die Entstehung von qualitativ hochwertigen Produkten begünstigt. Deshalb stellen die nachfolgenden Modelle Qualitätsanforderungen an den Prozess, in dem die Software entwickelt wird.
Es existieren allerdings auch Vorgehensmodelle, wie der Goal Question Metric-Ansatz, die zu individuellen Qualitätsmodellen führen.
Einige Modelle:
- Organisatorische Qualitätsmodelle, zum Beispiel das Capability Maturity Model (CMM) oder Automotive SPICE
- Prozessmodelle, wie zum Beispiel
- Capability Maturity Model Integration
- der Rational Unified Process (RUP)
- Agile Methoden
- das V-Modell
- das V²-Modell, auch W-Modell genannt
- Hardware in the Loop (HIL)
Einige Methoden:
Softwaretests, Refaktorisierung und Code Reviews gehen direkt auf die Produktqualität ein. Das konkrete Produkt wird untersucht und bearbeitet, damit es die gestellten Qualitätsanforderungen möglichst gut erfüllt.
Die Modelle lassen sich teils, die Methoden größtenteils miteinander kombinieren. Interessant sind die Modelle der agilen Prozesse wie das Extreme Programming insbesondere deshalb, weil sie Synergieeffekte des gleichzeitigen Einsatzes verschiedener Methoden nutzen.
QS-Schwerpunkt Softwaretest
Das Testen ist ein für die Softwarequalität bedeutender Abschnitt bei der Entwicklung von Software. Dabei wird die Qualität der erstellten oder geänderten/weiterentwickelten Software mit unterschiedlichen Verfahren (z. B. Keyword-Driven Testing, risk based Testing, data driven Testing, …), Vorgehensmodellen, Testarten, Teststufen usw. vor der Übergabe zur tatsächlichen Nutzung überprüft. Die Literatur (hier[4]) nennt dies „Vertrauen in die Qualität der Software schaffen“ und erläutert: „Tests sind nicht die einzige Maßnahme im Qualitätsmanagement der Softwareentwicklung, aber oft die letztmögliche; Qualität kann nicht 'eingetestet' werden.“.
Demnach wird bezüglich der Maßnahmen zur Qualitätssicherung unterschieden zwischen konstruktiven und analytischen Maßnahmen (siehe Grafik).
- Zu den konstruktiven Maßnahmen gehören zum Beispiel Disziplinen wie eine systematische Projektdefinition und Projektzieledefinition sowie eine detaillierte (und von den Projekt-Auftraggebern verbindlich verabschiedete) Anforderungsanalyse, die Benutzung etablierter bzw. festgelegter Programmierstandards usw.
- Die analytischen Maßnahmen lassen sich unterteilen in
- statische Maßnahmen (siehe statische Code-Analyse wie Code Reviews), in denen lediglich der Code der erzeugten Anwendung überprüft wird, ohne dass die Anwendung tatsächlich ausgeführt wird. Je nach Art der Maßnahme erfolgt die Überprüfung zu unterschiedlichen Zeitpunkten, z. B. unmittelbar bei der Code-Entwicklung (siehe Paarprogrammierung) oder erst vor der Freigabe für Benutzertests.
- dynamische Tests, in denen die erzeugte Anwendung unter unterschiedlichsten Konstellationen (siehe auch Testfall) tatsächlich ausgeführt wird und die erzeugten Ergebnisse überprüft werden.
Die Qualität der Software befindet sich somit zu unterschiedlichen Zeitpunkten ihrer Entwicklung in unterschiedlichen Zuständen und soll bei ihrer tatsächlichen produktiven Verwendung allen definierten Anforderungen/Kriterien entsprechen.
Softwarequalität mobiler Applikationen
Bei mobilen Applikationen muss man darauf achten, dass die unterschiedlichen Metriken anders gewertet werden als bei der klassischen Software. Außerdem kommen zu den oben angeführten Metriken neue hinzu, wie zum Beispiel Design.
Siehe auch
Literatur
- Ralf Kneuper, Ernest Wallmüller (Hrsg.): CMMI in der Praxis. Fallstudien zur Verbesserung der Entwicklungsprozesse mit CMMI. dpunkt, Heidelberg 2009, ISBN 978-3-89864-571-3.
- Ernest Wallmüller: Software–Qualitätsmanagement in der Praxis. Software-Qualität durch Führung und Verbesserung von Software-Prozessen. 2. Auflage. Hanser, München u. a. 2001, ISBN 3-446-21367-8.
Weblinks
Einzelnachweise
- ↑ a b Helmut Balzert: Lehrbuch der Softwaretechnik. Band 2: Softwaremanagement, Software-Qualitätssicherung, Unternehmensmodellierung. Spektrum Akademischer Verlag, Heidelberg 1998, ISBN 3-8274-0065-1, S. 257.
- ↑ Jim A. McCall, Paul K. Richards, Gene F. Walters: Factors in software quality. Vols I–III. Rome Air Development Centre, Griffiss Air Force Base New York 1977 (Band I, PDF).
- ↑ Torsten Cleff: Basiswissen Testen von Software. Herdecke, Witten 2010, ISBN 978-3-86834-012-9, [1] S. 68.
- ↑ Martin Pol, Tim Koomen, Andreas Spillner: Management und Optimierung des Testprozesses. Ein praktischer Leitfaden für erfolgreiches Testen von Software mit TPI und TMap. dpunkt, Heidelberg 2002, ISBN 3-89864-156-2.