Agile Java-Entwicklung in der Praxis Michael Hüttermann O'REILLY* Beijing Cambridge Famham Köln Paris Sebastopol Taipei Tokyo
Inhalt Prolog Einleitung XI XV Teil I: Die Methodik agiler Softwareentwicklung 1 Einführung in die agile Entwicklung 3 Geschichte der agilen Entwicklung 4 Das Agile Manifest 4 Die Prinzipien 6 2 Die Vorteile agiler Entwicklung 13 Die Kundensicht 13 Programmierersicht 16 Die Projektsicht 19 Soziale und betriebswirtschaftliche Sicht 21 3 Agile Ansätze und traditionelles Vorgehen - eine Abgrenzung 23 Prozessmodelle 23 Traditionelle Modelle 24 Was agile Entwicklung nicht ist 26 Ausprägungen agiler Entwicklung 26 4 Dimensionen agiler Entwicklung 45 Motivation 45 Kommunikation 57 Team 64 I V
Wissen 69 Zeit 76 Die größten Verschwender 79 5 Die Durchführung 81 Aufbauorganisation 81 Das Release 83 Die Iteration 91 Pair Programming 93 Stand-up-Meetings 94 Konfigurationsmanagement 95 Test-Driven Development 97 Continuous Integration (CI) 99 Refactoring 102 Standards 102 Tracking 105 Abschluss 109 6 Agile Prozesse einfuhren 112 Wer überzeugt werden muss 112 Einführungsstrategien 114 Fallstricke 117 Besondere Situationen 120 Teil II: Eine agile technische Infrastruktur 123 7 Ant-Grundlagen 125 Installationshinweise 126 Terminologie und Konzept 126 8 Versionskontrolle mit Subversion 128 Versionskontrolle 128 Subversion 129 Installation und Konfiguration 131 Nutzung 136 Revisionen 142 Versionierung (Tags) 143 Separate Entwicklungszweige (Branches) 145 VI Inhalt
Locking 148 Automatisierte Nutzung mit Ant 150 Zusätzliche Werkzeuge 154 Zusammenfassung 156 9 Komponententests mit JUnit 157 Komponententests 158 JUnit 158 Ein erstes Beispiel 159 JUnit 3.x vs. JUnit 4.x 164 Testanatomie 167 Instanzen und Abhängigkeiten 170 Testaggregation und Nebenläufigkeit 171 Welche Artefakte sollte ich testen? 176 Testautomatisierung und kontinuierliche Integration mit Ant 178 Test-Driven Development mit JUnit 185 Zusammenfassung 194 10 Testabdeckung mit EMMA und JUnit 195 Installation und Beispiel 195 Automatisierte Nutzung via Ant 198 Testabdeckung 202 Zusammenfassung 206 11 Der Einsatz von Mock-Objekten mit EasyMock 207 Von Mocks und Dummys 207 EasyMock installieren 209 Erstes Szenario:»Wegmocken«von Callbacks 210 Zweites Szenario:»Wegmocken«einer ressourcenintensiven DB-Schnittstelle. 218 Zusammenfassung 222 12 Komponententests mit TestNG 223 Steckbrief 223 Ein Beispiel: Agile, nebenläufige, gruppierte Verarbeitung 225 Aufruf der Tests: Das Build-Skript 236 Zusammenfassung 246 Inhalt VII
13 GUIstesten mitjemmy 247 Swing 247 Einführung in Jemmy 252 Ein ausführliches Beispiel: Testen der Filterung bei Tabellen 253 Zusammenfassung 264 14 Webanwendungen testen mitselenium 265 Architektur von Webanwendungen 265 Die Arbeitsweise von Selenium 268 Selenium IDE 269 Selenium RC - Remote Control 273 Kontinuierliche Integration mit Ant 278 Zusammenfassung 282 15 Akzeptanztests mit Fit 283 Akzeptanztests 283 Einführung in Fit 284 Vorgehen 284 Die verschiedenen Fixtures 285 Ein Rundgang: ColumnFixture 286 Zusammenfassung 291 16 Akzeptanztests für Webanwendungen mit WebTest 292 Überblick 292 Installation 293 Ein erstes Beispiel: Der WebTest-Selbsttest 293 Ein weiteres Beispiel: Auf Googles Spuren 296 Wiederverwendung 299 Reporting 300 Kontinuierliche Integration 305 Zusammenfassung 311 17 Projektkommunikation mittrac 316 Wikis 316 Trac 318 Zusammenfassung 324 VIII Inhalt
18 Ant-Teil 2: Praktische Einsatzszenarien 326 Das fundamentale Ant-Gerüst für einen Entwicklungszyklus 327 Erstes Szenario:»Continuous Integration«auf dem Integrationsrechner 331 Zweites Szenario:»Continuous Integration«auf einem Arbeitsplatzrechner... 331 Drittes Szenario:»Single Code Basis«-Redundanzen eliminieren unter CVS... 332 Viertes Szenario: Coding Guidelines überprüfen 338 Fünftes Szenario: HotSwap 345 Best Practices und Ant-Tipps 347 Zusammenfassung 349 19 Kontinuierliche Integration mit CruiseControl 351 Der pragmatische Ansatz: cron 351 Der umfassende Ansatz: CruiseControl 352 Zusammenfassung 360 20 Der Einsatz von Maven für Build-Prozesse 362 Funktionsumfang 363 Architektur 364 Prinzipien 365 Die ersten Schritte 367 Das POM 367 Phase und Goal 370 Lifecyles 371 Agile Entwicklung mit Maven 372 Zusammenfassung 383 Anhang: Weiterführende Literatur 387 Zur Methodik 387 Peopleware - der Faktor Mensch 388 Testen 388 Fit 388 Refactoring 388 TestNG 388 Ant, Maven 389 Subversion 389 Index 391 Inhalt IX