Softwarequalität

aus Wikipedia, der freien Enzyklopädie

„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]

Definitionen von IEEE

Qualitätsmodelle

Datei:Fcm-tree.png
Qualitätsmodell (Metaebene)

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

[[Hilfe:Cache|Fehler beim Thumbnail-Erstellen]]:
Die Qualitätskriterien für Software nach ISO 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.

Auszeichnungen & Preise

In Deutschland wird seit 2021 der Deutsche Preis für Software-Qualität (DPSQ) zusammen durch die ASQF, die Gesellschaft für Informatik Fachgruppe TAV und das German Testing Board vergeben.[4][5]

Die IEEE Computer Society und das Software Engineering Institute (SEI) verleihen in den USA den Watts S. Humphrey Software Quality Award für "herausragende Leistungen bei der Verbesserung der Fähigkeit einer Organisation, hochwertige softwareabhängige Systeme zu erstellen und weiterzuentwickeln".[6]

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.

Modelle und Methoden

Einige Modelle:

Zur Bewertung der Umsetzung von Unternehmensprozessen gibt es den ISO/IEC 15504 (auch SPICE genannt) bzw. domänenspezifische Varianten davon (wie z. B. Automotive SPICE für Entwicklungsprozesse von Steuergerätelieferanten)

Einige Methoden:

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

Datei:Test ganzheitlich.png
Qualitäts- und Testmethoden im Projektverlauf

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[7]) 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 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.

Softwaretyp-spezifische Qualitätsmerkmale

Die Qualitätskriterien für Software können sich je nach Softwaretyp in ihrer Bedeutung unterscheiden,[8] sie können nicht immer einheitlich bewertet/gewichtet werden,[9] auch können zusätzliche Detailanforderungen entstehen. Dadurch wird bei der Herstellung und auch bei der Qualitätssicherung zum Teil eine andere Vorgehensweise erforderlich oder möglich.

Während beispielsweise Kriterien wie Richtigkeit und Ordnungsmäßigkeit (Teilkriterien zu Funktionalität) im Allgemeinen für alle Softwaretypen gleiche oder ähnliche Bedeutung/Gewichtung aufweisen, kann dies in anderen Kriterien typabhängig anders sein. Solche Abweichungen/Besonderheiten in den Qualitätskriterien werden nachfolgend beispielhaft und unter Bezugnahme auf die Qualitätskriterien für Software gemäß ISO/IEC 9126 beschrieben:

Standardsoftware

Für Software dieses Typs kommt, um bei unterschiedlichen Anwendern einsetzbar zu sein, insbesondere dem Kriterium Übertragbarkeit (Anpassbarkeit) eine wesentliche Bedeutung zu. Der Funktionsumfang der Standardsoftware kann damit (durch Parametrisierung) an den vom Unternehmen benötigten Funktionsumfang angepasst werden.[10]

Systemsoftware

Kriterien zur Effizienz (Verbrauchsverhalten, Zeitverhalten) können für diesen Softwaretyp besonders wichtig sein; ebenso die Wiederverwendbarkeit und die Kompatibilität,[9] (= Lauffähigkeit in unterschiedlichen Systemumgebungen).

Spielesoftware

Hier kommt der Effizienz besondere Bedeutung zu, beispielsweise bei der optimalen Nutzung von Grafikkarten („ruckelfreie“ Bildbewegungen). Auch gelten hier besondere Anforderungen bezüglich der Bedienbarkeit (wie Einheitlichkeit, Einfachheit).

Software für mobile Geräte

Funktionalität

Zum Teilkriterium Sicherheit:[11] Im Vergleich zu Anwendungen auf stationären Rechnern fallen als sensitive Daten zusätzlich Bewegungsprofile des Nutzers an.[12]

Effizienz

Im Einzelkriterium Verbrauchsverhalten kommt der Beanspruchung der Prozessorleistung, des Arbeitsspeichers und des online-Datenvolumens besondere Bedeutung zu. Geringer Akku-Verbrauch kann eine möglichst lange Laufzeit gewährleisten.

Änderbarkeit

Wesentlicher Unterschied zu Arbeitsplatzrechnern ist die Vielfalt der Plattformen und deren schnellere Fortentwicklung,[13] die einfaches/schnelles Ändern der Software erfordert.

