Was ist Softwarequalität?
Softwarequalität ist die Gesamtheit der Merkmale und Merkmalswerte eines Software-Produkts, die sich auf dessen Eignung beziehen, festgelegte oder vorausgesetzte Erfordernisse (Anforderungen) zu erfüllen.
Softwarequalität ist ein Maß, wie positiv Software von Stakeholdern (extern) und Entwicklern (intern) wahrgenommen wird
Was führt zu, Niedrige Softwarequalität?
Niedrige Softwarequalität führt zum Scheitern von Projekten!
Nennen Sie mit Erklärung 4 von Externe Softwarequalität?
Faktoren, die beeinflussen, wie Stakeholder Software sehen
• Richtigkeit – verhält sich wie Stakeholder erwarten
• Responsiveness – Reaktionszeit auf Nutzereingaben
• Benutzbarkeit – Leichtigkeit des Erlernens und Nutzens
• Funktionalität – hat von Nutzern erwartete Features
• Interoperabilität – hält sich an Standards, arbeitet mit anderen Systemen zusammen
• Portabilität – in verschiedenen Umgebungen lauffähig
• Effizienz – geringe nötige Rechenleistung, Finanzmittel, etc.
• Wiederverwendbarkeit – von Komponenten in anderen Projekten
Beschreiben Sie • Richtigkeit –
• Richtigkeit – verhält sich wie Stakeholder erwarten
Externe Softwarequalität
Beschreiben Sie • Responsiveness
• Responsiveness – Reaktionszeit auf Nutzereingaben
Externe Softwarequalität
Beschreiben Sie Benutzbarkeit
• Benutzbarkeit – Leichtigkeit des Erlernens und Nutzens
Externe Softwarequalität
Beschreiben Sie • Funktionalität
• Funktionalität – hat von Nutzern erwartete Features
Externe Softwarequalität
Beschreiben Sie Interoperabilität
• Interoperabilität – hält sich an Standards, arbeitet mit anderen Systemen zusammen
Externe Softwarequalität
Beschreiben Sie • Portabilität
• Portabilität – in verschiedenen Umgebungen lauffähig
Externe Softwarequalität
Beschreiben Sie • Effizienz
• Effizienz – geringe nötige Rechenleistung, Finanzmittel, etc.
• Externe Softwarequalität
Beschreiben Sie Wiederverwendbarkeit
Wiederverwendbarkeit – von Komponenten in anderen Projekten
Externe Softwarequalität
Nennen Sie mit Erklärung 4 von Interne Softwarequalität
Faktoren, die beeinflussen, wie Entwickler Software sehen
• Erweiterbarkeit – Leichtigkeit, Feature hinzuzufügen oder zu ändern
• Wartbarkeit – z.B. Leichtigkeit, Software auf neue Versionen von
Abhängigkeiten anzupassen
• Verständlichkeit – der Software für Entwickler
◦ Neue Entwickler verstehen den Code schnell
◦ Finden von Komponenten, die bestimmte Aufgaben erfüllen
• Enjoyability – Wie gern Entwickler an der Software arbeiten
◦ Leichter, Entwickler für die Software zu finden
◦ Motiviertere und produktivere Entwickler
Beschreiben Sie • Erweiterbarkeit
• Erweiterbarkeit – Leichtigkeit, Feature hinzuzufügen oder zu ändern
Interne Softwarequalität
Beschreiben Sie • Wartbarkeit
• Wartbarkeit – z.B. Leichtigkeit, Software auf neue Versionen von
Abhängigkeiten anzupassen
Interne Softwarequalität
Beschreiben Sie • Verständlichkeit
• Verständlichkeit – der Software für Entwickler
◦ Neue Entwickler verstehen den Code schnell
◦ Finden von Komponenten, die bestimmte Aufgaben erfüllen
Interne Softwarequalität
Beschreiben Sie • Enjoyability
• Enjoyability – Wie gern Entwickler an der Software arbeiten
◦ Leichter, Entwickler für die Software zu finden
◦ Motiviertere und produktivere Entwickler
Interne Softwarequalität
Vergleichen Sie zwischen Verifikation und Validierung
Verifikation: wird die Software richtig entwickelt?
Validierung: wird die richtige Software entwickelt?
Achtung: uneinheitliche Verwendung
• Verifikation oft mit formaler Verifikation gleichgesetzt
• Validierung und Verifikation oft gleichgesetzt
Beschreiben Sie Qualitätsmanagement (QM)
Qualitätsmanagement (QM) umfasst alle aufeinander abgestimmten
Tätigkeiten einer Organisation bezüglich Qualität:
• Qualitätsplanung („quality planning“),
• Qualitätssteuerung („quality control“),
• Qualitätsverbesserung („quality improvement“),
• Qualitätssicherung („quality assurance“)
Beschreiben Sie Qualitätsplanung
Qualitätsplanung (quality planning) ist der Teil des QMs, der auf das
Festlegen der Qualitätsziele und der notwendigen Ausführungsprozesse sowie der zugehörigen Ressourcen zur Erfüllung der Qualitätsziele gerichtet ist.
Aufgaben umfassen
• Festlegung von Qualitätsanforderungen an den Prozess und das Produkt in überprüfbarer Form (Qualitätsziele):
◦ Auswahl/Entwicklung eines Qualitätsmodells (z.B. ISO 25000)
◦ Festlegung von Soll-Werten
• Maßnahmen zur Q-Steuerung und Q-Sicherung festlegen
• Erstellen von QM-Plänen
Beschreiben Sie Qualitätssteuerung
Qualitätssteuerung (quality control) umfasst den Teil des QMs, der auf die Erfüllung von Qualitätsanforderungen gerichtet ist.
Aufgaben umfassen
• Durchführung konstruktiver Maßnahmen (präventiv) zur Erfüllung der
geplanten Qualität
• Durchführung analytischer Maßnahmen zur Überprüfung der geplanten Qualität
◦ (und Einleitungen geeigneter Maßnahmen bei einer Abweichung von der geforderten Qualität, z.B. Überleitung zur Entwicklung zur Fehlerkorrektur)
Beschreiben Sie Qualitätsverbesserung
Qualitätsverbesserung (quality improvement) ist der Teil des QMs, der auf die Erhöhung der Fähigkeit zur Erfüllung von Qualitätsanforderungen gerichtet ist.
Aufgaben umfassen
• Modifikationen der Q-Planung und Q-Lenkung auf Basis von Messungen, Auswertung von Fehlerursachen, ...
• Prozessverbesserung
Beschreiben Sie Qualitätssicherung
Qualitätssicherung (quality assurance) ist der Teil des QMs, der darauf ausgelegt ist ausreichendes Vertrauen zu schaffen, dass eine Einheit die Qualitätsanforderungen erfüllen wird.
Aufgaben umfassen
• Regelmäßige Überprüfung der Wirksamkeit des
Qualitätsmanagementsystems durch Experten in Audits
• Publikation von qualitätsrelevanten Messgrößen
• Dokumentation (und teilweise Offenlegung) der Prozesse und
Qualitätsverfahren
• Zertifizierung des Qualitätsmanagementsystems
Vergleischen Sie Konstruktives vs. analytisches QM
Konstruktives QM umfasst
• Maßnahmen die sicherstellen, dass ein Produkt oder Prozess a priori
bestimmte Eigenschaften besitzt
• Ziel: fehlerfreie Erzeugung von Software ("Correctness by Construction")
Analytisches QM dient der Aufdeckung von Fehlern
• Gefundene Fehler müssen auch noch korrigiert werden, das wird aber
i.d.R. nicht als Teil des analytischen QM angesehen
-Beschreiben Sie Konstruktives QM
-vergleichen Sie zwischen Technische Maßnahmen: vs. Organisatorische Maßnahmen:
Technische Maßnahmen:
• Methoden (z.B. modellbasierte Code-Generierung)
• Werkzeuge (z.B. UML-Modellierungstools)
Organisatorische Maßnahmen:
• Vorgabe von Richtlinien (z.B. Programmierrichtlinien)
• Vorgabe von Standards (z.B. Gliederung von Anforderungsdokumenten nach IEEE 830)
• Checklisten (z.B. worauf man bei der Erstellung einer Spezifikation achten sollte)
Beschreiben Sie Analytisches QM
Dynamische Verfahren:
• Die Software wird dazu ausgeführt
• Tests, Messungen der Laufzeit, ...
Statische Verfahren:
• Ohne Ausführung der Software, prinzipiell "von Hand" möglich
• Verifizierende Verfahren
◦ Prüfung gegen vorgegebenes Qualitätsziel/Artefakt, z.B. formale Verifikation
• Analysierende Verfahren
◦ Berechnung von Eigenschaften, Maßen (z.B. Lines of Code)
Verfahren finden jeweils andere Arten von Fehlern!
Verfahren sind in unterschiedlichen Entwicklungsphasen einsetzbar
Beschreiben Sie Qualitätszielbestimmung in Prinzip 1 Produkt-/Prozessabh. ?
Art und Einsatzzweck einer Software bestimmt relevante Qualitätsmerkmale
• z.B. Notabschaltung im Kernkraftwerk vs. Computerspiel
Qualitätszielbestimmung:
• Auseinandersetzung mit
◦ Verwendungszweck und Lebensdauer des Produkts
◦ Kritikalität des Systems (z.B. Gefahren für Menschen, wirtschaftl. Erfolg)
◦ Projektrisiken (z.B. Komplexität, Qualifikation der Mitarbeiter)
◦ rechtlichen Rahmenbedingungen, Qualitätsstandards
• Festlegung von Qualitätszielen vor Beginn der Entwicklung
◦ Anpassung bei späteren Änderungen der Rahmenbedingungen
• entsprechende Auswahl von QM-Methoden und Werkzeugen
Beschreiben Sie Qualitätszielbestimmung in Prinzip 2 Quantitatives QM ?
Sollwerte (Qualitätsanforderungen) und Istwerte (Qualitätseigenschaften) müssen quantifizierbar sein
• eindeutig bestimmbar (objektive Maße)
• leicht überprüfbar (geringer Aufwand der Messung)
• vergleichbar
Praktische Probleme:
• oft nur subjektive Maße verfügbar (z.B. Fragebögen)
• oft kontextabhängig (Projekt, Produkt, Firma, Domäne, ...),
nicht allgemeingültig
◦ z.B. Lines of Code in Java vs. Python
Beschreiben Sie Qualitätszielbestimmung in Prinzip 3 Maximales konstruktives QM ?
• Fehler, die nicht gemacht werden, müssen nicht behoben werden
• Fehlerbehebung führt zu neuen Fehlern
• Aufwand in konstruktivem QM maximieren, um analytisches QM zu
optimieren
◦ konstruktive Verfahren ermöglichen
· bestimmte anal. Verfahren, z.B. wenn Standards eingehalten werden
· effektivere anal. Verfahren, z.B. Testbarkeit wenn Modelle eingesetzt werden
Beschreiben Sie Qualitätszielbestimmung in Prinzip 4 Frühe Fehlererkennung und -behebung
• QM in frühen Projektphasen besonders wichtig
• Beseitigung/Vermeidung von Fehlern, die bereits erkennbar sind
• Korrekturen lassen sich aber nicht vollständig vermeiden:
◦ neue Erkenntnisse (Erfahrungskurve der Stakeholder)
◦ geänderte Anforderungen
◦ technische Neuerungen
Beschreiben Sie Qualitätszielbestimmung in Prinzip 5 Integriertes QM
QM sollten in den Entwicklungsprozess integriert sein
• Projektplanung sollte QM-Maßnahmen berücksichtigen (QM-Plan)
• Jede Entwicklungsaktivität sollte aus einem konstruktiven und einem
analytischen (prüfenden) Teil bestehen
◦ Konstruktiver Teil kann neben Entwicklung auch konstruktive QM enthalten
• Integriertes QM nötig für realistische Beurteilung des Projektfortschritts
◦ sonst immenser Fehlerbehebungsaufwand am Ende möglich
Beschreiben Sie Qualitätszielbestimmung in Prinzip 6 Unabängigkeit der Qualitätsprüfung
Bei Konstruktion der Software Verantwortung für QS bei Entwicklern
(Requirements Engineers, Architekten, Implementierer)
Für analytisches QM oft personelle Trennung zw. Entwicklern und Prüfern
Entwickler
Vorteile
• Kenntnis der Software
Nachteile
• blind für eigene Fehler
• wenig Anreiz, eigene Fehler zu finden
unabhängige Prüfer
Vorteile
• objektive Prüfung
• Betonung des QM
Nachteile
• Einarbeitung nötig
• kann als unerwünschte Kontrolle empfunden werden