Visual Studio Team System (VSTS) gives Microsoft development teams a powerful, integrated toolset for Agile development. Visual Studio Team System: Better Software Development for Agile Teams is a comprehensive, start-to-finish guide to making the most of VSTS in real-world Agile environments.
Using a book-length case study, the authors show how to use VSTS to improve every aspect of software development, step by step–from project planning through design and from coding through testing and deployment.
Agile consultant Will Stott and Microsoft development lead James Newkirk carefully integrate theory and practice, offering hands-on exercises, practical insights into core Extreme Programming (XP) techniques, and much more.
Coverage includes
- Using VSTS to support the transition to Agile values and techniques
- Forming Agile teams and building effective process frameworks
- Leveraging Team Foundation Version Control to help teams manage change and share their code effectively
- Implementing incremental builds and integration with Team Foundation Build
- Making the most of VSTS tools for Test-Driven Development and refactoring
- Bringing agility into software modeling and using patterns to model solutions more effectively
- Using the FIT integrated testing framework to make sure customers are getting what they need
- Estimating, prioritizing, and planning Agile projects
Table of Contents:
Preface xxvii Acknowledgments xxxv About the Authors xxxvii Introduction: Broken Process 1 Welcome to the OSPACS Team 1
Section 1: Apply Sharp Tools and Values 9 Story from the Trenches 10
Chapter 1: Introduction to Visual Studio Team System 13 The Purpose and Structure of VSTS 13
Client Parts of VSTS 17
Server Parts of VSTS 27
Extending VSTS 30
Chapter 2: Agile Values 33 Tools and Values 33
The Agile Alliance 36
Extreme Programming (XP) 37
Review of Section 1: Sharp Tools and Values 45 The Team's Impressions 45
Agile Values 46
Section 2: Introduce Agile Development 49 Story from the Trenches 50
Chapter 3: Overview of Agile Development 53 What Is Different about an Agile Project? 53
Introduction to Extreme Programming 57
Isn't XP Just Hacking? 62
Chapter 4: Forming an Agile Team 65 The Nature of Agile Teams 65
Agile Team Structure 70
Reorganizing the OSPACS Team 76
Chapter 5: Team Foundation Process Frameworks 81 Team Projects and Process Frameworks 81
Microsoft Solutions Framework (MSF) 4.0 95
Frameworks for Specific Processes 100
Chapter 6: Improving Your Process Framework 107 Providing a New Metric for an Existing Process Framework 107
Improving Your Process 110
Review of Section 2: Introduce Agile Development 119 The Team's Impressions 120
Agile Values 121
Section 3: Use Version Control 123 Story from the Trenches 124
Chapter 7: Managing Change 127 Sharing Information among Your Team 127
Using a Version Control System 133
VSTS Support for Version Control Tools 144
Chapter 8: Setting Up TFS Version Control 149 Structuring Your Team Project 149
Establishing the Initial Baseline for Your Project 160
Other Set-Up Tasks 166
Chapter 9: Using TFVC in Your Project 173 Using TFVC When Coding 173
Common Version Control Tasks 177
Chapter 10: Policing Your Project with TFVC 191 Protecting Your Source Code 191
Establishing Policies for Source Code 195
Review of Section 3: Use Version Control 205 The Team's Impressions 206
Agile Values 207
Section 4: Build and Integrate Often 209 Story from the Trenches 210
Chapter 11: Building and Integrating Software 213 Software Construction 213
Automated Software Testing 217
Build and Test Cycles 222
Chapter 12: Working with Team Foundation Build 229 Welcome to Team Foundation Build 229
Build Management 245
Scaling Up Team Integration Builds 249
Review of Section 4: Build and Integrate Often 255 The Team's Impressions 256
Agile Values 258
Section 5: Practice Test-Driven Development 261 Story from the Trenches 262
Chapter 13: Introduction to TDD 265 The Nature of Test-Driven Development 265
Simple Test-First Programming Exercises 269
Getting Started with Test-First Programming 277
Chapter 14: Developing Your First Tests 283 Creating Visual Studio Projects for TFP 283
The Story behind the Tests 287
Create a Test List 289
Implementing the Tests 294
Chapter 15: Learning to Refactor 303 Doing Small Refactorings 303
Refactor As You Go 313
Doing a Big Refactoring 318
Chapter 16: Code Coverage and Performance 325 Code Coverage 325
Performance Analysis 331
Chapter 17: Integrating TFP Code with a User Interface 339 Implementing the User Interface 339
Simple Design 346
Review of Section 5: Practice Test-Driven Development 351 The Team's Impressions 352
Agile Values 354
Reinforcement of Agile Practices 355
Section 6: Explore by Modeling 357 Story from the Trenches 358
Chapter 18: Modeling with Agility 361 Introduction to Modeling 361
Values, Principles, and Practices of Agile Modeling 363
Agile Modeling in Use 366
Chapter 19: Creating Models 375 Free-form Diagrams 375
UML Diagrams 377
Using Modeling Tools 385
Chapter 20: Using Models in an Agile Project 395 Requirement Models 395
Architectural Models 405
Implementation Models 411
Chapter 21: Modeling Solutions with Patterns 415 What Is a Pattern? 415
Using Patterns in an Agile Project 421
Implementation of Patterns and Models 424
Emergence of Domain-Specific Languages 426
Review of Section 6: Explore by Modeling 433 The Team's Impressions 434
Agile Values 436
Section 7: Implement Customer Testing 439 Story from the Trenches 440
Chapter 22: Involving Customers in Testing 443 Agile Customer Testing 443
FIT: Framework for Integrated Test 445
Storytest-Driven Development 454
Chapter 23: Creating FIT Fixtures 459 Standard FIT Fixtures 459
Custom FIT Fixtures 476
Chapter 24: Running FIT with Team Foundation Build 481 Performing Customer Tests in Your Build Lab 482
Automated Customer Testing 487
Introducing Your Team to Customer Testing 491
Review of Section 7: Implement Customer Testing 501 The Team's Impressions 502 Agile Values 504
Section 8: Estimate, Prioritize, and Plan 507 Story from the Trenches 508
Chapter 25: Estimating and Prioritizing Stories 511 Working with Customer Stories 511
Estimating 516
Prioritizing 521
Chapter 26: Agile Planning 527 The Nature of Plans 527
Planning at Every Time Scale 530
Controlling Plans 538
Chapter 27: Managing Agile Projects 545 Using Visual Studio Team System for Project Management 545
Example Agile Planning Life Cycle 556
Top Ten Tips for Managing Agile Projects 567
Review of Section 8: Estimate, Prioritize, and Plan 571 The Team's Impressions 572
Agile Values 574
Section 9: Practice for Deployment 577 Story from the Trenches 578
Chapter 28: Moving into Production 581 Managing Deployment 581
Preparing for Deployment 587
Monitoring the Production Environment 592
Chapter 29: Developing Installation Programs 597 Introduction to Windows Installer 597
Creating an Installation Project with InstallShield 604
Developing Installation Programs on an Agile Team 613
ClickOnce Technology 620
Chapter 30: Deployment of Distributed Systems 625 Distributed System Architecture 625
Logical Datacenter Designer 629
Application Designer 638
System Designer 649
Deployment Designer 653
Review of Section 9: Practice for Deployment 661 The Team's Impressions 662
Agile Values 664
Section 10: Provide and Reveal Value 665 Story from the Trenches 666
Chapter 31: Producing Technical Reports 669 Revealing Valuable Information 669
Extracting Data from Team Foundation Server 674
Chapter 32: Generating Business Value 683 Lean Thinking 683
Changing the Economics of Software Development 688
Linking Agile to Other Process Improvement Initiatives 690
Review of Section 10: Provide and Reveal Value 693 The Team's Impressions 693
Agile Values 695
Retrospective: Fixing the Process 697 About Retrospectives 697
The OSPACS Team's Retrospective 700
Analysis of the Project Timeline 705
Is the OSPACS Team Extreme? 709
Appendixes 713 Appendix A: Setting Up VSTS for the Exercises 715 Appendix B: Software Project Environment for a Small Team 729 Appendix C: Agile Workspace 753 List of Exercises 763 List of Extreme Programming Practices 771 Glossary 773 Bibliography 789 Resources 797 Index 805
About the Author :
Will Stott is an associate of Exoftware, a consulting group specializing in Agile practices, and a freelance consultant based in Montreux, Switzerland. Will has worked with Microsoft technologies since the early days of MS-DOS and now specializes in C++ and C# development using Visual Studio. He has published a number of articles about Agile development and has spoken at various conferences in the United Kingdom and Europe.
James Newkirk is the product unit manager for CodePlex, Microsoft's community open source project hosting site. He is the coauthor of Test-Driven Development in Microsoft .NET (Microsoft Press, 2004). Prior to joining Microsoft he coauthored "Enterprise Solution Patterns in .NET" (Microsoft patterns & practices) and Extreme Programming in Practice (Addison-Wesley, 2001).