Martin Lippert Stefan Roock Henning Wolf Software entwickeln mit extreme Programming Erfahrungen aus der Praxis dpunkt.verlag
Inhaltsverzeichnis 1 Einleitung 1 1.1 Die XP-Werte 4 1.2 Die XP-Prinzipien 5 1.3 Die XP-Techniken 9 1.4 Kein XP-Projekt 14 1.4.1 Bewertung des Projektes 15 1.5 Ein XP-Projekt 17 1.5.1 Bewertung des Projektes 19 1.6 Überblick über das Buch 19 1.7 Literatur 20 2 Die XP-Techniken 23 2.1 Kunde vor Ort (engl. On-Site Customer) 23 2.1.1 Beschreibung 23 2.1.2 Beispiel: Kunde vor Ort 24 2.1.3 Erfahrungen 25 2.1.4 Beispiel: Angepasste Technik 28 2.1.5 Empfehlungen 29 2.1.6 Bezug zu anderen XP-Techniken 29 2.2 Planungsspiel (engl. Planning Game) 30 2.2.1 Beschreibung 30 2.2.2 Erfahrungen 31 2.2.3 Empfehlungen 35 2.2.4 Bezug zu anderen XP-Techniken 36 2.3 Metapher (engl. Metaphor) 37 2.3.1 Beschreibung 37 2.3.2 Erfahrungen 37 2.3.3 Beispiel: WAM-Metaphern 39 2.3.4 Empfehlungen 40 2.3.5 Bezug zu anderen XP-Techniken 40
xii Inhaltsverzeichnis 2.4 Kurze Releasezyklen (engl. Short Releases) 41 2.4.1 Beschreibung 41 2.4.2 Beispiel: Kurze Releasezyklen bei der Ablösung eines Hostsystems 42 2.4.3 Erfahrungen 44 2.4.4 Empfehlungen 49 2.4.5 Bezug zu anderen XP-Techniken 50 2.5 Testen (engl. Testing) 50 2.5.1 Komponententests: Beschreibung 50 2.5.2 Komponententests: Beispiel 52 2.5.3 Komponententests: Erfahrungen 54 2.5.4 Diskussion: Wiederverwendung von Komponententests 55 2.5.5 Diskussion: Komponententests als Testlabor für erbende Klassen 57 2.5.6 Diskussion: Testen und das Vertragsmodell 57 2.5.7 Akzeptanztests: Beschreibung 59 2.5.8 Akzeptanztests: Beispiel 60 2.5.9 Akzeptanztests: Erfahrungen 61 2.5.10 Empfehlungen 63 2.5.11 Bezug zu anderen XP-Techniken 63 2.6 Einfaches Design (engl. Simple Design) 65 2.6.1 Beschreibung 65 2.6.2 Erfahrungen 68 2.6.3 Diskussion: Einfache Designs etablieren 72 2.6.4 Diskussion: Einfaches Design und Frameworks 72 2.6.5 Diskussion: Performance-Optimierungen 73 2.6.6 Empfehlungen 74 2.6.7 Bezug zu anderen XP-Techniken 74 2.7 Refactoring 76 2.7.1 Beschreibung 76 2.7.2 Erfahrungen 76 2.7.3 Beispiel: Umbenennen einer Operation in einer Oberklasse 79 2.7.4 Empfehlungen 80 2.7.5 Bezug zu anderen XP-Techniken 81 2.8 Programmieren in Paaren (engl. Pair Programming) 82 2.8.1 Beschreibung 82 2.8.2 Erfahrungen 83 2.8.3 Empfehlungen 92 2.8.4 Bezug zu anderen XP-Techniken 93
Inhaltsverzeichnis 2.9 Gemeinsame Verantwortlichkeit (engl. Collective Ownership) 94 2.9.1 Beschreibung 94 2.9.2 Erfahrungen 94 2.9.3 Empfehlungen 97 2.9.4 Bezug zu anderen XP-Techniken 97 2.10 Fortlaufende Integration (engl. Continuous Integration)... 98 2.10.1 Beschreibung 98 2.10.2 Erfahrungen 100 2.10.3 Fortlaufende Integration in einem Ausbildungsprojekt 105 2.10.4 Diskussion: Integrationen beschleunigen durch Komponenten 105 2.10.5 Empfehlungen 106 2.10.6 Bezug zu anderen XP-Techniken 107 2.11 Programmierstandards (engl. Coding Standards) 108 2.11.1 Beschreibung 108 2.11.2 Erfahrungen 108 2.11.3 Empfehlungen 110 2.11.4 Bezug zu anderen XP-Techniken 111 2.12 40-Stunden-Woche (engl. 40 Hour Week) 112 2.12.1 Beschreibung 112 2.12.2 Erfahrungen 112 2.12.3 Empfehlungen 115 2.12.4 Bezug zu anderen XP-Techniken 115 2.13 Literatur 116 3 Rollen 121 3.1 Kunde (engl. Customer) 121 3.2 Programmierer (engl. Programmer) 122 3.3 Tester 123 3.4 Verfolger (engl. Tracker) 123 3.5 XP-Trainer (engl. XP Coach) 125 3.6 Berater (engl. Consultant) 126 3.7 Big Boss 126 3.8 Erfahrungen 127 3.8.1 Auftraggeber (engl. Client) 127 3.8.2 Anwender (engl. User) 128 3.8.3 Projektverantwortlicher 129 3.9 Empfehlungen 130 3.10 Literatur 130
xiv Inhaltsverzeichnis 4 Artefakte 131 4.1 Story-Cards 132 4.1.1 Adaption: Szenarios 133 4.1.2 Adaption: Glossar 135 4.1.3 Adaption: Projekttagebuch 136 4.2 Task-Cards 137 4.3 Releaseplan 140 4.3.1 Adaption: Projektetappen 140 4.3.2 Adaption: Kernsystem mit Ausbaustufen sowie Spezialsystemen 142 4.4 Iterationsplan 145 4.4.1 Adaption: Referenzlinien 145 4.5 Literatur 146 5 Organisation 149 5.1 Anforderungsermittlung 149 5.2 Projektplanung 153 5.3 Vertragsgestaltung 155 5.4 Sprints 156 5.5 Stand-Up-Meetings 157 5.6 Literatur 158 6 XP einführen 161 6.1 Einführungsstrategien 162 6.1.1 XP als Komplettpaket erlernen 162 6.1.2 XP schrittweise erlernen 163 6.1.3 Zusammenfassung 165 6.2 Der XP Coach 166 6.3 Wie wird man ein XP-Entwickler? 167 6.4 Management für XP-Projekte 168 6.5 Anpassung von XP 169 6.6 Typische Fallen und wie man sie umgeht 172 6.7 XP spielerisch 175 6.7.1 extreme Hour 175 6.7.2 explanations Game 176 6.8 Literatur 177
Inhaltsverzeichnis 7 Spezielle Konstellationen 179 7.1 extreme Frameworking 179 7.2 Migration von Legacy-Systemen 182 7.3 E-Business 183 7.4 Produktentwicklung 185 7.5 Outsourcing 187 7.6 Zertifizierung von Entwicklungsprozessen 189 7.7 Literatur 190 8 Projektberichte 191 8.1 Projekt Kermit 192 8.1.1 Projektkontext 192 8.1.2 XP-Einsatz 193 8.1.3 Bewertung 194 8.2 Projekt Gonzo 194 8.2.1 Projektkontext 194 8.2.2 XP-Einsatz 196 8.2.3 Bewertung 197 8.3 Projekt Scooter 200 8.3.1 Projektkontext 200 8.3.2 XP-Einsatz 201 8.3.3 Bewertung 206 8.4 Projekt JWAM 207 8.4.1 Projektkontext 207 8.4.2 XP-Einsatz 207 8.4.3 Bewertung 212 9 Bewertung und Ausblick 213 9.1 Bewertung 213 9.2 Für Bedenkenträger 214 9.2.1 Für Projektleiter und Manager 214 9.2.2 Für Entwickler 215 9.3 Ausblick 216 9.4 Literatur 216
xvi Inhaltsverzeichnis Anhang A Häufig gestellte Fragen (FAQ) 217 Anhang B Methodenintegration 221 B.l Der WAM-Ansatz 222 B.2 Die WAM-Schichtenarchitektur ~ 223 B.3 Literatur 227 Anhang C Programmierwerkzeuge 229 C.l Entwicklungsumgebungen 229 C.2 Versionsverwaltungssysteme 230 C.3 Testtools 232 C.4 Refactoring-Browser 233 C.5 Make-Werkzeuge 234 Anhang D Programmierrichtlinien 239 Glossar 269 Stichwortverzeichnis 279