Softwarequalität

Definition

  • Ist die Gesamtheit der Merkmale und ihrer Ausprägungen welche die Eignung des Softwareprodukts in Bezug auf festgelegte oder vorausgesetzte Erfordernisse beschreiben Helmut Balzert - Lehrbuch der Software-Technik
  • Haben Bezug zum Marketing und sind teilweise subjektiv
  • Prozessqualität ist Voraussetzung für Produktqualität

Transzendenter Ansatz

  • Qualität existiert a priori und ist allgemein erkennbar, absolut und einzigartig, kann aber dennoch nicht exakt definiert oder gemessen werden → Bewertung durch Erfahrung
  • Für Praxis nicht geeigneter Ansatz

Produktbezogener Ansatz

  • Qualität
    • Ist eine messbare, genau festgelegte Größe zur Beschreibung eines Produktes (was nicht messbar ist, kann nicht verbessert werden)
    • Erlaubt Produkte zu unterscheiden und zu Klassifizieren
    • Ist frei von subjektiven Einflüssen → (Mindest-)Standards
    • Bezieht sich nur auf das Endprodukt, nicht auf den Kunden

Benutzerbezogener Ansatz

  • Qualität wird durch Nutzer eines Produkts bestimmt → subjektive Einschätzung; was die Bedürfnisse des Benutzers besser erfüllt wird als qualitativ hochwertiger empfunden
  • Oft unklare Qualitätsvorstellungen → schwierig Bedürfnisse im Vorfeld zu kennen

Prozessbezogener Ansatz

  • Qualität entsteht durch Erstellung eines Produkts → Prozess muss klar und nachvollziehbar beschrieben sein und kontinuierlich an geänderte Kundenbedürfnisse angepasst werden
  • Bestimmte Qualität kann festgelegt und gefordert werden → Standards & Normen, Metriken

Kosten/Nutzen-bezogener Ansatz

  • Qualität ist was bestimmten Nutzen zu akzeptablen Preis bringt → Produkt, welches die geforderte Qualität zu einem günstigeren Preis erbringt wird bevorzugt

Einzelne Softwarequalitäten

Korrektheit

  • Fachliche Anforderungen beschreiben, welche Leistungen ein Programm erbringen soll
  • Ist umso besser zu beurteilen, je präziser und formaler die Anforderungen beschrieben sind (vgl. auch Prinzip der Gründlichkeit und Formalisierung)
  • Ansätze zur Überprüfung: experimentell (z.B. Testen) und analytisch (z.B. formale Verifikation)

Zuverlässigkeit

  • Ist die Wahrscheinlichkeit, mit der ein Programm über einen Zeitraum fehlerfrei funktioniert
  • Softwarefehler werden häufig stärker toleriert als andere Produktfehler (Auslieferung mit Bugliste)

Robustheit

  • Programm läuft auch in unvorhergesehenen (nicht spezifizierten) Situationen stabil weiter
  • Kompensiert in gewisser Weise fehlende oder inkonsistente fachliche Anforderungen

Performanz und Effizienz

  • Auskunft, wie stark Ressourcen beansprucht werden → Geschwindigkeit, Speicherverbrauch
  • Kann durch Messen, Analyse und Simulation beurteilt werden

Benutzbarkeit

  • Umfasst Software-ergonomische Kriterien wie Aufgabenangemessenheit, Erwartungskonformität, Fehlerrobustheit und weitere

Überprüfbarkeit (Verifizierbarkeit)

  • Gibt Auskunft darüber, in wie weit die Eigenschaften eines Softwaresystems (z.B. Korrektheit & Performance) überprüft werden können
  • Ansätze sind (in-)formale Analysemethoden und Testen
  • Kann bei sicherheitskritischen Anwendungen zum externen Qualitätsmerkmal werden, wenn der Kunde sie explizit fordert

Wartbarkeit

  • Eigentlich Wartung physischer Produkte mit Verschleißteilen
  • Bei Software Unterscheidung in
    • Korrektur = Beseitigung von Fehlern
    • Anpassung = Implementierung neuer oder geänderter Anforderungen
    • Vollendung = Optimierung vorhandener Implementierungen

Wiederverwendbarkeit

  • Mit welchem Aufwand können
    • (Zwischen-)Produkte in geändertem Kontext verwendet werden
    • Prozesse angepasst werden
  • Wirkt positiv auf Korrektheit, Entwicklungskosten und -zeit
  • Wichtiges Kriterium für Reifegrad

Portabilität

  • Gibt Auskunft, ob und wenn ja, mit welchem Aufwand ein Produkt oder Prozess auf anderen Plattformen oder in anderen Umgebungen ausführbar ist, z.B.
    • Hardware, Betriebssystem, Middleware, andere Anwendungssoftware (z.B. Datenbank)
  • War und ist primäres Ziel der MDS; Wiederverwendung ist (noch) sekundäre Ziel

Verständlichkeit

  • Ist Voraussetzung für Wartbarkeit → erst wenn ein Programm verstanden wird, können Änderungen gezielt und mit überschaubaren Konsequenzen durchgeführt werden
  • Extern auch Bestandteil der Benutzbarkeit

Interoperabilität

  • Auskunft, ob und in welchem Maß und mit welchem Aufwand ein Produkt mit anderen kombiniert werden kann
    • Plattformspezifisch
    • Plattformübergreifend

Produktivität

  • Gibt Auskunft über Effizienz und Performance eines Prozesses
  • Abhängig von Methoden, Prozessen, Organisationsformen, Werkzeugen und vor allem damit erreichbaren Automatisierungen
  • Produktivität eines Teams i.d.R. geringer als die Summe der Produktivität der einzelnen Mitglieder

Termintreue

  • In welchem Ausmaß kann ein Produkt zum vereinbarten Termin unter Einhaltung der zuvor genannten Qualitäten ausgeliefert werden
  • In der Softwareentwicklung häufig nicht erreicht → Gründe: Schwierigkeit der Anforderungsermittlung und abstrakter Charakter der Software

Sichtbarkeit

  • Auskunft über Entwicklungsstand & -fortschritt (aktueller Stand der Entwicklung und Zwischenprodukte) → vollständig und korrekt dokumentiert
  • Häufig Statusabfragen von Seiten des Managements und der Auftraggeber

Domänenspezifische Zusammenstellung

  • Qualitätsanforderungen sind abhängig vom Anwendungsgebiet unterschiedlich zu bündeln und zu gewichten
  • Spezifische Zusammenstellungen für Informations-, Echtzeit-, Verteilte ~ und eingebettete Systeme

Qualitätsmodelle

  • nach Balzert auch weitere Unterscheidungen des Qualitätsbegriff mit verschiedenen Unterbegriffe, z.B.
    • Factor-Criteria-Metrics-Models (FCM-Qualitätsmodelle)
    • FURPS – Functionality, Usability, Reliability, Performance, Supportability
    • Goal-Question-Metric-Ansatz (GQM-Ansatz)


Übersicht der Qualitätsanforderungen

Kontext

Weiterführende Beiträge


Navigation

Alphabetischer Index
Akronyme