home

Complete Table of Contents

Skip Navigation Links
 
Skip Navigation Links.

   Preface

   Introduction – Broken Process


Section 1: Apply Sharp Tools and Values

Chapter 1: Introduction to Visual Studio Team System
  • Purpose and Structure of VSTS
    • Elevator Pitch
    • Typical Organization of VSTS for a Small Team
    • Functional Components of VSTS
  • Client Parts of VSTS
    • Differentiation of VSTS Products – the Team Editions
    • Visual Studio Professional
    • Team Explorer
    • VSTS Tools
  • Server Parts of VSTS
    • Team Foundation Server (TFS)
    • Project Portal and Report Sites
    • Team Foundation Build
  • Extending VSTS
    • Visual Studio Industry Partner Program
    • Visual Studio SDK
Chapter 2: Agile Values
  • Tools and Values
    • Buy or Build?
    • Software Values and Traditions
  • Agile Alliance
  • Extreme Programming
    • Communication
    • Feedback
    • Courage
    • Simplicity
    • Respect

Section 2: Introduce Agile Development

Chapter 3: Overview of Agile Development
  • What is Different About an Agile Project?
    • No Separate Development Phases
    • Specifying Requirements with Customer Stories
  • Introduction to Extreme Programming (XP)
    • Software Project Life-Cycle
    • Iterative and Incremental
    • Iteration and Release Cycles
    • Iterations Deliver Production Quality Code
    • Project Closure
  • Isn’t XP Just Hacking?
    • Why XP Doesn’t Encourage Hacking
Chapter 4: Forming an Agile Team
  • The Nature of Agile Teams
    • Working As a Design Team
    • Self-Organizing Teams
    • Team Size
    • Work That Doesn’t Suit Agile Teams
  • Agile Team Structure
    • Customer Roles
    • Developer Roles
    • Associated Roles
  • Reorganizing the OSPACS Team
    • Identifying Customers and Developers
    • Rearranging the Office Space
Chapter 5: Team Foundation Process Frameworks
  • Team Projects and Process Frameworks
    • Artifacts Generated When a Team Project is Created
    • Creating an MSF Agile Team Project
    • Deleting a Team Project
    • Giving Users Membership of your Team Project Groups
    • Gaining Access to your Team Project Services
    • Administering your Team Project Security Settings
    • Administering your Team Foundation Server Security Settings
    • Connecting to a Team Project
  • Microsoft Solutions Framework (MFS) 4.0
    • Work Item
    • Role
    • Activity
    • Work Stream
    • Tracks and Governance Check-points
  • Frameworks for Specific Processes
    • MSF for CMMI Process Improvement
    • MSF for Agile Software Development
    • MSF for XP
    • Process Framework Comparison
Chapter 6: Improving Your Process Framework
  • Providing a New Metric for an Existing Process Framework
    • Adding a New Work Item Type
    • Adding a New Query
  • Improving Your Process
    • Process Template Structure
    • Importing and Exporting Process Templates
    • Changing your Process Template

Section 3: Use Version Control

Chapter 7: Managing Change
  • Sharing Information among your Team
    • Why You Shouldn’t Keep Source Files in Shared Folders
    • Keeping Source Files in a Repository
  • Using a Version Control System
    • Security
    • Frequent Integration
    • Atomic Check-in
    • Rolling back Versions
    • Storing Deltas
    • Locking and Merging
    • Labeling and Branching
    • Software Configuration Management
  • VSTS Support for Version Control Tools
    • Integration with Visual Studio
    • TFVC Features
    • TFS Support for Eclipse and Other Types of IDE
Chapter 8: Setting Up Team Foundation Version Control
  • Structuring Your Team Project
    • Production and Spike Folders
    • Organization of Visual Studio Solutions, Projects and Directories
    • Deciding What to Put into Version Control
    • Version Control for Team Documents
    • Archiving Third Party Libraries
  • Establishing the Initial Baseline for Your Project
    • Adding Files and Directories to Version Control
    • Check In and Label the Baseline
  • Other Setup Tasks
    • Importing Source Files
    • Team Project Version Control Options
    • Visual Studio Source Control Options
    • Setting Up Security
    • Backup and Restore
