Pro Agile.NET Development with Scrum Jerrel Blankenship Matthew Bussa Scott Millett Apress*
Contents About the Authors About the Technical Reviewers Acknowledgments Introduction xv xvi xvii xviii Chapter 1: The Art of Agile Development 1 Why the Need for Agile? 1 It's What I Asked for But Not What I Need 1 Iterative Change 3 Defining Agile 5 The Agile Manifesto 5 Key Features of Agile 7 The Flavors of Agile 8 Scrum 8 extreme Programming (XP) 9 Crystal 9 Dynamic Systems Development Method (DSDM) 10 Feature-Driven Development (FDD) 10 Lean Software Development 10 Summary 11 Chapter 2: Managing Agile Projects with Scrum 13 What Is Scrum? 13
Plan-Driven vs. Value-Driven Methods 14 Waterfall Method (Plan Driven) 14 Scrum Method (Value Driven) 15 Fixed vs. Variable Factors 16 Scrum Artifacts 17 Product Backlog 17 Sprint Backlog 19 Burn-down chart 20 Acceptance Criteria 21 Scrum Roles 21 Pig Roles 22 Chicken Roles 23 Scrum Activities 23 Sprint Planning 24 Daily Stand-ups (Scrums) 25 Sprint Review 25 Sprint Retrospectives 25 Summary 26 Chapter 3: extreme Programming 29 XP Values 29 XP Practices and Principles 30 Planning 33 Environment 41 Self-Organization 42 Shared Understanding 44 Commitment to Development Excellence 46 Quality Assurance 49
Summary 51 Chapter 4: Sprint 0: Generating the Product Backlog 53 The Project: Online Blackjack Gambling 53 Mission Statement 54 Team Name 54 Team Ground Rules 54 Technical User Stories 55 Walking the Development Skeleton 55 Capturing Features with User Stories 60 Playing Blackjack Stories 60 Playing for Money Stories 68 Member Account Stories 73 Reporting Stories 73 Technical Stories 74 Initial Product Backlog 76 Planning Poker 78 Game Play: Initial Play 78 Game Play: Start Game 78 Game Play: Deck of Cards 80 Game Play: Hit 80 Game Play: Stand 80 Game Play: Win 80 Game Play: Dealer Rules 81 Game Play: Double 81 Game Play: Split 82 Member Registration 82 Managing Member Accounts 82 Cashing In 82
Prioritizing the Backlog 83 Committing to the First Sprint 85 Summary 86 Chapter 5: Sprint 1: Starting a Game 87 Sprint Planning Meeting 87 The Theme of the Sprint 87 Determining Availability and Capacity 88 Planning Poker 88 Project Management/Feedback Progress 92 Sprint 1 's Backlog 94 Day1 95 Daily Stand-Up 95 Developing the First Story: The Initial Bet Feature 96 Implementing the First Story 96 Day 4 119 Daily Stand-Up 119 Working on the Next User Story: Deck of Cards 120 Adding the SpecFlow Feature 121 Adding Scenarios 121 Implementing the "Check for 52 Different Cards" Scenario 124 Day 6 126 Daily Stand-Up 126 Final User Story of the Sprint: Start Game 126 Adding the SpecFlow Feature 127 Adding Scenarios 127 Day 10 129 Sprint 1 Retrospective 129
Product Demo 132 Summary 133 Chapter 6: Sprint 2: Playing a Basic Game 135 Sprint Planning Meeting 135 The Theme of the Sprint 135 Determining Availability and Capacity 135 Planning Poker 136 Sprint 2's Backlog 140 Day1 140 Daily Stand-Up 140 Developing the User Story: Hit 140 Adding the SpecFlow Feature 142 Using BDD to Drive the Feature Development 144 Day 4 145 Daily Stand-Up 146 Working on the User Story: Stand 146 Adding the SpecFlow Feature 147 Add Scenario -147 Day 6 149 Daily Stand-Up 149 Final User Story of the Sprint: Win 149 Adding the SpecFlow Feature 150 Adding Scenarios 151 Day 10 154 Sprint 2 Retrospective I54 Product Demo 158 Summary 159
Chapter 7: Sprint 3: Changing the Game 161 Sprint Planning Meeting 161 The Theme of the Sprint 162 Determining Availability and Capacity 162 Planning Poker 162 Sprint 3's Backlog 167 Day1 168 Daily Stand-Up 168 Developing the User Story: Dealer Rules 168 Adding the SpecFlow Feature 169 Day 4 171 Daily Stand-Up 171 Working on the User Story: Double Stake 172 Adding the Double Stake SpecFlow Feature 174 Using BDD to Drive the Feature Development 175 Wiring Up and Getting the Scenario to Pass 183 Day 6 188 Daily Stand-Up 188 User Story: Game Play Insurance 188 Adding the SpecFlow Feature 190 Adding Scenarios 191 Day 10 195 Product Demo 195 Retrospective 197 Summary 202 Chapter 8: Sprint 4: The Release 203 Sprint Planning Meeting 203
The Theme of the Sprint 203 Determining Availability and Capacity 203 Planning Poker 204 Sprint 4's Backlog 208 Day 1 209 Daily Stand-up 209 Day 4 209 Daily Stand-up 209 Developing a Feature: Paying Out 210 Day 6 235 Daily Stand-up 235 Day 10 236 Product Demo 236 Retrospective 238 Summary 241 Chapter 9: Code Review 243 Solution Overview 243 Infrastructure Project Domain Project Acceptance Test Project Core Test Project 244 246 259 264 NHibernate Infrastructure Project 265 Web Project StructureMap 267 269 Summary Chapter 10: What's Ahead for You and Scrum? 273 Scrum 273 271
Product Demos 274 Retrospectives 275 Continuous Integration 276 Plan-Do-Study-Act 276 extreme Programming 277 Where to Go from Here 278 Appendix A: TDD Primer with NUnit 281 Installation 281 Web Page Installation 281 NuGet Installation 283 TDD Walk-through 286 Running NUnit 290 Adding Another Test 293 Summary 294 Appendix B: BDD Primer with SpecFlow. 297 Outside-ln Software Development 297 SpecFlow 298 BDD Walk-through 299 Writing Your Feature 302 Scenario 1: Navigation to MathPage 303 Scenario 2: Add Two Numbers 307 Summary 309 Appendix C: Mocking with Moq...311 Why Mocking 311 Installation 311 Web Page Installation 312 NuGet Installation 312
Moq Walk-through 314 The Product Class 314 Summary 316 Appendix D: Manage a Product Backlog with Pivotal Tracker. 319 Sign Up 319 Create a Project 320 Keeping Things in Sync 323 Summary 323 Appendix E: Web Testing with WatiN 325 Installation 325 Web Page Installation 325 NuGet Installation 326 WatiN Test Walk-through 328 Remote WatiN Test 328 Testing WatiN for Local Web Applications 331 CassiniDev 331 Summary 334 Appendix F: Source Control with SVN 335 Distributed Systems vs. Centralized Systems 335 Installation 335 Server Installation 336 Client Installation 339 Communicating from Client to Server 340 Working Folder 342 Importing into SVN with TortoiseSVN 343 Online SVN Hosting 348
Summary 348 Appendix G: Continuous Integration with Cruise Control.NET 351 Continuous Integration 351 CruiseControl.NET 351 Installation 352 Stand-Alone Application 354 Windows Service 354 CruiseControl.NET Web Dashboard 355 CruiseControl.NET Configuration and Setup 360 Adding a Project 360 Setting up CCTray 361 Summary 362 Index 365