Erreicht werden kann diese Flexibilität durch den Einsatz von Frameworks (wie PhoneGap und Xamarin) auf unterschiedliche Betriebssystemen und -Umgebungen eingesetzt und einfach installiert (Installierbarkeit) werden können.[14][15] Eine andere Option, um Plattformunabhängigkeit zu erreichen, sind sogenannte Web-Apps, also Applikationen, die in einem Webbrowser angezeigt und bedient werden.

Übertragbarkeit

Merkmal mobiler Geräte sind unterschiedlich kleine Anzeigeflächen (von 1 bis 10 Zoll). Anwendungen müssen auf kleinen Anzeigen bedienbar sein und größere Anzeigen sinnvoll nutzen können. Der Wechsel zwischen Hoch- und Querformat ist auf mobilen Plattformen häufig, auf Arbeitsplatzrechnern die Ausnahme.

Meist ist keine echte Tastatur verfügbar, die Tastatureingabe ist langsamer, es sind weniger Tasten und Tastenkombinationen sind unüblich. Andererseits sind oft alternative Eingabemöglichkeiten vorhanden, die mit Funktionen hinterlegt sein wollen.

Konformität

Zu diesem Qualitätskriterium – das in allen o. g. Kriteriengruppen zutrifft – stellen für das Beispiel Benutzbarkeit/Bedienbarkeit die von Herstellern mobiler Systeme bereitgestellten Designrichtlinien/Vorgaben für einen Großteil von Anwendungen eine gute Basis für das Design dar. Beispiele siehe Google[16], Apple[17] und Microsoft[18]

Literatur

  • Witold Suryn: Software quality engineering: a practitioner’s approach. IEEE Computer Society, Wiley, Hoboken, N.J 2014, ISBN 978-1-118-59249-6 (englisch).
  • Kurt Schneider: Abenteuer Softwarequalität: Grundlagen und Verfahren für Qualitätssicherung und Qualitätsmanagement. 2., überarb. und erw. Auflage. dpunkt-Verl, Heidelberg 2012, ISBN 978-3-89864-784-7.
  • Ernest Wallmüller: Software Quality Engineering: ein Leitfaden für bessere Software-Qualität. 3. Auflage. Hanser, München 2011, ISBN 978-3-446-40405-2.
  • Ralf Kneuper, Ernest Wallmüller (Hrsg.): CMMI in der Praxis: Fallstudien zur Verbesserung der Entwicklungsprozesse mit CMMI. 1. Auflage. dpunkt-Verl, Heidelberg 2009, ISBN 978-3-89864-571-3.

Weblinks

Einzelnachweise

  1. 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.
  2. 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).
  3. Torsten Cleff: Basiswissen Testen von Software. Herdecke, Witten 2010, ISBN 978-3-86834-012-9, [1] S. 68.
  4. Deutscher Preis für Software-Qualität. Abgerufen am 3. August 2022.
  5. Barbara Buthmann: Deutscher Preis für Software-Qualität 2022. In: S&N Invent. 20. Juni 2022, abgerufen am 3. August 2022 (deutsch).
  6. Watts S. Humphrey Software Process Achievement Award. Abgerufen am 3. August 2022.
  7. 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.
  8. Neue Testtechniken für die Next-Generation-Apps. In: entwickler.de. 2. August 2013, abgerufen am 11. August 2015.
  9. a b Boles, 2.1 Grundlagen der Softwareentwicklung[2]
  10. Enzyklopädie der Wirtschaftsinformatik [3] Parametrisierung von Standardsoftware
  11. 14:00-17:00: ISO/IEC 25010:2011. Abgerufen am 1. September 2020 (englisch).
  12. Mobile Apps sammeln mehr Daten als die Polizei. Abgerufen am 31. Juli 2015.
  13. https://www.pagerduty.com/blog/mobile-monitoring-reliability/
  14. http://www.imn.htwk-leipzig.de/~weicker/pmwiki/pmwiki.php/Main/%DCbertragbarkeit@1@2Vorlage:Toter Link/www.imn.htwk-leipzig.de (Seite nicht mehr abrufbar, Suche in Webarchiven Info: Der Link wurde automatisch als defekt markiert. Bitte prüfe den Link gemäß Anleitung und entferne dann diesen Hinweis.
  15. (Memento des Originals vom 21. April 2017 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/iso25010.info
  16. Google material-design [4]
  17. Apple Mobile HIG [5]
  18. Microsoft design [6]