Chapter 9: Using TFVC in Your project
  • Use of TFVC When Coding
    • Sample Programming episode: Version Control
  • Common Version Control Tasks
    • Using Workspaces
    • Merging Changes
    • Rolling-back to a Previous Version
    • Creating a Branch
    • Creating a Shelf
Chapter 10: Policing Your project with TFVC
  • Protecting your Source Code
    • Controlling Access to Individual Files and Folders
    • Setting Check-in Constraints
  • Establishing Policies for Source Code
    • Coding Standards
    • Static Code Analysis
    • Setting Static Code Analysis as a Check-in Policy
    • Implementing New Coding Standards
    • Updating Static Code Analysis Rules
    • Overriding Check-in Policies

Section 4: Build and Integrate Often

Chapter 11: Building and Integrating Software
  • Software Construction
    • Building and Integrating As a Team
    • Automated Build Lab
    • Software Integration and Test Environment
  • Automated Software Testing
    • Smoke Tests
    • Functional Tests
    • Structural (Unit) Tests
    • Quality of Service (QoS) Tests
    • Integration Testing
  • Build and Test Cycles
    • Local Build
    • Integration Build
    • Daily Build
Chapter 12: Working with Team Foundation Build
  • Welcome to Team Foundation Build
    • Setting-up Team Foundation Build
    • How Team Foundation Build Works
    • Role of MSBuild
    • Making a Build Validation Test
    • Setting-up Team Build Permissions
    • Creating Team Build Types
    • Scheduling a Daily Build
    • Sample Programming Episode: Integration Build
    • Deleting Build Products
  • Build Management
    • Process Technician Role
    • Build Notification
    • Build Identification
    • Build Reports
  • Scaling-up Team Integration Builds
    • Incremental Builds
    • Optimizing Package Dependencies for Building

Section 5: Practice Test-Driven Development

Chapter 13: Introduction to TDD
  • Settling into the Rhythm of Test-First Programming
    • Providing a Rhythm for Development
    • Top Down versus Bottom Up
  • Simple Test-first Programming Exercise
    • Define the List of Tests
    • Set Up a Basic Test Harness
    • TFP Cycle for the First Test
    • TFP Cycle for the Second Test
    • Review of the Exercises
  • Getting Started with Test-first Programming
    • Applying TFP in Your Team
    • Creating a List of Tests
    • Finding Additional Tests
    • Refactoring
Chapter 14: Developing Your First Tests
  • Creating Visual Studio Projects for TFP
    • How VSTS Supports Unit Testing
    • Setting Up Visual Studio Projects for Unit Testing
  • The Story Behind the Tests
    • About the ‘Image Favorites’ Story
    • Dividing the Story into Tasks
  • Create a Test-List
    • Finding your Initial Tests
    • Record the Test List
    • Organization of Your Test List Code
    • Shelving Your Test List Code
  • Implementing the Tests
    • Start with the Easiest Test
    • Fix a Failing Test and Refactor
    • Comments about Refactoring
    • Do the Next Three Tests Yourself
Chapter 15: Learning to Refactor
  • Doing Small Refactorings
    • Implement a Collection
    • Refactor the Test
    • Refactor the Production Code
    • Safely Changing Code Implementation
    • Comments about the Refactoring
  • Refactor As You Go
    • Implement More of the Requirement
    • Refactoring Opportunities
  • Doing a Big Refactoring
    • Remove the Middle Man
    • Changing the Type of a Collection
    • Take a Break
Chapter 16: Code Coverage and Performance
  • Coding Coverage
    • How to Generate Code Coverage Information
  • Performance Analysis
    • Sampling
    • Instrumentation
    • Example Performance Profiling Session
    • Improving Code’s Performance
    • Improving System Performance
Chapter 17: Integrating TFP Code with a User Interface
  • Implementing the User Interface
    • Define the User Interface
    • Create a Task List
    • Implement the Windows Forms Application
    • Aim to Create a Thin User Interface Layer
  • Simple Design
    • Code Criteria for Simple Design
    • Avoiding Big Design Up Front

Section 6: Explore by Modeling

Chapter 18: Modeling with Agility
  • Introduction to Modeling
    • Models and Process
  • Values, Practices, Principles of Agile Modeling
    • Values
    • Principles
    • Practices
  • Agile Modeling in Use
    • Group Modeling
    • Modeling in Pairs
    • Agile Model-Driven Development
