530 likes | 1.23k Views
Qualitätssicherung. Externe Qualitätsprobleme (1). Externe Qualitätsprobleme (1). Entwicklungskosten >300 Mio. € Erwartete Dauer: 1 Jahr (tatsächlich: 3 Jahre) Unterstützt 10 Nutzer gleichzeitig statt den geplanten 1.000
E N D
Qualitätssicherung Software(technik)praktikum - Vorlesung Qualitätssicherung
Externe Qualitätsprobleme (1) Software(technik)praktikum - Vorlesung Qualitätssicherung
Externe Qualitätsprobleme (1) • Entwicklungskosten >300 Mio. € • Erwartete Dauer: 1 Jahr (tatsächlich: 3 Jahre) • Unterstützt 10 Nutzer gleichzeitig statt den geplanten 1.000 • Zitat: „Hauptproblem sei das Design des Systems, das Servern den Zugriff auf brachliegende Kapazitäten anderer Rechner nicht ermögliche.“ Software(technik)praktikum - Vorlesung Qualitätssicherung
Externe Qualitätsprobleme (2) Software(technik)praktikum - Vorlesung Qualitätssicherung
Interne Qualitätsprobleme: Wartung Prozesskontrollsystem Probleme beheben Charakteristika? Warumwarten? Wosuchen? Lange Lebenszeit (>30 Jahre) Doku- mentation Software ändern GroßeCodebasis (>1 Mio. LOC) Quell- code Software(technik)praktikum - Vorlesung Qualitätssicherung
Interne Qualitätsprobleme: Wartung [Som12] Rebecca Tiarks: WhatMaintenance ProgrammersReally Do: An Observational Study Software(technik)praktikum - Vorlesung Qualitätssicherung
Inhalte dieser Vorlesung • Was ist Qualität? • Begriffsdefinition • Welche Qualitätseigenschaften gibt es? • Qualitätsmodelle definieren diese • Wie quantifiziert man Qualität? • Messen & Schätzen • Qualitätsmetriken • Wo im Entwicklungsprozess spielt Qualität eine Rolle? • Am Beispiel des V-Modells Software(technik)praktikum - Vorlesung Qualitätssicherung
Qualität • Qualität kann verschiedene Bedeutungen haben, bzw. hängt von der Perspektive ab • produktbezogene Qualität („Wie gut ist das Produkt“) • benutzerbezogene Qualität („Wie gut ist das Produkt für die Bedürfnisse eines bestimmten Benutzers“) • prozessbezogene Qualität („Wie gut ist der Erstellungsprozess des Produkts“) • Qualität möchte man erzielen • Qualität sollte daher nachweisbar sein 8 Software(technik)praktikum - Vorlesung Qualitätssicherung
Qualität Gesamtheit der Merkmale eines Produkts oder einer Tätigkeit, die die Erfüllung festgelegter oder vorausgesetzter Eigenschaften betreffen(nach DIN EN ISO 8402) Dazu gehören auch Dokumente des Entwicklungs-prozesses Qualitäts-anforderung Welche Qualitätseigenschaften gibt es? Hierfür gibt es Qualitätsmodelle 9 Software(technik)praktikum - Vorlesung Qualitätssicherung
Qualitätsmodelle • Mit Hilfe eines Qualitätsmodells kann eine systematische und begründete Abschätzung der Qualität eines Produkts erfolgen • Qualität wird in DIN EN ISO 8402 „Quality management and quality assurance” definiert • Typischerweise werden Qualitätseigenschaften über mehrere Hierarchiestufen in Teileigenschaften zerlegt • ISO/IEC 25010 • ehemals ISO/IEC 9126 “Software engineering — Product quality” 10 Software(technik)praktikum - Vorlesung Qualitätssicherung
ISO/IEC 25010 • Software product quality model (interne und externeQualitäten) Software(technik)praktikum - Vorlesung Qualitätssicherung
Relevanz der Q-Eigenschaften Ähnlich zu McCall, Richards und Walters und nach Balzert 12 Software(technik)praktikum - Vorlesung Qualitätssicherung
Qualitätsmetriken • Qualität lässt sich durch Qualitätsmetriken nachweisen • Eine Metrik M ist eine präzise definierte Methode, um ein Element einer (geordneten) Menge V einem System S zuzuordnen • M ist zugleich auch die Einheit in der man die Qualität angibt • Beispiel: • S = Code eines Softwaresystems • M = Lines of Code von S • V = Natürliche Zahlen • Methode: Zähle alle LOCs von S • Weitere Beispiele für weitere Metriken: • Anzahl der Methoden, Klassen, Codekommentarzeilen • Antwortzeit • Auslastung (z.B. der CPU) • Durchsatz (z.B. in Netzwerken relevant) 13 Software(technik)praktikum - Vorlesung Qualitätssicherung
Qualitätsmetriken • Wie ermittelt man Metriken? • Schätzen? – Ja, aber wenn dann möglichst • genau, • begründet • und systematisch • Messen • Bestenfalls wiederholbare Messungen 14 Software(technik)praktikum - Vorlesung Qualitätssicherung
Beispiel für ein Qualitätsmodell: Factor-Criteria-Metrics-Model Q-Eigenschaften Q-Teileigenschaften Q-Metriken QM-Bericht Die Qualität beträgt: 0,4 Qualitätsstufe: gut Richtigkeit 0,3 Funktionalität 0,1 Angemessenheit 0,7 Interoperabilität 0,2 380k Zuverlässigkeit LOC 0,3 … 0,2 2,5 0,2 Verständlichkeit Bedienbarkeit Interactions/Use Case 0,2 Erlernbarkeit 0,01 0,5 … 0,5 Bedienbarkeit … 15 Software(technik)praktikum - Vorlesung Qualitätssicherung
Arten des Qualitätsmanagements • Produktorientiertes und prozessorientiertes Qualitätsmanagement • Konstruktive und analytische Maßnahmen des Qualitätsmanagements • Diskussion: Welche Maßnahmen können wir in der Gruppe zur Erhöhung der Softwarequalität treffen? 16 Software(technik)praktikum - Vorlesung Qualitätssicherung
Produkt- und Prozessorientiertes QM • Produktorientiertes Qualitätsmanagement • Das Softwareprodukt und Zwischenergebnisse (Klassen, Methoden oder Komponenten wie GUI, Parser, Algorithmen, usw.) werden auf vorher festgelegte Q-Eigenschaften und Metriken überprüft • Direkte Sicherstellung, dass das Produkt bestimmte Q-Eigenschaften besitzt • Prozessorientiertes Qualitätsmanagement • Bezieht sich auf den Entwicklungsprozess der Software, eingesetzte Werkzeuge, Richtlinien für Dokumente, etc. • Wird der Prozess eingehalten, ergibt sich automatisch eine hohe Qualität • Inspiriert durch die industrielle Serienfertigung • die gibt es aber bei Software kaum, daher muss prozess-orientiertes QM typischerweise an Projekte angepasst werden • Rein prozessorientiertes QM hat sich als unzweckmäßig erwiesen nach Balzert 17 Software(technik)praktikum - Vorlesung Qualitätssicherung
Konstruktive und Analytische QM-Maßnahmen • Konstruktive QM-Maßnahmen • Sorgen während des Erstellungsprozesses dafür, dass am Ende Qualitätsmerkmale erfüllt werden • Analytische QM-Maßnahmen • Dienen nur der Diagnose • Messen des Qualitätsniveaus • Finden von Defekten • Erhöhen nicht direkt die Qualität eines Produkts, bzw. Prozesses • Analytische Verfahren: Sammeln von Informationen über das Produkt bzw. den Prozess durch statische Betrachtung • Testenden Verfahren: Sammeln von Informationen über das Produkt bzw. den Prozess durch dynamische Ausführung nach Balzert 18 Software(technik)praktikum - Vorlesung Qualitätssicherung
Konstruktive, produktorientierte QM-Maßnahmen (Beispiele) • sind Methoden, Sprachen, Standards, Richtlinien, etc., die für das erreichen bestimmter Q-Merkmale im Produkt sorgen, z.B. • Richtlinien für Dokumente (z.B. Schema für das Pflichtenheft) • Einsatz einer Programmiersprache mit statischer Typprüfung, z.B. Java (vermeidet viele Fehler) • Objektorientierte Entwicklung (Vererbung und Polymorphie unterstützt die Wiederverwendbarkeit und Erweiterbarkeit) • Einsatz von Design-Patterns (Plug-in-Mechanismus, MVC, etc. unterstützen das Erreichen verschiedene Q-Merkmale) • Modellbasierte Entwicklung (z.B. mit UML, EMF; viele Fehler in automatisch generiertem Code werden vermieden) • Einsatz von Werkzeugen wie z.B. Eclipse: automatische Code-Vervollständigung, Syntax-Highlighting, … nach Balzert 19 Software(technik)praktikum - Vorlesung Qualitätssicherung
Konstruktive, prozessorientierte QM-Maßnahmen (Beispiele) • sind Methoden, Sprachen, Standards, Richtlinien, etc., die für das erreichen bestimmter Q-Merkmale im Prozess sorgen, z.B. • Richtlinien: Welche Teilergebnisse mit welchem Inhalt müssen wann und von wem erstellt werden • Definition eines Prozessmodells (Transparenz, Planbarkeit) • Unterstützung der Zusammenarbeit durch ein Versions- und Konfigurationsmanagementsystem (SVN) • Automatische Überwachung des Entwicklungsprozesses • Einsatz von Wikis, oder z.B. Mylyn, IBM Rational Jazz, … • Regelmäßige Treffen mit standardisiertem Ablauf und schriftlichen Protokollen • Pair-programming (prozess- oder produktorientierte Maßnahme?) nach Balzert 20 Software(technik)praktikum - Vorlesung Qualitätssicherung
Analytische QM-Maßnahmen (Beispiele) • Analytische Verfahren • Statische Analyse • Review • Inspektion • Walkthrough • Audit (Erfassung von Prozessmerkmalen) • Testende Verfahren • Test • Simulation • Verifikation (vollständiger Beweis der Korrektheit eines Systems bzgl. bestimmter Eigenschaften, z.B. Model Checking) – analytisches oder testendes Verfahren? nach Balzert 21 Software(technik)praktikum - Vorlesung Qualitätssicherung
Prüfmethode Review • Mehr oder weniger formale Prozess, in dem es darum geht, Fehler, Unklarheiten, Inkonsistenzen (allg. Schwächen) eines Dokumentes (oder Code-Abschnitts) aufzudecken. • Dazu wird das Dokument systematisch in einem Team (von Gutachtern und unter Beteiligung der Autoren des Dokuments) angesehen und besprochen • Das Ergebnis ist ein Prüfprotokoll oder die Freigabe des Dokumentes (ggf. nach Iteration) Software(technik)praktikum - Vorlesung Qualitätssicherung
Psychologie des „Reviews“ • Problem: Autoren „stehen in der Schusslinie“ bzw. werden „in die Mangel genommen“ • Psychologische Aspekte müssen beim Ablauf berücksichtigt werden: z.B. • Keine Vorgesetzen anwesend • Keine Beurteilung anhand der Reviews • … Software(technik)praktikum - Vorlesung Qualitätssicherung
Prüfmethode Inspektion • Sehr formale Form des Reviews • Beteiligte: Gutachter, Autor(en), Moderator, Protokollant • Ablauf: • Eingangsprüfung: Moderator prüft Eingangskriterien und kann Prüfung ablehnen • Planung: Moderator plant den Prüfprozess (Rollen, Zeitplan, Unterlagen, Aufteilung des Prüfobjekts, Kriterien) • Einführung: Aufgaben verteilen, Vorgehen abstimmen • Individuelle Vorbereitung: Beteiligte bereiten sich auf die Inspektionssitzung vor • Inspektionssitzung: Prüfobjekt wird auf Defekte untersucht • Überarbeitung • Nachprüfung • Abgabe nach Balzert 24 Software(technik)praktikum - Vorlesung Qualitätssicherung
Prüfmethode Walkthrough • Informelle Form des Reviews • Beteiligte: Autor(en), Gutachter • Ablauf: • Ggf. Individuelle Vorbereitung und Prüfung des Gutachters • kann den Walkthrough-Prozess verkürzen • Walkthrough-Sitzung: • Autor stellt das Produkt Schritt für Schritt vor • Gutachter stellt fragen und weist auf Probleme hin • Probleme werden protokolliert • Walkthroughs können während des Software(technik)praktikums gut in Gruppen-Sitzungen durchgeführt werden • Tutor kann Rolle des Gutachter spielen 25 Software(technik)praktikum - Vorlesung Qualitätssicherung
Fehler und Tests • „Testen ist das Ausführen eines Programms, mit der Absicht (möglichst viele) Fehler zu finden“ • Ein Fehler ist eine Abweichung des Verhaltens eines Produkts/Programms (IST) vom erwarteten Verhalten (SOLL). • Ein Test besteht aus einem Satz von Eingabedaten zusammen mit dem jeweils erwarteten Ergebnis (SOLL). • Beim Durchführen eines Tests wird das Programm mit den Eingabedaten ausgeführt und das Ergebnis mit dem erwarteten Ergebnis verglichen. Software(technik)praktikum - Vorlesung Qualitätssicherung
Testen zur Qualitätssicherung • Tests können Zutrauen in die Fehlerfreiheit vermitteln und liefern damit ein Maß für die • Richtigkeit (Funktionalität) und die • Fehlertoleranz und Reife (Zuverlässigkeit) • des Programms • Tests können meist automatisch durchgeführt werden; problematisch sind nur graphische Benutzeroberflächen Software(technik)praktikum - Vorlesung Qualitätssicherung
Stufen des Tests Tests können auf verschiedenen Stufen durchgeführt werden • Abnahmetest(vom/mit Auftraggeber) • Systemtest • Integrationstest • Unit-Test Test* Dekomposition Spezifikation Integration Implementierung * der vorher spezifizierten Eigenschaften Software(technik)praktikum - Vorlesung Qualitätssicherung
Erinnerung: Bereits bekannt aus Vorlesung Softwareentwurf Software(technik)praktikum - Vorlesung Qualitätssicherung
Automatisierung • Tests können meist automatisch durchgeführt werden; dazu sind evtl. Testtreiber nötig • schwierig zu testen sind • graphische Benutzeroberflächen • Eingebettete Systeme • … warum? JUnit Software(technik)praktikum - Vorlesung Qualitätssicherung
Grenzen des Testens • Testen kann nur die Anwesenheit von Fehlern zeigen • nicht deren Abwesenheit, also die Fehlerfreiheit der Software • „der Fehler ist immer genau da, wo man nicht getestet hat“ • Die Abwesenheit von Fehlern kann nur durch eine vollständige Verifikation überprüft werden • z.B. Modelchecking: jeden möglichen erreichbaren Zustand eines Programms auf bestimmte Eigenschaften untersuchen • „jeden Fall testen“ • Aber auch hier gibt es Grenzen: • man überprüft nur vorher spezifizierte Eigenschaften • aber erfüllt die Software die Erwartungen? Ist die Software dann „sicher“? Software(technik)praktikum - Vorlesung Qualitätssicherung
Prinzip: Frühzeitige Maßnahmen • Je früher ein Fehler gefunden und beseitigt wird, desto weniger Folgekosten verursacht er. • Extremform: „Test-Driven Development“ – Test-Cases werden vor der eigentlichen Implementierung geschrieben Frühzeitige Maßnahmen:Fehler sollten möglichst früh entdeckt werden! Podcast: http://www.se-radio.net/2010/09/episode-167-the-history-of-junit-and-the-future-of-testing-with-kent-beck/ Software(technik)praktikum - Vorlesung Qualitätssicherung
Prinzip: Unabhängige Qualitätssicherung • Niemand macht gern das eigene Produkt kaputt(„Psychologie des Testens“)! • Wer beim Entwickeln einen Fall vergisst, vergisst ihn auch beim Testen. Unabhängige Qualitätssicherung:QS-Maßnahmen sollten niemals vom Entwickler selbst durchgeführt werden! Software(technik)praktikum - Vorlesung Qualitätssicherung
Prozessorientiertes QM • Es gibt verschiedene Vorgehensmodelle bei der Softwareentwicklung • Wasserfallmodell, V-Modell, Spiralmodell, … • es sind nur grobe Beschreibungen für das Vorgehen bei der Entwicklung • es ist nicht immer zweckmäßig, diese Modelle weiter zu detaillieren • Daher wurden verschiedene Rahmenmodelle entwickelt, welche allgemeiner Kriterien für die Durchführung eines Entwicklungsprozesses definieren • CMMI • SPICE / ISO 15504 • ISO-9000 • TQM 34 Software(technik)praktikum - Vorlesung Qualitätssicherung
ISO 9000-3 / ISO 9001 • Das ISO 9000-Modell besteht aus einer Reihe von Normen für ein Qualitätsmanagementsystem • ISO 9000 RahmenwerkAuftraggeber - Lieferanten – Verhältnis • ISO 9001 beschreibt ganz allgemein Modelle zur Darlegung der Qualitätssicherung in Entwicklung, Produktion, Montage und Kundendienst • ISO 9000-3 ist eine Richtlinie für die Anwendung von ISO 9001 auf die Entwicklung und Wartung von Software(mit der hier üblichen Terminologie) 35 Software(technik)praktikum - Vorlesung Qualitätssicherung
Wichtig: Darlegung! • ISO 9000-1 legt kein Vorgehensmodell (Phasenmodell) fest; • sie verlangt aber die Darlegung der Phasen, Ergebnisse und der jeweiligen Qualitätssicherungsmaßnahmen (Verifizierung) und • sie legt einmalig oder periodisch im Unternehmen durchzuführende Maßnahmen und pro Projekt durchzuführende Maßnahmen fest • Sie verlangt Maßnahmen zur Dokumentation der Projektabläufe( Konfigurationsmanagement) Vorgeschriebene Tags im SVN Software(technik)praktikum - Vorlesung Qualitätssicherung
Qualitätssichernde Maßnahmen • Festlegung der Qualitätspolitik • Festlegung eines mit der Qualitätspolitik Beauftragten • Regelmäßige Überprüfung • Einplanung der Ressourcen für die Qualitätssicherung • … • Konfigurationsmanagement • Schulung • … Software(technik)praktikum - Vorlesung Qualitätssicherung
Dokumente Dokumente laut Projektplanskizze • Vertrag • Spezifikation • Entwicklungsplan • Qualitätssicherungsplan • Testplan • Wartungsplan • Konfigurationsmanagementplan Software(technik)praktikum - Vorlesung Qualitätssicherung
Vor- und Nachteile von ISO 9000 Vorteile Nachteile Gefahr der Bürokratie(Dokumente um der Dokumente willen) Gefahr der Inflexibilität … • Qualitätsbewusstsein(auf Geschäftsführungsebene und Mitarbeiterebene) • Dokumentation der Qualitätspolitik und ihrer Umsetzung • Anpassungszwang (jährliche Überwachung) • Wettbewerbsvorteil Software(technik)praktikum - Vorlesung Qualitätssicherung