Vorwort | 8 |
Vorwort zur 1. Auflage | 10 |
Inhalt | 12 |
1 Einleitung | 18 |
1.1 Softwarequalität betrifft viele | 18 |
1.2 Für wen dieses Buch gemacht ist | 18 |
1.3 Was Sie von diesem Buch erwarten können | 19 |
1.4 Das Abenteuer von Q | 20 |
1.5 Themen und Anspruch | 20 |
1.5.1 Themenauswahl und Gewichtung | 21 |
1.5.2 Die Reihenfolge der Themen | 22 |
1.6 Bedeutung von Softwarequalität | 23 |
1.7 Wie Q zur Softwarequalität kam | 25 |
2 Grundkonzepte | 28 |
2.1 Qualitätsorganisation und Terminologie | 29 |
2.2 Kosten und Nutzen von Softwarequalität | 33 |
2.3 Qualitätsbeauftragte | 35 |
2.4 Eine Vision: Total Quality Management | 38 |
2.5 Grundbegriffe des Testens | 40 |
2.6 Normen und Standards | 44 |
2.7 Qualitätsaspekte, -anforderungen und Qualitätsmodelle | 47 |
3 Erfahrungen systematisch nutzen | 56 |
3.1 Qualitätsnetzwerke und Qualitätszirkel | 57 |
3.2 Leichtgewichtige Dokumentation von Erfahrungen | 59 |
3.3 Organisation der Erfahrungsverwaltung | 62 |
3.4 Herausforderungen und Chancen für Erfahrungsnutzung | 64 |
3.5 Networking in Organisationen und auf Tagungen | 66 |
4 Messen von Softwarequalität | 68 |
4.1 Wozu messen und konkretisieren? | 69 |
4.2 Softwaremetriken | 71 |
4.2.1 Grundlagen | 72 |
4.2.2 Was Softwaremetriken messen | 72 |
4.2.3 Bezug zwischen Metrik und Qualitätsaspekt | 74 |
4.2.4 Skalen für die Resultate der Metriken | 74 |
4.3 Diskussion bekannter Softwaremetriken | 76 |
4.3.1 Lines of code: Der Teufel steckt im Detail | 76 |
4.3.2 Zyklomatische Komplexität von McCabe | 78 |
4.3.3 Halstead Software Science | 83 |
4.3.4 Weitere Metriken: ein Ausblick | 86 |
4.4 Metriken nach Maß: GQM | 87 |
4.4.1 Von Zielen zu Fragen zu Metriken - und zurück | 87 |
4.4.2 Zielorientiertes Messen und Bewerten | 89 |
4.4.3 Zielfacetten schärfen den Blick | 90 |
4.4.4 Messung vorbereiten mit Abstraction Sheets | 92 |
4.4.5 Besonderheiten bei Messung und Auswertung | 96 |
4.5 Projektfortschritt messen mit Quality Gates | 97 |
5 Systematisches Testen | 100 |
5.1 Vorüberlegungen | 100 |
5.1.1 Testvorbereitung | 100 |
5.1.2 Vollständig testen? | 102 |
5.1.3 Woraus ein Testfall besteht | 103 |
5.1.4 Testfälle dokumentieren | 104 |
5.1.5 Testfälle ermitteln: eine Strategie | 105 |
5.1.6 Hintergrund von Fehlern | 107 |
5.1.7 Übersicht: Black-Box-Test und Glass-Box-Test | 108 |
5.2 Black-Box-Tests aus der Spezifikation | 108 |
5.2.1 Minimalforderung und Effizienzprinzip | 109 |
5.2.2 Äquivalenzklassenmethode | 111 |
5.2.3 Grenzwertanalyse | 113 |
5.2.4 Spezifikationsabdeckung optimieren | 113 |
5.2.5 Klassifikationsbaummethode | 116 |
5.2.6 Zustandsbasiertes Testen | 118 |
5.2.7 Testablauf dokumentieren | 122 |
5.3 Sollwerte aus der Spezifikation | 123 |
5.4 Glass-Box: Testen nach der Codestruktur | 125 |
5.4.1 Maße für Codeüberdeckung | 126 |
5.4.2 Interpretation von Überdeckungsmaßen | 128 |
5.4.3 Objektorientierung und Glass-Box-Test | 129 |
5.5 Testfälle für spezielle Qualitätsaspekte | 131 |
5.5.1 Testfälle in Form von Code | 133 |
5.5.2 Granularität und Reihenfolge von Prüflingen | 134 |
5.5.3 Stresstest, Recovery und Security Tests | 136 |
5.6 Hilfsmittel und Werkzeuge für das Testen | 136 |
5.6.1 Debuggen ist nicht Testen | 136 |
5.6.2 Standardhilfsmittel: Testrahmen | 137 |
5.6.3 Werkzeuge für Glass-Box-Test | 137 |
5.6.4 Sonstige Hilfsmittel und Werkzeuge | 139 |
5.7 Testen von grafischen Oberflächen | 139 |
5.7.1 Sackgasse: System als Ganzes | 140 |
5.7.2 Capture/Replay-Tools | 141 |
6 Usability Engineering | 144 |
6.1 Software und Bedienbarkeit | 145 |
6.2 Usability als Qualitätsaspekt | 145 |
6.2.1 Gute Bedienoberflächen und Qualitätsaspekte | 146 |
6.2.2 Usability definiert sich über Anforderungen | 148 |
6.3 Aspekte der Benutzerfreundlichkeit nach ISO 9241 | 150 |
6.4 Bedienbarkeit messen | 152 |
6.5 Konstruktives Usability Engineering | 152 |
6.5.1 Aufgaben im Usability Engineering | 153 |
6.5.2 Kernaufgaben in der Anforderungsklärung | 154 |
6.5.3 Aktivitäten in Entwurf und Entwicklung | 156 |
6.5.4 Acht Goldene Regeln nach Shneiderman | 157 |
6.6 Experten-Evaluationen | 158 |
7 Reviews und Inspektionen | 162 |
7.1 Rollen und Ablauf | 163 |
7.2 Hilfsmittel | 168 |
7.3 Aufwand und Nutzen | 172 |
7.4 Varianten von Reviews | 174 |
8 Formale Verfahren | 176 |
8.1 Prädikatenkalkül und formale Beweise | 177 |
8.1.1 Grundvorgehen und Basiselemente | 178 |
8.1.2 Voraussetzungen aus Anforderung ableiten | 179 |
8.1.3 Verzweigung als Anweisungsart | 181 |
8.1.4 Schleifeninvarianten | 182 |
8.2 Verschiedene Spezifikationsstile | 185 |
8.3 Spezifizieren und Beweisen mit Modellen | 187 |
8.3.1 Ampelanlage als Petrinetz-Beispiel | 188 |
8.3.2 Beweise auf Petrinetzen | 191 |
8.4 Diskussion formaler Techniken | 193 |
9 Konstruktive Qualitätssicherung | 194 |
9.1 Analytisch, organisatorisch, konstruktiv | 194 |
9.2 Maßnahmen, bevor ein Problem auftritt | 196 |
9.2.1 Bewährte Verfahren | 197 |
9.2.2 Bewährte Bestandteile | 198 |
9.2.3 Bewährte Strukturen | 201 |
9.3 Beispiel Cleanroom: Fehler vermeiden | 201 |
10 Agile Softwareentwicklung und Qualität | 204 |
10.1 Die kurze Geschichte der agilen Softwareentwicklung | 205 |
10.2 Extreme Programming im Überblick | 208 |
10.3 Testgetriebene Entwicklung in XP | 215 |
10.3.1 Terminologie und Testarten | 215 |
10.3.2 Testautomatisierung ist unverzichtbar | 216 |
10.3.3 Testcode ist seltener fehlerhaft | 217 |
10.3.4 Test First: Testen vor Codieren | 218 |
10.3.5 Auswirkungen von Test First | 220 |
10.3.6 Besserer Produktionscode durch Test First | 221 |
10.4 Die Rolle der Softwarequalität in XP | 222 |
10.5 Scrum | 223 |
10.6 Lean Software Development | 229 |
10.6.1 Vom Toyota Production System zur Softwareentwicklung | 229 |
10.6.2 Die Grundkonzepte von Lean | 230 |
10.6.3 Auswirkungen auf die Softwarequalität | 235 |
10.7 Kanban | 236 |
10.7.1 Arbeitsabläufe visualisieren | 236 |
10.7.2 Pull statt Push: Aufgabenvolumen begrenzen, Durchlaufzeit verkürzen | 237 |
10.7.3 Ausblick: Kanban für Fortgeschrittene | 239 |
10.8 Zusammenfassung | 241 |
11 Das Abenteuer geht weiter | 244 |
11.1 Rückblick | 244 |
11.2 Was es noch zu erkunden gibt | 246 |
11.3 Wann man aufhören soll | 246 |
Literaturverzeichnis | 250 |
Abkürzungen | 258 |
Index | 260 |