Chapter 19: Creating Models
  • Free-form Diagrams
  • UML diagrams
    • Class Diagram Notation
    • Sequence Diagram Notation
  • Using Modeling Tools
    • Class Designer
    • Visio for Enterprise Architects
    • Top Ten Tips for Drawing Diagrams
Chapter 20: Using Models in an Agile Project
  • Requirement Models
    • Domain Models and CRC Cards
    • User Interface Models
    • Use Case Models
    • Customer Stories
  • Architectural Models
    • The Architect’s Role on an Agile Team
    • Creating a Skeletal Architectural Model
    • Evolving your Architectural Model
    • System Metaphor
  • Implementation Models
    • Structural Models
    • Dynamic Models
Chapter 21: Modeling Solutions with Patterns
  • What is a Pattern?
    • Pattern Languages
    • Example of a Pattern: The Façade Pattern
    • Sources of Patterns
  • Using Patterns in an Agile Project
    • Example: Evolving Legacy Code with the Façade Pattern
  • Implementation of Patterns and Models
    • Design Patterns versus Components
    • Reusable Components
  • Emergence of Domain Specific Languages
    • Use of DSL in Horizontal Market Applications
    • The Language Workbench
    • Software Factories

Section 7: Implement Customer Testing

Chapter 22: Involving Customers in Testing
  • Agile Customer Testing
    • Testing throughout the Project
  • Framework for Integrated Test
    • Overview
    • Installing and Running FIT
    • Test Organization
  • Storytest-Driven Development
    • Costs and Benefits of STDD
    • Role of Testers in STDD
    • Relationship of Customer Testing to your Release Process
Chapter 23: Creating FIT Fixtures
  • Standard FIT Fixtures
    • Column Fixtures : Testing Decisions in the Business Layer
    • Row Fixtures: Testing Lists in the Data Layer
    • Action Fixtures: Testing Workflow in the User Interface Layer
  • Custom FIT Fixtures
    • Example of a Custom Fixture
Chapter 24: Running FIT with Team Foundation Build
  • Performing Customer Tests in Your Build Lab
    • Wrapping FIT in a Generic Test
    • Running a Generic Test in your Build Lab
  • Automated Customer Testing
    • Running Customer Tests in Team Foundation Build
    • Allowing Your Customers to Edit and Run Tests from Their PCs
  • Introducing Your Team to Customer Testing
    • Discussions around a Whiteboard
    • Putting the Information into a Table
    • Implementing the Fixtures for the Story
    • Using Sequences of Tables in Customer Tests
    • Top Ten Tips for Test Design

Section 8: Estimate, Prioritize, and Plan

Chapter 25: Estimating and Prioritizing Stories
  • Working with Customer Stories
    • Overview
    • Generating Stories
  • Estimating
    • Sizing Stories
    • Absolute Values versus Relative Values for Estimation
    • Relative Estimate Scales
    • Task Points and Story Cost Estimation
    • Budgeting
  • Prioritizing
    • Value
    • Business Risk
    • Technical Risk
    • Removing Dependences
Chapter 26: Agile Planning
  • Nature of Plans
    • Plans for Repeated Execution versus One-time Plans
    • Agile Planning
    • Using Velocity to Measure Rate of Progress
  • Planning at Every Timescale
    • Task Plan
    • Iteration Plan
    • Release Plan
  • Controlling Plans
    • Levers of Control
    • Story Life Cycle
Chapter 27: Managing Agile Projects
  • Using Visual Studio Team System for Project Management
    • Project Structure
    • Work Item Types and Queries
    • Documents
    • Reports
  • Example Agile Planning Lifecycle
    • Start of Iteration
    • Sample Programming Episode: Task Planning
    • Between Programming Episodes
    • Planning Customer Tests
    • Completing a Story
    • Completing a Bug Fix
    • Daily Meetings
    • End of the Iteration
    • Release Planning
  • Top Ten Tips for Managing Agile Projects

Section 9: Practice for Deployment

Chapter 28: Moving into Production
  • Managing Deployment
    • The Release Process
    • Removing Bottlenecks
    • Handing Over the Release to a Deployment Team
  • Preparing for Deployment
    • The Installation Program
    • Deploying the First Iteration
    • Stubs and Scaffolding
    • Data Deployment
  • Monitoring the Production Environment
    • Logging
    • Creating a Support Website
