Stefan Richter Feature-based Programming Planung, Programmierung, Projekt-Management: Über die Kunst systematisch zu planen und mit Agilität umzusetzen ADDISON-WESLEY An imprint of Pearson Education München Boston San Francisco Harlow, England Don Mills, Ontario Sydney Mexico City Madrid Amsterdam
Vorwort 9 I Einleitung 11 1.1 Warum dieses Buch? 11 1.2 Danksagungen 16 1.3 Wie ist das Buch aufgebaut? 18 1 Feature-based Programming im Vergleich 19 2 Definition: Wann ist ein Projekt gescheitert? 21 3 Anatomie eines klassischen Software-Projektes 23 3.1 Spezifikation 23 3.2 Software-Design und Architektur 23 3.3 Aufwandsschätzung und Realisierungsplan 24 3.4 Programmierung und Änderungen an der Spezifikation 24 3.5 Aktualisierung des Realisierungsplans 26 3.6 Auslieferung und Inbetriebnahme 26 3.7 Produktivbetrieb, Stabilität und Performance 27 3.8 Was ist jetzt eigentlich schief gelaufen? 28 4 Anatomie eines Feature-based Programming-Projektes 31 4.1 Der Einkaufszettel des Kunden: Die Feature-Liste 31 4.2 Plan den Planlosen: Der Release-Plan 33 4.3 GPS im Feature-Dschungel: Das Projekt-Checking 34 4.4 So sicher wie das Amen in der Kirche: Neue Features während der Entwicklung 35 4.5 Planen, was schief gehen kann: Der Maßnahmenplan 36 4.6 Der Zieleinlauf: Auslieferung und Abnahme 37 5 AntiPatterns in klassischen Software-Projekten 39 5.1 Unwissenheit 40 5.2 Bürokratie 41 5.3 Stille Post 42 5.4 Death by Planning 42 5.5 Death by Design 43 5.6 Potemkinsche Dörfer 44
5.7 Nostradamus-Syndrom 45 5.8 98%-Syndrom 46 5.9 Meetingitis 47 5.10 Umgekehrte Evolution 48 5.11 Unzuverlässigkeit 48 5.12 Feature-based Programming gegen AntiPatterns 49 II Feature-based Programming im Detail 51 6 Feature-based Programming in a Nutshell 53 6.1 Ausgangslage: Agilität versus Bürokratie 53 6.2 Was ist anders an Feature-based Programming? 55 7 Elemente des Feature-based Programming 59 7.1 Kunde 59 7.2 Dienstleister 59 7.3 Projektbeteiligte 59 7.4 Entwickler, Entwicklungsteam, Programmierer 59 7.5 Manager 59 7.6 Feature 60 7.7 Feature-Liste 61 7.8 Releases, Deployments und Kunden-Feedback 61 7.9 Release-Plan 62 7.10 Maßnahmen 62 7.11 Maßnahmenplan 63 7.12 Actions-on-Planung 63 7.13 Kunden-Test-Feedback 64 7.14 SOP: Standard Operation Procedures 64 7.15 Projekt-Checking 64 7.16 Erfahrungsstufen 65 7.17 Performance Rating 66 8 Das Biotop für Feature-based Programming 67 8.1 Analyse, Planung und Entwurf 67 8.2 Umsetzung und Planaktualisierung 67 8.3 Iterative Auslieferung und Feature-Aktualisierung 68 8.4 Finale Auslieferung und Abnahme 69
9 Prozesse im Feature-based Programming 71 9.1 Die Projektphasen 71 9.2 Die Planungsphase 71 9.3 Wie schreibt man gute Feature-Listen? 72 9.4 Wie erstellt man einen Release-Plan? 81 9.5 Wie führt man einen Maßnahmenplan? 87 10 Exkurs Projekt-Controlling: Nadelstreifen und Rollkragenpullover (von Claudia Dietze) 91 10.1 Projekt-Checking 91 10.2 Projektkonto 102 10.3 Ratschläge und Weisheiten 107 IM Feature-based Programming-Techniken 109 11 Programmierung versus Modellierung 111 11.1 Chinese Parliament 112 11.2 Package Design 113 11.3 Automatische Dokumentation 115 11.4 Before-Code-Reviews 116 11.5 After-Code-Reviews 116 11.6 Infosionen 117 11.7 Planning Game 117 11.8 Continuous Integration 118 11.9 Small Releases 118 11.10 System Metaphor 119 11.11 Refactoring 119 11.12 Test-before-Code 119 11.13 Collective Ownership 120 11.14 Coding Standards 120 11.15 40-HourWeek 120 11.16 On-=site Customer 121 11.17 Simple Design 121 11.18 Pair Programming 121 IV Feature-based Programming Teams 123 12 Kooperation statt Kontrolle 125 12.1 Der kulturelle Status quo 125 12.2 Das Ideal der kooperativen Organisation 127
8 Inhaltsverzeichnis 13 Wissen ist Macht: Die Erfahrungsstufen 13.1 Programmierung 13.2 Modul-Management 13.3 Programm-Management 13.4 Projekt-Management 13.5 Chapter-Management 13.6 Erfahrungsstufen versus Beförderung 14 Erfahrungen ausbauen und konservieren 14.1 SOP: Standard Operation Procedures 14.2 SitReps: Situation Reports 14.3 FitReps: Fitness Reports 14.4 Fraeen kostet nichts: Das Performance Rating 130 130 131 132 133 133 134 134 135 15 Kultur und Umgebung 137 V Feature-based Programming-Werkzeuge 139 16 Erst der Prozess, dann das Werkzeug 141 17 Feature Management mit Captain Feature 143 17.1 Login und Stammdaten 144 17.2 Nach dem Login... 144 17.3 Anlegen eines Projektes 146 17.4 Erstellung einer Feature-Liste 150 17.5 Die tägliche Arbeit mit Captain Feature 150 17.6 Vom Plan zum Programm 152 18 Einheitliche Projektstrukturen mit Fresh 153 19 Generierbare Dokumentation mit DocOctopus 157 20 Analyse von Paket-Abhängigkeiten mit Dr. Freud 161 A Anhang: Die Entstehungsgeschichte des Feature-based Programming 165 A.l Nerds bei der Nachtschicht 165 A.2 Kurze Release-Zyklen, null Fehler und Zero Tolerance 167 Literaturverzeichnis 169 Index 171