Vorwort | 6 |
Das Mauerblümchen Softwarewartung | 6 |
Danke | 8 |
Inhalt | 10 |
Teil I | 16 |
1 Einleitung | 18 |
1.1 Demografie in der Software | 18 |
1.2 Größe als Herausforderung | 21 |
1.3 Ursachen für Altersschwäche | 26 |
1.4 Wegweiser durch dieses Buch | 27 |
2 Begriffswelt der Softwarewartung | 32 |
2.1 Warum Wartung nötig ist | 32 |
2.1.1 Entropie | 33 |
2.1.2 Lack of movement | 34 |
2.1.3 Ignorant surgery | 35 |
2.2 Begriffe rund um die Wartung | 36 |
2.2.1 Software | 36 |
2.2.2 Softwarewartung | 38 |
2.2.3 Wartbarkeit | 40 |
2.2.4 Softwareevolution | 41 |
2.3 Kategorien der Wartung | 43 |
2.3.1 Korrektive Wartung | 44 |
2.3.2 Präventive Wartung | 45 |
2.3.3 Adaptive Wartung | 45 |
2.3.4 Perfektionierende Wartung | 46 |
2.3.5 Reaktive versus proaktive Wartung | 46 |
2.3.6 Support | 47 |
2.3.7 Verteilung der Wartungsaufwände | 48 |
2.4 Zusammenfassung | 49 |
3 Der Lebenszyklus – Grundlage der Wartung | 52 |
3.1 Vom Projekt zum Produkt | 52 |
3.2 Wartung beginnt in der Entwicklung | 54 |
3.3 Ordnung durch Rollen und Organisation | 56 |
3.4 Erfolg durch Prozesse | 57 |
3.5 Zusammenfassung | 59 |
4 Evolution von Software | 62 |
4.1 Softwarekategorien nach Lehman | 63 |
4.1.1 S-Typ-Systeme | 63 |
4.1.2 P-Typ-Systeme | 64 |
4.1.3 E-Typ-Systeme | 64 |
4.1.4 Ursache für die Softwareevolution | 65 |
4.2 Gesetze der Softwareevolution | 66 |
4.2.1 Gesetze nach Lehmann | 66 |
4.2.2 Bemerkungen zu den Gesetzen | 70 |
4.2.3 Einfluss der Erstentwicklung | 72 |
4.3 Lehren aus den Gesetzen der Softwareevolution | 72 |
4.4 Zusammenfassung | 75 |
Teil II | 76 |
5 Einbettung des Wartungsprozesses | 78 |
5.1 Prozesse rund um die Wartung | 78 |
5.1.1 Tätigkeitsbereiche und ihre Zielsetzungen rund um die Wartung | 78 |
5.1.2 Was genau ist der Wartungsprozess? | 82 |
5.2 Beiträge der verschiedenen Tätigkeitsbereiche zur Wartung | 84 |
5.2.1 Die Lebenslinie der (Weiter-)Entwicklung | 84 |
5.2.2 Die Lebenslinie des speziellen Wartungsprozesses | 86 |
5.2.3 Die Lebenslinie des Supportprozesses | 88 |
5.3 Der Produktlinienmanagement-Prozess | 91 |
5.3.1 Grundgerüst eines allgemeinen Wartungsprozesses | 91 |
5.3.2 Änderungsmanagement | 94 |
5.3.3 Paketierung | 98 |
5.4 Zusammenfassung | 100 |
6 Der Wartungsprozess | 102 |
6.1 Der spezielle Wartungsprozess und seine Ablauforganisation | 102 |
6.2 Aufbauorganisation und Rollen | 112 |
6.2.1 Rollen in der Wartung | 113 |
6.2.2 Aufbauorganisation – permanente Organisation oder Projektorganisation? | 117 |
6.2.3 Formen der Aufbauorganisation | 118 |
6.3 Konfigurationsmanagement in der Wartung | 122 |
6.3.1 Zweck und Begriffe des Konfigurationsmanagements | 122 |
6.3.2 Konfigurationsmanagement im Kontext der Softwarewartung | 124 |
6.4 Qualitätsmanagement in der Wartung | 126 |
6.4.1 Was ist Qualität? | 126 |
6.4.2 Regelkreis der Qualitätssicherung | 128 |
6.4.3 Auswahl der Maßnahmen in der Wartung | 132 |
6.5 Dokumentation in der Wartung | 134 |
6.6 Zusammenfassung | 135 |
7 Wissen – Bedeutung in der Wartung | 138 |
7.1 Wissen aufbauen heißt Mitarbeiter aufbauen | 138 |
7.1.1 Voraussetzungen schaffen | 140 |
7.1.2 Vorbilder gewinnen | 140 |
7.1.3 Nachhaltigkeit sicherstellen | 143 |
7.2 Umgang mit Wissen | 144 |
7.2.1 Wert von Wissen | 145 |
7.2.2 Wissensinventar | 147 |
7.2.3 Wissensaufbau und -transfer | 152 |
7.3 Retrospektive | 156 |
7.3.1 Themen und Teilnehmerkreis | 157 |
7.3.2 Ablauf einer Retrospektive | 158 |
7.4 Zusammenfassung | 160 |
8 Wartungskosten | 162 |
8.1 Finanzierungsmöglichkeiten für die Wartung | 163 |
8.2 Kostenblöcke in der Wartung | 166 |
8.3 Vorhersage der Wartungskosten | 169 |
8.3.1 Entwicklungs- versus Wartungsaufwand | 169 |
8.3.2 Kalkulation der Wartungskosten | 170 |
8.3.3 Wartungsroadmap | 173 |
8.4 Wartungskosten positiv beeinflussen | 180 |
8.4.1 Gemeinsames Verständnis | 181 |
8.4.2 Schrittweises Vorgehen | 182 |
8.4.3 Folgekosten aus der Entwicklung | 183 |
8.4.4 Übergang Entwicklung – Wartung | 184 |
8.4.5 It’s not a bug, it’s a feature | 185 |
8.4.6 Einfluss von COTS | 186 |
8.5 Outsourcing und Offshoring in der Wartung | 188 |
8.5.1 Begriffe | 188 |
8.5.2 Outsourcing und Offshoring allgemein | 189 |
8.5.3 Outsourcing und Offshoring im Kontext der Wartung | 191 |
8.6 Zusammenfassung | 193 |
Teil III | 196 |
9 Metriken | 198 |
9.1 Was sind Metriken? | 199 |
9.1.1 Was wir vermessen können | 201 |
9.1.2 Wie wir das richtige Maß finden | 202 |
9.1.3 Was ein gutes Maß ausmacht | 204 |
9.2 Prozessmetriken: Prozesse verbessern | 205 |
9.2.1 Prozessverbesserungen erreichen | 205 |
9.2.2 Beispiele von Prozessmetriken | 206 |
9.3 Produktmetriken: Produktzerfall im Fokus | 209 |
9.3.1 Größen-/Volumenmetriken (konventionell) | 212 |
9.3.2 Struktur-/Komplexitätsmetriken (konventionell) | 213 |
9.3.3 Größen-/Volumenmetriken (objektorientiert) | 217 |
9.3.4 Struktur-/Komplexitätsmetriken (objektorientiert) | 218 |
9.4 Ein Kompass für die Wartung | 220 |
9.5 Zusammenfassung | 222 |
10 Softwareanalyse und -visualisierung | 224 |
10.1 Programmverstehen | 225 |
10.1.1 Ziel des Programmverstehens | 225 |
10.1.2 Artefakte als Basis zum Programmverstehen | 226 |
10.2 Softwarevisualisierung | 227 |
10.2.1 Möglichkeiten und Nutzen | 227 |
10.2.2 Beispiel: Polymetrische Sichten | 228 |
10.3 Softwareanalysetechniken | 230 |
10.3.1 Statische Analyse | 230 |
10.3.2 Dynamische Analyse | 230 |
10.3.3 Evolutionäre Analyse | 231 |
10.4 Architekturanalyse | 231 |
10.4.1 Funktionsweise einer Architekturanalyse | 232 |
10.4.2 Beispiele statischer Architekturanalysen | 233 |
10.5 Codeanalyse | 237 |
10.5.1 Beispiele statischer Codeanalysen | 237 |
10.5.2 Beispiele dynamischer Codeanalysen | 243 |
10.5.3 Beispiele evolutionärer Codeanalysen | 244 |
10.6 Werkzeugunterstützung | 245 |
10.7 Zusammenfassung | 246 |
11 Reengineering, Sanierung und Migration | 248 |
11.1 Begriffswelt des Reengineering | 249 |
11.1.1 Reverse Engineering | 249 |
11.1.2 Restrukturierung | 250 |
11.1.3 Forward Engineering | 250 |
11.1.4 Reengineering | 251 |
11.2 Verbesserungen der Wartbarkeit mit Refactoring | 252 |
11.2.1 Wann wird üblicherweise refactoriert? | 252 |
11.2.2 Tests als Sicherheitsnetz | 252 |
11.2.3 Exemplarische Bad Smells, Refactorings und Transformationen | 253 |
11.2.4 Ausführungen zu Bad Smells und Refactorings | 255 |
11.2.5 Refactorings sind sinnvoll, sind sie aber bezahlbar? | 257 |
11.3 Sanierung: Wenn Software ernsthaft krank ist | 258 |
11.4 Migration: Schritt halten mit der Umgebung | 260 |
11.5 Zusammenfassung | 262 |
12 Test | 264 |
12.1 Grundlagen des Testens | 264 |
12.1.1 Fehlerbegriff | 265 |
12.1.2 Ziel des Testens | 266 |
12.1.3 Validierung versus Verifizierung | 267 |
12.1.4 Testaufwand versus Produktqualität | 268 |
12.2 Testen in der Wartung | 269 |
12.2.1 Die Auswirkungsanalyse als zentrales Element | 269 |
12.2.2 Testaufwand im Wartungsfall reduzieren | 273 |
12.3 Testmethoden | 275 |
12.3.1 Klassifikation der Testmethoden | 275 |
12.3.2 Statische Tests | 278 |
12.3.3 Dynamische Tests | 284 |
12.3.4 Wichtige Testmethoden in der Wartung | 295 |
12.4 Zusammenfassung | 297 |
Anhang | 300 |
Wartungsmanagement kompakt | 302 |
Abkürzungen | 304 |
Glossar | 306 |
Literatur | 318 |
Webreferenzen | 324 |
Index | 326 |
www.dpunkt.de | 0 |