| Contents | 5 |
---|
| 1 Introduction | 11 |
---|
| 1.1 Why This Book? | 11 |
| 1.2 A Bit of History | 11 |
| 1.3 What Is Agile Software Development? | 12 |
| 1.4 Why Be Agile? | 13 |
| 1.5 What This Book Is About? | 13 |
| 1.6 Implementation Languages | 13 |
| 1.7 The Structure of the Book | 14 |
| 1.8 Where to Get More Information? | 16 |
| 1.9 Where to Go Online? | 16 |
| 2 Agile Methods and the Agile Manifesto | 18 |
---|
| 2.1 Introduction | 18 |
| 2.2 What Is Agile? | 18 |
| 2.3 The Agile Manifesto | 19 |
| 2.4 What Are Agile Methods? | 21 |
| 2.5 Agile Modelling | 23 |
| 2.6 XP: eXtreme Programming | 25 |
| 2.7 DSDM | 30 |
| 2.8 SCRUM | 34 |
| 2.9 Summary | 39 |
| 3 Agile Modelling | 40 |
---|
| 3.1 Introduction | 40 |
| 3.2 Modelling Misconceptions | 40 |
| 3.3 Agile Modelling | 44 |
| 3.4 What Sort of Models? | 49 |
| 3.5 Tool Misconceptions | 50 |
| 3.6 Updating Agile Models | 51 |
| 3.7 Summary | 52 |
| 4 How to Become an Agile Modeller | 53 |
---|
| 4.1 Introduction | 53 |
| 4.2 Agile Modelling Practices | 53 |
| 4.3 Adopt the Core Agile Modelling Practices | 57 |
| 4.4 Consider the Supplementary Practices | 64 |
| 4.5 Maximise Your Modelling Potential | 69 |
| 4.6 Agile Modelling Sessions | 71 |
| 4.7 Agile Models | 73 |
| 4.8 Agile Documentation | 73 |
| 4.9 Summary | 75 |
| 5 Extreme Programming (XP) | 76 |
---|
| 5.1 Introduction | 76 |
| 5.2 Core XP Values | 77 |
| 5.3 User Stories | 80 |
| 5.4 The Twelve XP Practises | 80 |
| 5.5 What Is So Extreme About Extreme Programming? | 93 |
| 5.6 Review | 93 |
| 6 Putting XP into Practise | 95 |
---|
| 6.1 Introduction | 95 |
| 6.2 Planning XP Projects | 96 |
| 6.3 Test First Coding | 106 |
| 6.4 Making Pair Programming Work | 115 |
| 6.5 Refactoring | 119 |
| 6.6 Keeping on Track | 122 |
| 6.7 Summary | 129 |
| 7 Agile Modelling and XP | 130 |
---|
| 7.1 Introduction | 130 |
| 7.2 The Fit | 130 |
| 7.3 Common Practises | 131 |
| 7.4 Modelling Specific Practises | 132 |
| 7.5 XP Objections to Agile Modelling | 136 |
| 7.6 Agile Modelling and Planning XP Projects | 137 |
| 7.7 XP Implementation Phase | 139 |
| 7.8 Focus on XP | 146 |
| 8 Agile Modelling and XP Reviewed | 148 |
---|
| 8.1 Introduction | 148 |
| 8.2 Review of XP/AM Practices | 148 |
| 8.3 Other Factors | 156 |
| 8.4 Architecture | 157 |
| 8.5 XP on Large Projects | 162 |
| 8.6 Where XP Works Best | 164 |
| 8.7 Summary | 164 |
| 9 Feature-Driven Development | 166 |
---|
| 9.1 Introduction | 166 |
| 9.2 Incremental Software Development | 168 |
| 9.3 Regaining Control: The Motivation Behind FDD | 169 |
| 9.4 Planning an Iterative Project | 173 |
| 9.5 Architecture Centric | 180 |
| 9.6 FDD and XP | 183 |
| 9.7 Summary | 185 |
| 10 Planning a Sample FDD Project | 187 |
---|
| 10.1 Introduction | 187 |
| 10.2 Initiating the Project | 187 |
| 10.3 The Overall Project Plan | 188 |
| 10.4 Planning the First Iteration | 190 |
| 10.5 Post Delivery | 196 |
| 10.6 Summary | 196 |
| 11 Agile Methods with RUP and PRINCE2 | 197 |
---|
| 11.1 Introduction | 197 |
| 11.2 Agile Modelling and RUP | 198 |
| 11.3 FDD and RUP | 208 |
| 11.4 Agile Methods and Prince2 | 209 |
| 11.5 Summary | 213 |
| 12 Introducing Agile Methods into Your Organisation | 214 |
---|
| 12.1 Introduction | 214 |
| 12.2 Selling Agile Methods | 214 |
| 12.3 Identifying a Suitable First Project | 215 |
| 12.4 Promoting an Agile Culture | 216 |
| 12.5 Building an Agile Team | 217 |
| 12.6 Adopting Agile Processes One at a Time | 217 |
| 12.7 Managing Existing Processes | 218 |
| 12.8 Working with Distributed Teams | 219 |
| 12.9 Get Some Experience | 219 |
| 13 Tools to Help with Agile Development | 220 |
---|
| 13.1 Introduction | 220 |
| 13.2 What Tools Do You Need? | 220 |
| 13.3 Eclipse: An Agile IDE | 221 |
| 13.4 Lightweight Modelling within Eclipse | 224 |
| 13.5 Building Applications with ANT | 226 |
| 13.6 Version Control with CVS | 229 |
| 13.7 Testing with JUnit | 230 |
| 13.8 Online References | 240 |
| 14 Obstacles to Agile Software Development | 241 |
---|
| 14.1 Introduction | 241 |
| 14.2 Management Intransigence | 241 |
| 14.3 The Failed Project Syndrome | 242 |
| 14.4 Developer Resistance | 243 |
| 14.5 Customer Opposition | 244 |
| 14.6 Contractual Difficulties | 245 |
| 14.7 Familiarity with Agility | 247 |
| References | 249 |
---|
| Index | 252 |