Chapter 29: Developing Installation Programs
  • Introduction to Windows Installer
    • Basic Concepts
    • Principles of Operation
    • Security
  • Creating an Installation Project with InstallShield
    • Using InstallShield with Visual Studio
    • Using the InstallShield IDE
  • Developing Installation Programs in an Agile Team
    • InstallShield Collaboration
    • Automating the Creation of Your Installation Program
  • Click-Once Technology
    • Suitable Applications
    • Basic Concepts
    • Publishing and Deploying
Chapter 30: Deployment of Distributed Systems
  • Distributed System Architecture
    • Distributed Components
    • Service-Oriented Architecture (SOA)
    • System Definition Model (SDM)
    • VSTS Distributed System Designers
  • Logical Datacenter Designer
    • Creating a Logical Model of a Datacenter
    • Endpoints and Servers in Your Toolbox
    • Properties, Settings and Constraints
    • Importing Settings from your Existing IIS
    • Application of Logical Datacenter Designer Models
  • Application Designer
    • Creating an Application Designer Diagram
    • Defining Settings and Constraints
    • Application of Application Designer Models
  • System Designer
    • Creating System Designer Diagrams
    • Defining Settings and Constraints
    • Application of System Designer Models
  • Deployment Designer
    • Creating a Deployment Designer Diagram
    • Deployment Properties
    • Validating Deployment
    • Creating a Deployment Report
    • Application of Deployment Designer Models

Section 10: Provide and Reveal Value

Chapter 31: Producing Technical Reports
  • Revealing Valuable Information
    • Standard Queries and Reports
    • Gathering and Presenting Information
    • Big Visible Charts
  • Extracting Data from Team Foundation Server
    • Introduction to the TFS Data Warehouse
    • Accessing Data in the TFS Relational Database
    • Creating a Custom Report from the OLAP Database
Chapter 32: Generating Business Value
  • Lean Thinking
    • Specifying Value
    • Identifying the Value Stream
    • Making Value Flow
    • Allowing the Customer to Pull Value
    • Seeking Perfection
  • Changing the Economics of Software Development
    • Value Generated by an Agile Project
    • Value Generated by a Waterfall Project
  • Linking Agile to Other Process Improvement Initiatives
    • Agile Development in the Context of Design for Six Sigma

Retrospective – Fixing the Process

  • About Retrospectives
    • Preparation
    • Creating a Plan
  • The OSPACS Team’s Retrospective
    • Developing a Timeline
    • Other Exercises
  • Analysis of the Project Timeline
    • Structure of the Project
    • Things They Discovered
    • Has the OSPACS Team Fixed its Process?
  • Is the OSPACS Team Extreme?
    • How the OSPACS Team because Agile
    • Personal Agility

Appendix A: Setting Up VSTS for the Exercises
  • Set Up a Single Evaluation Server
    • Setting UpTeam System VPC
    • Setting Up TFS Trial Edition
  • Set Up TFS and Team Suite on a Network
    • Hardware Overview
    • Team Foundation Server (TFS) for Workgroups
    • Setting Up a Software Project Environment
  • Actions for All Set-Up Options
    • Software Installation
    • Setting Up User Accounts and Security Groups
    • System Settings
  • Identification of Machines and Users Named in the Exercises
    • Machines
    • Security Groups
Appendix B: Software Project Environment for a Small Team
  • Hardware Requirements
    • Computers
    • Other Equipment
  • Software Requirements
    • Software Tools to Buy and Install on Developer PCs
    • Software Products to Buy and Install on Server PCs
    • Software Supplied with Other Products
    • Open-source or Freely Available Software
  • Licensing Issues for a Five Person Team
    • Primary Domain Controller (PDC)
    • TFS (DevServer)
    • Developer PCs
    • Architect PC
    • Tester PC
    • BuildLab PC
    • Stand by TFS
    • Multi-processor PCs and Multi-Core Processors
  • Increasing your Team Beyond Five People
Appendix C: Agile Workspace
  • Basic Office Layout
    • Software Development Area
    • Kitchen Area
    • Hot Desk Area
    • Library Area
    • Conference Room
    • Supplies and Equipment
    • Imposing the Team’s Individuality

    List of Extreme Programming Practices
      List of Exercises

        Glossary
          Resources
            Bibliography
              Index