Inhaltsverzeichnis
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
- Vergleich auch Qualitätsmerkmale nach ISO/IEC 9126 (DIN 66272)
- Klassifikation nach 2 Dimensionen
- Extern (Benutzer) vs. Intern (Entwickler)
- Produkt vs. Prozess
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)
