Inhalt | 6 |
Geleitwort | 14 |
Vorwort | 17 |
Die Autoren | 19 |
1 Softwaremessung | 22 |
1.1 Das Wesen von Software | 22 |
1.2 Sinn und Zweck der Softwaremessung | 27 |
1.2.1 Zum Verständnis (Comprehension) der Software | 28 |
1.2.2 Zum Vergleich der Software | 28 |
1.2.3 Zur Vorhersage | 29 |
1.2.4 Zur Projektsteuerung | 29 |
1.2.5 Zur zwischenmenschlichen Verständigung | 29 |
1.3 Dimensionen der Substanz Software | 30 |
1.3.1 Quantitätsmetrik von Software | 30 |
1.3.2 Komplexitätsmetrik von Software | 31 |
1.3.3 Qualitätsmetrik von Software | 31 |
1.4 Sichten auf die Substanz Software | 32 |
1.5 Objekte der Softwaremessung | 34 |
1.6 Ziele einer Softwaremessung | 35 |
1.7 Zur Gliederung dieses Buches | 38 |
2 Softwarequantität | 42 |
2.1 Quantitätsmaße | 42 |
2.2 Codegrößen | 44 |
2.2.1 Codedateien | 45 |
2.2.2 Codezeilen | 46 |
2.2.3 Anweisungen | 46 |
2.2.4 Prozeduren bzw. Methoden | 46 |
2.2.5 Module bzw. Klassen | 46 |
2.2.6 Entscheidungen | 47 |
2.2.7 Logikzweige | 47 |
2.2.8 Aufrufe | 47 |
2.2.9 Vereinbarte Datenelemente | 47 |
2.2.10 Benutzte Datenelemente bzw. Operanden | 47 |
2.2.11 Datenobjekte | 48 |
2.2.12 Datenzugriffe | 48 |
2.2.13 Benutzeroberflächen | 48 |
2.2.14 Systemnachrichten | 48 |
2.3 Entwurfsgrößen | 49 |
2.3.1 Strukturierte Entwurfsgrößen | 49 |
2.3.2 Datenmodellgrößen | 49 |
2.3.3 Objektmodellgrößen | 49 |
2.4 Anforderungsgrößen | 53 |
2.4.1 Anforderungen | 54 |
2.4.2 Abnahmekriterien | 55 |
2.4.3 Anwendungsfälle | 55 |
2.4.4 Verarbeitungsschritte | 55 |
2.4.5 Oberflächen | 55 |
2.4.6 Systemschnittstellen | 55 |
2.4.7 Systemakteure | 56 |
2.4.8 Relevante Objekte | 56 |
2.4.9 Objektzustände | 56 |
2.4.10 Bedingungen | 56 |
2.4.11 Aktionen | 56 |
2.4.12 Testfälle | 57 |
2.5 Testgrößen | 57 |
2.5.1 Testfälle | 57 |
2.5.2 Testfallattribute | 58 |
2.5.3 Testläufe | 58 |
2.5.4 Testskriptebzw. Testprozeduren | 59 |
2.5.5 Testskriptzeilen | 59 |
2.5.6 Testskriptanweisungen | 59 |
2.5.7 Fehlermeldungen | 59 |
2.6 Abgeleitete Größenmaße | 60 |
2.6.1 Function-Points | 60 |
2.6.2 Data-Points | 61 |
2.6.3 Object-Points | 62 |
2.6.4 Use-Case-Points | 63 |
2.6.5 Testfall-Points | 63 |
3 Softwarekomplexität | 66 |
3.1 Komplexität in der Softwaremetrik | 69 |
3.1.1 Software Komplexität nach dem IEEE-Standard | 69 |
3.1.2 Softwarekomplexität aus der Sicht von Zuse | 70 |
3.1.3 Softwarekomplexität nach Fenton | 70 |
3.1.4 Komplexität als Krankheit der Softwareentwicklung | 71 |
3.1.5 Komplexitätsmessung nach Ebert und Dumke | 73 |
3.1.6 Die Alpha-Komplexitätsmetrik | 75 |
3.2 Steigende Softwarekomplexität | 77 |
3.2.1 Codekomplexität – Warum Java komplexer als COBOL ist | 79 |
3.2.2 Entwurfskomplexität – Warum verschiedene Entwurfsansätze im Endeffekt gleich komplex sind | 81 |
3.2.3 Anforderungskomplexität – Warum die zu lösenden Aufgaben immer komplexer werden | 84 |
3.3 Allgemeingültige Maße für die Softwarekomplexität | 85 |
3.3.1 Sprachkomplexität | 85 |
3.3.2 Strukturkomplexität | 86 |
3.3.3 Algorithmische Komplexität | 86 |
4 Die Messung der Softwarequalität | 88 |
4.1 Qualitätseigenschaften nach Boehm | 89 |
4.1.1 Verständlichkeit nach Boehm | 90 |
4.1.2 Vollständigkeit nach Boehm | 91 |
4.1.3 Portabilität nach Boehm | 91 |
4.1.4 Änderbarkeit nach Boehm | 91 |
4.1.5 Testbarkeit nach Boehm | 91 |
4.1.6 Benutzbarkeit nach Boehm | 92 |
4.1.7 Zuverlässigkeit nach Boehm | 92 |
4.1.8 Effizienz nach Boehm | 92 |
4.2 Gilb und die Quantifizierung der Qualität | 93 |
4.2.1 Funktionalitätsmessung nach Gilb | 94 |
4.2.2 Performance-Messung nach Gilb | 94 |
4.2.3 Zuverlässigkeitsmessung nach Gilb | 94 |
4.2.4 Datensicherungsmessung nach Gilb | 95 |
4.2.5 Effizienzmessung nach Gilb | 95 |
4.2.6 Verfügbarkeitsmessung nach Gilb | 95 |
4.2.7 Wartbarkeitsmessung nach Gilb | 96 |
4.3 McCalls Qualitätsbaum | 96 |
4.4 Eine deutsche Sicht auf Softwarequalität | 98 |
4.4.1 Qualitätsbegriff | 99 |
4.4.2 Qualitätsklassifizierung | 99 |
4.4.3 Qualitätsmaße | 100 |
4.4.4 Qualitätsgrößen | 100 |
4.5 Automatisierte Softwarequalitätssicherung | 100 |
4.5.1 Automatisierte Messung der Anforderungsqualität | 101 |
4.5.2 Automatisierte Messung der Entwurfsqualität | 102 |
4.5.3 Automatisierte Messung der Codequalität | 103 |
4.5.4 Automatisierte Messung der Testqualität | 105 |
4.6 Zielgerichtete Softwarequalitätssicherung | 106 |
4.6.1 Qualitätszielbestimmung | 106 |
4.6.2 Qualitätszielbefragung | 106 |
4.6.3 Qualitätszielbemessung | 107 |
4.7 IEEE- und ISO-Standards für Softwarequalität | 108 |
4.7.1 Funktionalität nach ISO 9126 | 109 |
4.7.2 Zuverlässigkeit nach ISO 9126 | 109 |
4.7.3 Benutzbarkeit nach ISO 9126 | 109 |
4.7.4 Effizienz nach ISO 9126 | 110 |
4.7.5 Wartbarkeit nach ISO 9126 | 110 |
4.7.6 Portabilität nach ISO 9126 | 110 |
4.8 Folgen fehlender Qualitätsmessung | 111 |
5 Anforderungsmessung | 112 |
5.1 Tom Gilbs Anstoß der Anforderungsmessung | 113 |
5.2 Weitere Ansätze zur Anforderungsmessung | 115 |
5.2.1 Der Boehm-Ansatz | 115 |
5.2.2 N-Fold Inspektion | 117 |
5.2.3 Parnas & Weis Anforderungsprüfung | 118 |
5.2.4 Abgleich der Anforderungen nach Fraser und Vaishnavi (Anforderungsprüfung) | 118 |
5.2.5 Verfolgung der Anforderungen nach Hayes | 119 |
5.2.6 Bewertung der Anforderungen nach Glinz | 120 |
5.2.7 ISO-Standard 25030 | 121 |
5.2.8 Das V-Modell-XT als Referenzmodell für die Anforderungsmessung | 122 |
5.3 Eine Metrik für Anforderungen von C. Ebert | 123 |
5.3.1 Zahl aller Anforderungen in einem Projekt | 124 |
5.3.2 Fertigstellungsgrad der Anforderungen | 124 |
5.3.3 Änderungsrate der Anforderungen | 124 |
5.3.4 Zahl der Änderungsursachen | 124 |
5.3.5 Vollständigkeit des Anforderungsmodells | 124 |
5.3.6 Anzahl der Anforderungsmängel | 125 |
5.3.7 Anzahl der Mängelarten | 125 |
5.3.8 Nutzwert der Anforderungen | 125 |
5.4 Die Sophist-Anforderungsmetrik | 126 |
5.4.1 Eindeutigkeit der Anforderungen | 127 |
5.4.2 Ausschluss der Passivform bei den Anforderungen | 127 |
5.4.3 Klassifizierbarkeit der Anforderungen | 127 |
5.4.4 Identifizierbarkeit der Anforderungen | 127 |
5.4.5 Lesbarkeit | 128 |
5.4.6 Selektierbarkeit | 128 |
5.5 Werkzeuge für die Anforderungsmessung | 128 |
5.5.1 Anforderungsmessung in den früheren CASE-Werkzeugen | 128 |
5.5.2 Anforderungsmessung im CASE-Tool SoftSpec | 129 |
5.5.3 Anforderungsmessung in den gegenwärtigen Requirements Management Tools | 130 |
5.5.4 Anforderungsmetrik aus dem Werkzeug TextAudit | 131 |
5.5.5 Darstellung der Anforderungsmetrik | 134 |
5.6 Gründe für die Anforderungsmessung | 135 |
6 Entwurfsmessung | 136 |
6.1 Erste Ansätze zu einer Entwurfsmetrik | 137 |
6.1.1 Der MECCA-Ansatz von Tom Gilb | 137 |
6.1.2 Der Structured-Design-Ansatz von Yourdon und Constantine | 137 |
6.1.3 Der Datenflussansatz von Henry und Kafura | 139 |
6.1.4 Der Systemgliederungsansatz von Belady und Evangelisti | 140 |
6.2 Entwurfsmessung nach Card und Glass | 141 |
6.2.1 Entwurfsqualitätsmaße | 142 |
6.2.2 Entwurfskomplexitätsmaße | 144 |
6.2.3 Erfahrung mit der ersten Entwurfsmetrik | 147 |
6.3 Die SOFTCON Entwurfsmetrik | 148 |
6.3.1 Formale Vollständigkeits- und Konsistenzprüfung | 149 |
6.3.2 Technische Qualitätsmaße für den Systementwurf | 150 |
6.4 Objektorientierte Entwurfsmetrik | 153 |
6.4.1 Die OO-Metrik von Chidamer und Kemerer | 154 |
6.4.2 MOOD-Entwurfsmetrik | 158 |
6.5 Entwurfsmetrik in UMLAudit | 161 |
6.5.1 Entwurfsquantitätsmetrik | 162 |
6.5.2 Entwurfskomplexitätsmetrik | 164 |
6.5.3 Entwurfsqualitätsmetrik | 168 |
6.5.4 Entwurfsgrößenmetrik | 174 |
6.6 Entwurfsmetrik für Webapplikationen | 177 |
7 Codemetrik | 180 |
7.1 Programmaufbau | 180 |
7.2 Ansätze zur Messung von Codekomplexität | 183 |
7.2.1 Halsteads Software Science | 183 |
7.2.2 McCabe‘s Zyklomatische Komplexität | 185 |
7.2.3 Chapins Q-Komplexität | 186 |
7.2.4 Elshofs Referenzkomplexität | 187 |
7.2.5 Prathers Verschachtelungskomplexität | 188 |
7.2.6 Weitere Codekomplexitätsmaße | 190 |
7.3 Ansätze zur Messung von Codequalität | 190 |
7.3.1 Der Codequalitätsindex von Simon | 190 |
7.3.2 Der Maintainability-Index von Oman | 192 |
7.3.3 Zielorientierte Codequalitätsmessung | 193 |
7.4 Codemetrik im SoftAudit-System | 201 |
7.4.1 Codequantitätsmetrik | 202 |
7.4.2 Codekomplexität | 203 |
7.4.3 Codequalität | 206 |
7.5 Werkzeuge für die Codemessung | 211 |
7.5.1 Die ersten Codemessungswerkzeuge | 211 |
7.5.2 Codemessungswerkzeuge der 90er Jahre | 212 |
7.5.3 Heutige Codemessungswerkzeuge | 214 |
7.6 Beispiel einer Codemessung | 216 |
8 Testmetrik | 218 |
8.1 Testmessung in der früheren Projektpraxis | 219 |
8.1.1 Das ITS-Projekt bei Siemens | 219 |
8.1.2 Das Wella-Migrationsprojekt | 220 |
8.2 Testmetrik nach Hetzel | 222 |
8.3 Testmetrik bei IBM Rochester | 224 |
8.4 Maßzahlen für den Systemtest | 227 |
8.4.1 Testzeit | 227 |
8.4.2 Testkosten | 228 |
8.4.3 Testfälle | 228 |
8.4.4 Fehlermeldungen | 228 |
8.4.5 Systemtestüberdeckung | 229 |
8.4.6 Empfehlungen von Hutcheson | 229 |
8.4.7 Test-Points | 230 |
8.5 Testmetrik im GEOS-Projekt | 231 |
8.5.1 Messung der Testfälle | 232 |
8.5.2 Messung der Testüberdeckung | 235 |
8.5.3 Messung der Fehlerfindung | 235 |
8.5.4 Auswertung der Testmetrik | 237 |
8.6 Testmetrik nach Sneed und Jungmayr | 238 |
8.6.1 Testbarkeitsmetrik | 238 |
8.6.2 Testplanungsmetrik | 241 |
8.6.3 Testfortschrittsmetrik | 244 |
8.6.4 Testqualitätsmetrik | 245 |
9 Produktivitätsmessungvon Software | 250 |
9.1 Produktivitätsmessung – Ein umstrittenes Thema | 253 |
9.2 Softwareproduktivität im Rückblick | 254 |
9.2.1 Dokumentenmessung mit dem Fog-Index | 254 |
9.2.2 Produktivitätsmessung bei der Standard Bank of South Africa | 255 |
9.2.3 Die Entstehung der Function-Point-Methode | 256 |
9.2.4 Das COCOMO-I-Modell von Boehm | 258 |
9.2.5 Putnams Softwaregleichung | 259 |
9.2.6 Die Data-Point-Methode | 262 |
9.2.7 Die Object-Point-Methode | 264 |
9.2.8 Die Use-Case-Point-Methode | 268 |
9.3 Alternative Produktivitätsmaße | 270 |
9.4 Produktivitätsberechnung anhand der Softwaregröße | 272 |
9.5 Aufwandserfassung | 273 |
9.6 Softwareproduktivitätsarten | 274 |
9.6.1 Programmierproduktivität | 274 |
9.6.2 Designproduktivität | 275 |
9.6.3 Analyseproduktivität | 275 |
9.6.4 Testproduktivität | 276 |
9.6.5 Gesamtproduktivität | 276 |
9.7 Produktivitätsstudien | 277 |
9.7.1 Studien über Softwareproduktivität in den USA | 277 |
9.7.2 Studien über Softwareproduktivität in Europa | 279 |
9.7.3 Probleme beim Produktivitätsvergleich | 282 |
9.8 Produktivitätsmessung nach Wertbeitrag | 282 |
10 Die Messung der Wartungsproduktivität | 284 |
10.1 Frühere Ansätze zur Messung der Wartbarkeit von Software | 286 |
10.1.1 Stabilitätsmaße von Yau und Collofello | 287 |
10.1.2 Maintenance-Umfrage bei der U.S. Air Force | 288 |
10.1.3 Die Wartbarkeitsstudie von Vessey und Weber | 289 |
10.1.4 Bewertung der Softwarewartbarkeit nach Berns | 290 |
10.1.5 Die Wartungsuntersuchung von Gremillion | 291 |
10.1.6 Wartungsmetrik bei Hewlett-Packard | 292 |
10.1.7 Wartungsmessung nach Rombach | 293 |
10.1.8 Messung der Wartbarkeit kommerzieller COBOL Systeme | 294 |
10.1.9 Der Wartbarkeitsindex von Oman | 296 |
10.2 Ansätze zur Messung der Wartbarkeitobjektorientierter Software | 298 |
10.2.1 Erste Untersuchung der Wartbarkeit objektorientierterProgramme | 299 |
10.2.2 Chidamer/Kemerers OO-Metrik für Wartbarkeit | 300 |
10.2.3 MOOD-Metrik als Indikator der Wartbarkeit | 301 |
10.2.4 Eine empirische Validation der OO-Metrik für die Schätzung des Wartungsaufwands | 302 |
10.2.5 Der Einfluss einer zentralen Steuerung auf die Wartbarkeit eines OO-Systems | 302 |
10.2.6 Kalkulation vom Wartungsaufwand aufgrund der Programmkomplexität | 303 |
10.2.7 Vergleich der Wartbarkeit objektorientierter und prozeduraler Software | 304 |
10.2.8 Zur Änderung der Wartbarkeit im Laufe der Softwareevolution | 306 |
10.3 Wartungsproduktivitätsmessung | 308 |
10.3.1 Erste Ansätze zur Messung von Wartungsproduktivität | 308 |
10.3.2 Messung von Programmwartbarkeit im ESPRIT-Projekt MetKit | 311 |
10.3.3 Wartungsproduktivitätsmessung in der US-Marine | 313 |
10.3.4 Messung der Wartungsproduktivität bei Martin-Marietta | 315 |
10.3.5 Vergleich der Wartungsproduktivität repräsentativer Schweizer Anwender | 316 |
11 Softwaremessung in der Praxis | 320 |
11.1 Dauerhafte Messverfahren | 322 |
11.1.1 Beteiligung der Betroffenen | 322 |
11.1.2 Aufbauen auf vorhandener Metrik | 323 |
11.1.3 Transparenz des Verfahrens | 323 |
11.2 Beispiele dauerhafter Messverfahren | 324 |
11.2.1 Die Initiative von Hewlett-Packard zur Softwaremessung | 324 |
11.2.2 Prozess- und Produktmessung in der Siemens AG | 328 |
11.2.3 Die eingebaute Softwaremessung im GEOS-Projekt | 332 |
11.3 Übergreifende Software-Cockpits und Dashboards | 335 |
11.3.1 Aufbau und Funktionalität des Software-Cockpits | 337 |
11.3.2 Dashboard | 338 |
11.3.3 Scorecard | 339 |
11.3.4 Interaktive Analysen und Berichte | 340 |
11.4 Einmalige Messverfahren | 340 |
11.4.1 Vereinbarung der Messziele | 342 |
11.4.2 Auswahl der Metrik | 342 |
11.4.3 Bereitstellung der Messwerkzeuge | 343 |
11.4.4 Übernahme der Messobjekte | 343 |
11.4.5 Durchführung der Messung | 344 |
11.4.6 Auswertung der Messergebnisse | 344 |
11.5 Beispiel einer einmaligen Messung | 345 |
Literatur | 350 |
Register | 372 |