Harry M. Sneed, Manfred Baumgartner, Richard Seidl
Software in Zahlen
Die Vermessung von Applikationen
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
© 2009-2024 ciando GmbH