You are previewing Professional Application Lifecycle Management with Visual Studio® 2010.
O'Reilly logo
Professional Application Lifecycle Management with Visual Studio® 2010

Book Description

Get up to speed on Application Lifecycle Management (ALM) with Visual Studio 2010 through a combination of hands-on instruction and deep-dives.

Microsoft has packed a lot of brand new testing and modeling tools into Visual Studio 2010, tools that previously were available only to Microsoft internal development teams. Developers will appreciate the focus on practical implementation techniques and best practices.

A team of Microsoft insiders provides a nuts-and-bolts approach. This Wrox guide is designed as both a step-by-step guide and a reference for modeling, designing, and coordinating software development solutions at every level using Visual Studio 2010 and Visual Studio Team Foundation Server 2010.

Visual Studio 2010 offers a complete lifecycle management system that covers modeling, testing, code analysis, collaboration, build and deployment tools.

Coverage includes:

  • An Introduction to Software Architecture

  • Top-down Design with Use Case Diagrams, Activity Diagrams, and Sequence Diagrams

  • Top-down Design with Component and Class Diagrams

  • Analyzing Applications Using Architecture Explorer

  • Using Layer Diagrams

  • An Introduction to Software Development

  • Unit Testing with the Unit Test Framework

  • Managed Code Analysis and Code Metrics

  • Profiling and Performance

  • Database Development, Testing, and Deployment

  • An Introduction to IntelliTrace

  • An Introduction to Software Testing

  • Web Performance and Load Testing

  • Manual Testing

  • Coded User Interface Testing

  • Lab Management

  • Introduction to Team Foundation Server

  • Team Foundation Architecture

  • Team Foundation Version Control

  • Branching and Merging

  • Team Foundation Build

  • An Introduction to Project Management

  • Process Templates

  • Using Reports, Portals, and Dashboards

  • Agile Planning Using Planning Workbooks

  • Process Template Customizations

Professional Application Lifecycle Management with Visual Studio 2010 shows developers, testers, architects and project managers alike how to leverage the power of Visual Studio 2010 to streamline software design and development.

Table of Contents

  1. Copyright
  2. ABOUT THE AUTHORS
  3. CREDITS
  4. ACKNOWLEDGMENTS
  5. INTRODUCTION
    1. THE NAME CHANGE
    2. VISUAL STUDIO 2010 PRODUCT LINEUP
    3. MODERN SOFTWARE DEVELOPMENT CHALLENGES
    4. ENTER VISUAL STUDIO 2010
    5. APPLICATION LIFECYCLE MANAGEMENT
      1. Requirements
      2. System Design and Modeling
      3. Code Generation
      4. Testing
      5. Putting It into Context
    6. WHO IS THIS BOOK FOR?
    7. WHAT DOES THIS BOOK COVER?
      1. Part I: Architect
      2. Part II: Developer
      3. Part III: Tester
      4. Part IV: Team Foundation Server
      5. Part V: Project/Process Management
    8. CONVENTIONS
    9. SOURCE CODE
    10. ERRATA
    11. P2P.WROX.COM
  6. I. Architect
    1. 1. Introduction to Software Architecture
      1. 1.1. DESIGNING VISUALLY
      2. 1.2. MICROSOFT'S MODELING STRATEGY
        1. 1.2.1. Understanding Model-Driven Development
        2. 1.2.2. Understanding Domain-Specific Languages
      3. 1.3. FROM OBJECTS TO SERVICES
        1. 1.3.1. Understanding Objects and Compile-Time Reuse
        2. 1.3.2. Understanding Components and Deploy-Time Reuse
        3. 1.3.3. Understanding Distributed Components and Run-Time Reuse
        4. 1.3.4. Distributed Services and the Service-Oriented Architecture
      4. 1.4. NEW ARCHITECTURE TOOLS IN VISUAL STUDIO 2010 ULTIMATE
        1. 1.4.1. Use Case Diagrams
        2. 1.4.2. Activity Diagrams
        3. 1.4.3. Sequence Diagrams
        4. 1.4.4. Component Diagrams
        5. 1.4.5. Class Diagrams
        6. 1.4.6. Layer Diagrams
        7. 1.4.7. Architecture Explorer
      5. 1.5. SUMMARY
    2. 2. Top-Down Design with Use Case Diagrams, Activity Diagrams, and Sequence Diagrams
      1. 2.1. USE CASE DIAGRAMS
        1. 2.1.1. Understanding a Use Case Diagram
        2. 2.1.2. Use Case Diagram Toolbox
        3. 2.1.3. Creating a Use Case Diagram
      2. 2.2. ACTIVITY DIAGRAMS
        1. 2.2.1. Understanding an Activity Diagram
        2. 2.2.2. Concurrent Flow in an Activity Diagram
          1. 2.2.2.1. Data Flows in an Activity Diagram
        3. 2.2.3. Activity Diagram Toolbox
        4. 2.2.4. Creating an Activity Diagram
        5. 2.2.5. Adding an Activity Diagram to a Use Case Diagram
      3. 2.3. SEQUENCE DIAGRAMS
        1. 2.3.1. Understanding Sequence Diagrams
        2. 2.3.2. Sequence Diagram Toolbox
        3. 2.3.3. Creating a Sequence Diagram
      4. 2.4. SUMMARY
    3. 3. Top-Down Design with Component and Class Diagrams
      1. 3.1. COMPONENT DIAGRAMS
        1. 3.1.1. Understanding a Component Diagram
        2. 3.1.2. Component Diagram Toolbox
        3. 3.1.3. Component Diagram Element Properties
        4. 3.1.4. Creating a Component Diagram
        5. 3.1.5. Showing Internal Component Parts
      2. 3.2. CLASS DIAGRAMS
        1. 3.2.1. Understanding a Class Diagram
        2. 3.2.2. Class Diagram Toolbox
        3. 3.2.3. Class Diagram Type Properties
        4. 3.2.4. Class Diagram Attribute Properties
        5. 3.2.5. Class Diagram Operations Properties
        6. 3.2.6. Class Diagram Association Properties
        7. 3.2.7. Creating a Class Diagram
      3. 3.3. SUMMARY
    4. 4. Analyzing Applications Using Architecture Explorer
      1. 4.1. UNDERSTANDING THE CODE BASE
      2. 4.2. ARCHITECTURE EXPLORER BASICS
        1. 4.2.1. Understanding the Architecture Explorer Window
        2. 4.2.2. Architecture Explorer Options
        3. 4.2.3. Navigating Through Architecture Explorer
        4. 4.2.4. Exploring Options for Namespaces
        5. 4.2.5. Exploring Options for Classes
        6. 4.2.6. Exploring Options for Members
        7. 4.2.7. Architecture Explorer Queries
      3. 4.3. DEPENDENCY GRAPHS
        1. 4.3.1. Creating the First Dependency Graph
        2. 4.3.2. Creating a Dependency Graph without Architecture Explorer
        3. 4.3.3. Navigating Through Your Dependency Graph
        4. 4.3.4. Dependency Graph Legend
        5. 4.3.5. Dependency Graph Toolbar
      4. 4.4. SUMMARY
    5. 5. Using Layer Diagrams
      1. 5.1. CREATING A LAYER DIAGRAM
      2. 5.2. DEFINING LAYERS ON A LAYER DIAGRAM
        1. 5.2.1. Creating a Layer for a Single Artifact
        2. 5.2.2. Adding Multiple Objects to a Layer Diagram
        3. 5.2.3. The Layer Explorer
      3. 5.3. DEFINING DEPENDENCIES
      4. 5.4. VALIDATING THE LAYER DIAGRAM
      5. 5.5. LAYER DIAGRAMS AND THE BUILD PROCESS
      6. 5.6. SUMMARY
  7. II. Developer
    1. 6. Introduction to Software Development
      1. 6.1. WHAT'S NEW FOR DEVELOPERS IN VISUAL STUDIO 2010
      2. 6.2. TEST IMPACT ANALYSIS
      3. 6.3. IMPROVED CODE ANALYSIS
      4. 6.4. PROFILER ENHANCEMENTS
      5. 6.5. DATABASE EXTENSIBILITY
      6. 6.6. ADVANCED DEBUGGING WITH INTELLITRACE
      7. 6.7. IMPROVED "TEST-FIRST" DEVELOPMENT EXPERIENCE
      8. 6.8. SUMMARY
    2. 7. Unit Testing with the Unit Test Framework
      1. 7.1. UNIT TESTING CONCEPTS
        1. 7.1.1. Benefits of Unit Testing
        2. 7.1.2. Writing Effective Unit Tests
        3. 7.1.3. Third-Party Tools
      2. 7.2. VISUAL STUDIO UNIT TESTING
        1. 7.2.1. Creating Your First Unit Test
          1. 7.2.1.1. Identifying Unit Test Classes
          2. 7.2.1.2. Identifying Unit Tests
          3. 7.2.1.3. Unit Test Success and Failure
        2. 7.2.2. Managing and Running Unit Tests
          1. 7.2.2.1. Test View
          2. 7.2.2.2. Test List Editor
          3. 7.2.2.3. Running Tests Directly from Code
        3. 7.2.3. Test Run Configuration
        4. 7.2.4. Test Results
        5. 7.2.5. Debugging Unit Tests
      3. 7.3. PROGRAMMING WITH THE UNIT TEST FRAMEWORK
        1. 7.3.1. Initialization and Cleanup of Unit Tests
          1. 7.3.1.1. TestInitialize and TestCleanup Attributes
          2. 7.3.1.2. ClassInitialize and ClassCleanup Attributes
          3. 7.3.1.3. AssemblyInitialize and AssemblyCleanup Attributes
        2. 7.3.2. Using the Assert Methods
          1. 7.3.2.1. Assert.AreEqual and Assert.AreNotEqual
          2. 7.3.2.2. Assert.AreSame and Assert.AreNotSame
          3. 7.3.2.3. Assert.IsTrue and Assert.IsFalse
          4. 7.3.2.4. Assert.IsNull and Assert.IsNotNull
          5. 7.3.2.5. Assert.IsInstanceOfType and Assert.IsNotInstanceOfType
          6. 7.3.2.6. Assert.Fail and Assert.Inconclusive
        3. 7.3.3. Using the CollectionAssert class
        4. 7.3.4. Using the StringAssert class
        5. 7.3.5. Expecting Exceptions
        6. 7.3.6. Defining Custom Unit Test Properties
        7. 7.3.7. TestContext Class
        8. 7.3.8. Creating Data-Driven Unit Tests
      4. 7.4. ACCESSING NONPUBLIC MEMBERS FROM TESTS
        1. 7.4.1. Using PrivateObject to Access Nonpublic Instance Members
        2. 7.4.2. Using PrivateType to Access Nonpublic Static Members
      5. 7.5. CODE GENERATION
        1. 7.5.1. Generating Tests from Code
      6. 7.6. CODE COVERAGE
        1. 7.6.1. Enabling Code Coverage
        2. 7.6.2. Viewing Code Coverage Results
      7. 7.7. TEST IMPACT ANALYSIS
        1. 7.7.1. Prerequisites for Test Impact Analysis
        2. 7.7.2. Identifying Relationships Between Code and Tests
          1. 7.7.2.1. View Tests That Have Been Impacted
          2. 7.7.2.2. View Tests for a Particular Method
        3. 7.7.3. Test Impact Analysis Example
      8. 7.8. SUMMARY
    3. 8. Managed Code Analysis and Code Metrics
      1. 8.1. THE NEED FOR ANALYSIS TOOLS
      2. 8.2. USING MANAGED CODE ANALYSIS
        1. 8.2.1. Built-in Managed Code Analysis Rules
        2. 8.2.2. Code Analysis Rule Sets
        3. 8.2.3. Enabling Managed Code Analysis
        4. 8.2.4. Executing Static Code Analysis
        5. 8.2.5. Working with Rule Violations
          1. 8.2.5.1. Correcting Problems
          2. 8.2.5.2. Suppressing Messages
      3. 8.3. USING THE COMMAND-LINE ANALYSIS TOOL
        1. 8.3.1. FxCopCmd Options
        2. 8.3.2. FxCopCmd Project Files
        3. 8.3.3. Build Process Code Analysis Integration
      4. 8.4. CREATING CODE ANALYSIS RULES
        1. 8.4.1. Reflection and Introspection
        2. 8.4.2. Creating a New Rule
          1. 8.4.2.1. Creating a Base Rule
          2. 8.4.2.2. Implementing the Rule
          3. 8.4.2.3. Using the Microsoft.Cci Assembly
          4. 8.4.2.4. The IIntrospectionRule Interface
          5. 8.4.2.5. Writing the Rule Implementation Code
          6. 8.4.2.6. Creating Rules.xml
          7. 8.4.2.7. Deploying a Rule
          8. 8.4.2.8. Learning from Existing Rules
      5. 8.5. CODE METRICS
      6. 8.6. SUMMARY
    4. 9. Profiling and Performance
      1. 9.1. INTRODUCTION TO PERFORMANCE ANALYSIS
        1. 9.1.1. Types of Profilers
        2. 9.1.2. Visual Studio Profiling
      2. 9.2. USING THE PROFILER
        1. 9.2.1. Creating a Sample Application
        2. 9.2.2. Creating a Performance Session
          1. 9.2.2.1. Using the Performance Wizard
          2. 9.2.2.2. Adding a Blank Performance Session
          3. 9.2.2.3. Creating a Performance Session from a Unit Test
        3. 9.2.3. Using the Performance Explorer
          1. 9.2.3.1. Setting General Session Properties
            1. 9.2.3.1.1. General Property Page
            2. 9.2.3.1.2. Launch Property Page
            3. 9.2.3.1.3. Tier Interaction Proprety Page
            4. 9.2.3.1.4. CPU Counters Property Page
            5. 9.2.3.1.5. Windows Events Property Page
            6. 9.2.3.1.6. Windows Counters Property Page
          2. 9.2.3.2. Configuring Session Targets
        4. 9.2.4. Configuring a Sampling Session
        5. 9.2.5. Configuring an Instrumentation Session
        6. 9.2.6. Configuring a .NET Memory Allocation Session
        7. 9.2.7. Configuring a Concurrency Profiling Session
        8. 9.2.8. Executing a Performance Session
        9. 9.2.9. Managing Session Reports
        10. 9.2.10. Reading and Interpreting Session Reports
          1. 9.2.10.1. Report Information and Views
          2. 9.2.10.2. Summary View
          3. 9.2.10.3. Functions View and Functions Details View
          4. 9.2.10.4. Caller/Callee View
          5. 9.2.10.5. Call Tree View
          6. 9.2.10.6. Allocation View
          7. 9.2.10.7. Objects Lifetime View
      3. 9.3. COMMAND-LINE PROFILING UTILITIES
        1. 9.3.1. Virtual Machines
        2. 9.3.2. Profiling JavaScript
        3. 9.3.3. Just My Code
      4. 9.4. COMMON PROFILING ISSUES
        1. 9.4.1. Debugging Symbols
        2. 9.4.2. Instrumentation and Code Coverage
      5. 9.5. SUMMARY
    5. 10. Database Development, Testing, and Deployment
      1. 10.1. THE CHALLENGES OF DATABASE CHANGE MANAGEMENT
      2. 10.2. OFFLINE SCHEMA DEVELOPMENT
        1. 10.2.1. Taking the Schema Offline
        2. 10.2.2. Iterative Development
        3. 10.2.3. Schema Testing
        4. 10.2.4. Build and Deploy
      3. 10.3. CREATING A DATABASE PROJECT
      4. 10.4. EXAMINING THE DATABASE PROJECT
        1. 10.4.1. Solution Explorer versus Schema View
        2. 10.4.2. Schema Dependency Viewer
        3. 10.4.3. T-SQL File Structure
      5. 10.5. MAKING SCHEMA CHANGES
        1. 10.5.1. Editing T-SQL Files Directly
        2. 10.5.2. Detecting Schema Syntax Errors
        3. 10.5.3. Database Refactoring
          1. 10.5.3.1. Rename Refactoring
          2. 10.5.3.2. Other Refactoring Types
          3. 10.5.3.3. Preservation of Intent
        4. 10.5.4. T-SQL Script Templates
      6. 10.6. DEPLOYING DATABASE CHANGES
      7. 10.7. DATA GENERATION
        1. 10.7.1. Data Generation Plan
        2. 10.7.2. Data Generators
      8. 10.8. DATABASE TESTING
        1. 10.8.1. Functions, Triggers, and Stored Procedures
        2. 10.8.2. Writing Advanced Database Unit Tests
        3. 10.8.3. Effective Database Testing
          1. 10.8.3.1. Keep a Clean Database
          2. 10.8.3.2. Group Series of Related Tests
          3. 10.8.3.3. Use a Variety of Approaches
        4. 10.8.4. T-SQL Static Analysis
        5. 10.8.5. Additional Database Tools
          1. 10.8.5.1. Redistributable Deployment Engine
          2. 10.8.5.2. Schema Compare
          3. 10.8.5.3. Data Compare
      9. 10.9. SUMMARY
    6. 11. Introduction to IntelliTrace
      1. 11.1. DEBUGGING USING INTELLITRACE
        1. 11.1.1. Debugging Options
          1. 11.1.1.1. General
          2. 11.1.1.2. Advanced
          3. 11.1.1.3. IntelliTrace Events
          4. 11.1.1.4. Modules
        2. 11.1.2. Events Recording
        3. 11.1.3. Debugging and Playback
          1. 11.1.3.1. Debug Navigation Bar
          2. 11.1.3.2. Calls History
          3. 11.1.3.3. Trace Log file
      2. 11.2. NEW FEATURES IN BREAKPOINTS
        1. 11.2.1. Sharing Breakpoints
        2. 11.2.2. Labeling Breakpoints
      3. 11.3. PINNABLE DATA TIPS
      4. 11.4. SUMMARY
  8. III. Tester
    1. 12. Introduction to Software Testing
      1. 12.1. ROLE-BASED TESTING TOOLS
      2. 12.2. TYPES OF TESTS
      3. 12.3. DIAGNOSTIC DATA ADAPTERS
      4. 12.4. MICROSOFT TEST MANAGER
      5. 12.5. MANAGING AUTOMATED TESTS WITH VISUAL STUDIO
        1. 12.5.1. Test Projects
          1. 12.5.1.1. Creating a Test Project
          2. 12.5.1.2. Setting Test Project Options
        2. 12.5.2. Using Test Categories
          1. 12.5.2.1. Test View
            1. 12.5.2.1.1. Selecting and Running Tests
        3. 12.5.3. Working with Test Results
          1. 12.5.3.1. Test Results Window
          2. 12.5.3.2. Sorting, Grouping, and Filtering Tests Results
          3. 12.5.3.3. Exporting Test Results
          4. 12.5.3.4. Using Test Results XML (TRX) Files
          5. 12.5.3.5. Publishing Results
        4. 12.5.4. Using Ordered Tests
          1. 12.5.4.1. Creating an Ordered Test
          2. 12.5.4.2. Ordered Test Properties
          3. 12.5.4.3. Executing and Analyzing Ordered Tests
        5. 12.5.5. Test Settings
        6. 12.5.6. Test Impact View
      6. 12.6. SUMMARY
    2. 13. Web Performance and Load Testing
      1. 13.1. WEB PERFORMANCE TESTS
        1. 13.1.1. Web Performance Tests Versus Coded UI Tests
        2. 13.1.2. Creating a Sample Web Application
        3. 13.1.3. Creating Users for the Site
          1. 13.1.3.1. Configuring the Sample Application for Testing
        4. 13.1.4. Creating and Configuring Web Tests
        5. 13.1.5. Recording a Web Performance Test
        6. 13.1.6. Configuring Web Performance Test Run Settings
        7. 13.1.7. Parameterizing the Web Server
        8. 13.1.8. Test Settings
        9. 13.1.9. Running a Web Performance Test
        10. 13.1.10. Observing Test Execution and Results
        11. 13.1.11. Editing a Web Performance Test
          1. 13.1.11.1. Setting Request Properties
          2. 13.1.11.2. Adding Comments
          3. 13.1.11.3. Adding Transactions
          4. 13.1.11.4. Extraction Rules and Context Parameters
          5. 13.1.11.5. Validation Rules
        12. 13.1.12. Data-Driven Web Performance Tests
          1. 13.1.12.1. Configuring a Data Source
          2. 13.1.12.2. Binding to a Source
        13. 13.1.13. Coded Web Performance Tests
      2. 13.2. LOAD TESTS
        1. 13.2.1. Creating and Configuring Load Tests
          1. 13.2.1.1. Scenarios and Think Times
            1. 13.2.1.1.1. Load Patterns
            2. 13.2.1.1.2. Test Mix Model
            3. 13.2.1.1.3. Test Mix
            4. 13.2.1.1.4. Network Mix
            5. 13.2.1.1.5. Browser Mix
          2. 13.2.1.2. Performance Counter Sets
            1. 13.2.1.2.1. Run Settings
        2. 13.2.2. Editing Load Tests
          1. 13.2.2.1. Adding Scenarios
          2. 13.2.2.2. Run Settings
          3. 13.2.2.3. SQL Tracing
          4. 13.2.2.4. Goal-Based Load Profiles
          5. 13.2.2.5. Storing Load Test Run Data
        3. 13.2.3. Executing Load Tests
        4. 13.2.4. Viewing and Interpreting Load Test Results
          1. 13.2.4.1. Graphs View
          2. 13.2.4.2. Tables View
            1. 13.2.4.2.1. Tests Table
            2. 13.2.4.2.2. Pages Table
            3. 13.2.4.2.3. Transactions Table
            4. 13.2.4.2.4. SQL Trace Table
            5. 13.2.4.2.5. Thresholds Table
            6. 13.2.4.2.6. Errors Table
            7. 13.2.4.2.7. Detailed Results
      3. 13.3. COMMAND-LINE TEST EXECUTION
        1. 13.3.1. Executing Tests
        2. 13.3.2. Executing Test Lists
        3. 13.3.3. Other Test Options
      4. 13.4. DISTRIBUTED LOAD TESTS
        1. 13.4.1. Installing Controllers and Agents
        2. 13.4.2. Configuring Controllers
        3. 13.4.3. Configuring Agents
          1. 13.4.3.1. Weighting
          2. 13.4.3.2. IP Switching
          3. 13.4.3.3. Attributes
        4. 13.4.4. Test Settings
        5. 13.4.5. Running a Distributed Load Test
        6. 13.4.6. Viewing a Distributed Load Test
      5. 13.5. SUMMARY
    3. 14. Manual Testing
      1. 14.1. MICROSOFT TEST MANAGER
      2. 14.2. USING TEST PLANS
        1. 14.2.1. Configuring Test Settings
        2. 14.2.2. Using Builds
        3. 14.2.3. Analyzing Impacted Tests
        4. 14.2.4. Defining Test Configurations
        5. 14.2.5. Using Plan Contents
          1. 14.2.5.1. Authoring Test Cases
          2. 14.2.5.2. Using Shared Steps
          3. 14.2.5.3. Assigning Configurations
          4. 14.2.5.4. Assigning Testers
      3. 14.3. RUNNING TESTS AND TRACKING RESULTS
        1. 14.3.1. Using Microsoft Test Runner
        2. 14.3.2. Supported Technologies
        3. 14.3.3. Saving Test Results
      4. 14.4. RUNNING AUTOMATED TESTS
      5. 14.5. SUMMARY
    4. 15. Coded User Interface Testing
      1. 15.1. CREATING CODED UI TESTS USING THE CODED UI TEST BUILDER
        1. 15.1.1. Setting up the Sample Application
        2. 15.1.2. Create a Test Project
        3. 15.1.3. Add a Coded UI Test
        4. 15.1.4. Coded UI Test Builder
        5. 15.1.5. Generated Code
        6. 15.1.6. Running Your Test
        7. 15.1.7. Creating a Data-Driven Test
        8. 15.1.8. Using the using() Clause
        9. 15.1.9. Enhanced Assertion Reporting
      2. 15.2. CREATING CODED UI TESTS USING ACTION RECORDINGS
      3. 15.3. SUPPORTED TECHNOLOGIES
      4. 15.4. SUMMARY
    5. 16. Lab Management
      1. 16.1. LAB MANAGEMENT INFRASTRUCTURE
        1. 16.1.1. Golden Images
        2. 16.1.2. Agents
      2. 16.2. VIRTUAL ENVIRONMENTS
      3. 16.3. TESTING WITH VIRTUAL ENVIRONMENTS
        1. 16.3.1. Create New Test Settings
        2. 16.3.2. Run Manual Tests with an Environment
      4. 16.4. AUTOMATED BUILD-DEPLOY-TEST WITH VIRTUAL ENVIRONMENTS
      5. 16.5. PHYSICAL ENVIRONMENTS
      6. 16.6. SUMMARY
  9. IV. Team Foundation Server
    1. 17. Introduction to Team Foundation Server
      1. 17.1. WHAT IS TEAM FOUNDATION SERVER?
      2. 17.2. TEAM FOUNDATION SERVER CORE CONCEPTS
        1. 17.2.1. Team Foundation Application Tier
        2. 17.2.2. Team Project Collection
        3. 17.2.3. Team Project
        4. 17.2.4. Process Template
        5. 17.2.5. Work Item Tracking
        6. 17.2.6. Version Control
        7. 17.2.7. Team Build
      3. 17.3. ACCESSING TEAM FOUNDATION SERVER
        1. 17.3.1. Accessing Team Foundation Server from Visual Studio
        2. 17.3.2. Using the Team Foundation Server Administration Console
        3. 17.3.3. Accessing Team Foundation Server through a Web Browser
        4. 17.3.4. Using Team Foundation Server in Microsoft Excel
        5. 17.3.5. Using Team Foundation Server in Microsoft Project
        6. 17.3.6. Command-Line Tools for Team Foundation Server
        7. 17.3.7. Accessing Team Foundation Server from Eclipse
        8. 17.3.8. Windows Explorer Integration with Team Foundation Server
        9. 17.3.9. Access to Team Foundation Server via other Third-Party Integrations
      4. 17.4. WHAT'S NEW IN TEAM FOUNDATION SERVER 2010
        1. 17.4.1. Project Management
        2. 17.4.2. Version Control
        3. 17.4.3. Build
        4. 17.4.4. Administration
      5. 17.5. ADOPTING TEAM FOUNDATION SERVER
        1. 17.5.1. Hosting Team Foundation Server
        2. 17.5.2. Adoption Plan
      6. 17.6. SUMMARY
    2. 18. Team Foundation Architecture
      1. 18.1. TEAM FOUNDATION SERVER LOGICAL ARCHITECTURE
        1. 18.1.1. Team Project Collections
        2. 18.1.2. Team Foundation Server Farm
        3. 18.1.3. Team Foundation Server Application
        4. 18.1.4. Team Foundation Server Instance
      2. 18.2. PHYSICAL ARCHITECTURE
        1. 18.2.1. Hardware Requirements
        2. 18.2.2. Software Requirements
      3. 18.3. DEPLOYMENT SCENARIOS
        1. 18.3.1. Individuals and Small Teams
        2. 18.3.2. Small Shops
        3. 18.3.3. Large Enterprises
        4. 18.3.4. Hosted Environments
        5. 18.3.5. Upgrading from Older Team Foundation Server Versions
          1. 18.3.5.1. In-Place Upgrade
          2. 18.3.5.2. Migration Upgrade
          3. 18.3.5.3. Choosing the Appropriate Path
          4. 18.3.5.4. Additional Tasks
      4. 18.4. SUMMARY
    3. 19. Team Foundation Version Control
      1. 19.1. TEAM FOUNDATION VERSION CONTROL AND VISUAL SOURCESAFE (VSS) 2005
      2. 19.2. SETTING UP VERSION CONTROL
        1. 19.2.1. Setting up Security Roles
        2. 19.2.2. Setting up Your Workspace
      3. 19.3. USING THE SOURCE CONTROL EXPLORER
        1. 19.3.1. Workspaces
        2. 19.3.2. Adding Projects to the Source Repository
      4. 19.4. CHECK-IN AND CHECK-OUT
        1. 19.4.1. Checking In an Item
        2. 19.4.2. Checking Out an Item
        3. 19.4.3. Creating and Administering Check-In Policies
        4. 19.4.4. Viewing History
        5. 19.4.5. Labeling Files
      5. 19.5. SHELVING
      6. 19.6. BRANCHING AND MERGING
        1. 19.6.1. Branching
        2. 19.6.2. Merging
      7. 19.7. COMMAND-LINE TOOLS
      8. 19.8. SUMMARY
    4. 20. Branching and Merging
      1. 20.1. UNDERSTANDING BRANCHING AND MERGING
        1. 20.1.1. Software Configuration Management
        2. 20.1.2. Basic Definitions
      2. 20.2. COMMON BRANCHING STRATEGIES
        1. 20.2.1. No Branching
        2. 20.2.2. Branch Per Release
        3. 20.2.3. Code Promotion Branching
        4. 20.2.4. Branch Per Feature
      3. 20.3. BASIC BRANCHING PLAN
        1. 20.3.1. Scenario
        2. 20.3.2. The Plan
        3. 20.3.3. Implementation
      4. 20.4. ADVANCED BRANCHING PLAN
        1. 20.4.1. Scenario
        2. 20.4.2. The Plan
        3. 20.4.3. Implementation
      5. 20.5. SUMMARY
    5. 21. Team Foundation Build
      1. 21.1. TEAM FOUNDATION BUILD
      2. 21.2. WHAT'S NEW IN TEAM FOUNDATION BUILD 2010
        1. 21.2.1. Windows Workflow 4.0
        2. 21.2.2. Gated Check-ins
        3. 21.2.3. Private Builds
        4. 21.2.4. Build Controller
        5. 21.2.5. Build Notifications
        6. 21.2.6. Properties Exposed for Common Customizations
        7. 21.2.7. Integration with Symbol and Source Server
        8. 21.2.8. Enhanced Build Deletion Options
      3. 21.3. TEAM FOUNDATION BUILD ARCHITECTURE
      4. 21.4. WORKING WITH BUILDS
        1. 21.4.1. Team Explorer
        2. 21.4.2. Build Explorer
          1. 21.4.2.1. Queued Builds
          2. 21.4.2.2. Completed Builds
        3. 21.4.3. Build Details View
        4. 21.4.4. Creating a Build Definition
          1. 21.4.4.1. General Section
          2. 21.4.4.2. Trigger Section
            1. 21.4.4.2.1. Manual
            2. 21.4.4.2.2. Continuous Integration
            3. 21.4.4.2.3. Rolling Builds
            4. 21.4.4.2.4. Gated Check-in
            5. 21.4.4.2.5. Schedule
          3. 21.4.4.3. Workspace
          4. 21.4.4.4. Build Defaults
          5. 21.4.4.5. Process
          6. 21.4.4.6. Retention Policy
        5. 21.4.5. Queuing a Build
          1. 21.4.5.1. Private Builds
        6. 21.4.6. Build Notifications
          1. 21.4.6.1. Build Notification Tool
          2. 21.4.6.2. Email Alerts
      5. 21.5. TEAM BUILD PROCESS
        1. 21.5.1. DefaultTemplate Process
        2. 21.5.2. Build Process Parameters
          1. 21.5.2.1. Configurations to Build
          2. 21.5.2.2. Logging Verbosity
          3. 21.5.2.3. Agent Settings
          4. 21.5.2.4. Clean Workspace
          5. 21.5.2.5. Build Number Format
          6. 21.5.2.6. Path to Publish Symbols
          7. 21.5.2.7. Automated Tests
          8. 21.5.2.8. Get Version
        3. 21.5.3. Customizing the Build Process
          1. 21.5.3.1. Adding Workflow Activities
        4. 21.5.4. Creating a ZIP Archive as Part of the Build Process
          1. 21.5.4.1. Customizing Process Parameters
            1. 21.5.4.1.1. Creating the Process Argument
            2. 21.5.4.1.2. Creating Process Parameter Metadata
            3. 21.5.4.1.3. Custom Workflow Activities
      6. 21.6. SUMMARY
  10. V. Project/Process Management
    1. 22. Introduction to Project Management
      1. 22.1. TEAM PROJECT SETUP AND CONFIGURATION
        1. 22.1.1. Creating a Team Project
          1. 22.1.1.1. New Team Project
        2. 22.1.2. Connecting to the Team Foundation Server
          1. 22.1.2.1. Structuring Your Project
          2. 22.1.2.2. Working with the Team Project Portal
      2. 22.2. PLANNING YOUR PROJECT
      3. 22.3. ALL THINGS WORK ITEMS
        1. 22.3.1. Understanding a Work Item
        2. 22.3.2. Work Item Links and Link Types
          1. 22.3.2.1. Link Types
            1. 22.3.2.1.1. Related Items Link
            2. 22.3.2.1.2. Parent-Child Link
            3. 22.3.2.1.3. Predecessor-Successor Link
        3. 22.3.3. Creating and Updating Work Items
        4. 22.3.4. Work Item Queries
          1. 22.3.4.1. Pre-Defined Work Item Queries
          2. 22.3.4.2. Creating a New Work Item Query
      4. 22.4. USING MS OFFICE WITH TEAM FOUNDATION SERVER
        1. 22.4.1. Office Project and Team Foundation Server
          1. 22.4.1.1. Field Types
          2. 22.4.1.2. Using Office Project to Create a Project
        2. 22.4.2. Office Excel and Team Foundation Server
          1. 22.4.2.1. Using Excel to Plan a Project
          2. 22.4.2.2. Using the Input List Option
      5. 22.5. SUMMARY
    2. 23. Process Templates
      1. 23.1. UNDERSTANDING A PROCESS TEMPLATE
      2. 23.2. PROCESS TEMPLATES OUT OF THE BOX
        1. 23.2.1. MSF for Agile Software Development
          1. 23.2.1.1. New Features of MSF for Agile Software Development
          2. 23.2.1.2. Migrating to the Process Templates in 2010
          3. 23.2.1.3. Work Items
            1. 23.2.1.3.1. User Story
            2. 23.2.1.3.2. Task
            3. 23.2.1.3.3. Bug
            4. 23.2.1.3.4. Issue
            5. 23.2.1.3.5. Test Case
            6. 23.2.1.3.6. Shared Steps
          4. 23.2.1.4. Process Guidance
          5. 23.2.1.5. Reports
          6. 23.2.1.6. Agile Planning Workbooks
          7. 23.2.1.7. Samples and Templates
        2. 23.2.2. MSF for CMMI Process Improvement v5.0
          1. 23.2.2.1. Capability Level 3
            1. 23.2.2.1.1. Business Analysts, and Project and Release Managers
            2. 23.2.2.1.2. Developers, Testers, and Architects
          2. 23.2.2.2. CMMI Level 3 Versus MSF for CMMI Process Improvement
          3. 23.2.2.3. Work Items
          4. 23.2.2.4. Process Guidance
          5. 23.2.2.5. Reports
      3. 23.3. PARTNER AND COMMUNITY TEMPLATES
      4. 23.4. SUMMARY
    3. 24. Using Reports, Portals, and Dashboards
      1. 24.1. TEAM FOUNDATION SERVER REPORTING
        1. 24.1.1.
          1. 24.1.1.1. Team Foundation Server Operational Store
          2. 24.1.1.2. Team Foundation Server Data Warehouse
          3. 24.1.1.3. Team Foundation Server OLAP Cube
      2. 24.2. WORKING WITH TEAM FOUNDATION SERVER REPORTS
        1. 24.2.1. Tools to Create Reports
        2. 24.2.2. Working with Microsoft Excel Reports
          1. 24.2.2.1. Creating Microsoft Excel Reports Using Data in the OLAP Cube
          2. 24.2.2.2. Customizing a Microsoft Excel Report
          3. 24.2.2.3. Creating Microsoft Excel Reports Using Work Item Query
          4. 24.2.2.4. Publishing Microsoft Excel Reports
            1. 24.2.2.4.1. Publishing to a Document Library
            2. 24.2.2.4.2. Publishing to Excel Services
        3. 24.2.3. Working with RDL Reports
          1. 24.2.3.1. Report Builder
          2. 24.2.3.2. Report Designer
        4. 24.2.4. Reports Out-of-the-Box
          1. 24.2.4.1. Reports Included in the Team Foundation Server Process Templates
        5. 24.2.5. Project Portals and Dashboards
          1. 24.2.5.1. Left Navigation Pane
            1. 24.2.5.1.1. Team Web Access
            2. 24.2.5.1.2. Dashboards
            3. 24.2.5.1.3. Excel Reports
            4. 24.2.5.1.4. Reports
            5. 24.2.5.1.5. Documents
            6. 24.2.5.1.6. Process Guidance
          2. 24.2.5.2. Top Horizontal Menu
            1. 24.2.5.2.1. New Work Item
            2. 24.2.5.2.2. New Excel Report
            3. 24.2.5.2.3. Copy Dashboard
      3. 24.3. SUMMARY
    4. 25. Agile Planning Using Planning Workbooks
      1. 25.1. PRODUCT BACKLOG
        1. 25.1.1. Release Planning
      2. 25.2. PRODUCT PLANNING WORKBOOK
        1. 25.2.1. Locating the Product Planning Workbook
        2. 25.2.2. Setting Up the Product Planning Workbook
        3. 25.2.3. Using the Product Backlog Worksheet
        4. 25.2.4. Using the Iterations Worksheet
        5. 25.2.5. Using the Interruptions Worksheet
      3. 25.3. ITERATION PLANNING
      4. 25.4. ITERATION BACKLOG WORKBOOK
        1. 25.4.1. Locating the Iteration Backlog
        2. 25.4.2. Using the Iteration Backlog Worksheet
        3. 25.4.3. Using the Capacity Planning Worksheet
          1. 25.4.3.1. Team Capacity
          2. 25.4.3.2. Team Member Capacity
      5. 25.5. TRACKING THE ITERATION
        1. 25.5.1. Issues
        2. 25.5.2. Retrospectives
      6. 25.6. Summary
    5. 26. Process Template Customizations
      1. 26.1. CUSTOMIZING PROCESS TEMPLATES
        1. 26.1.1. Downloading a Process Template to Your Desktop
        2. 26.1.2. What's in a Process Template?
        3. 26.1.3. Process Template Plug-ins
      2. 26.2. TOOLS FOR CUSTOMIZATION
        1. 26.2.1. XML Editor
        2. 26.2.2. witadmin Command-Line Utility
        3. 26.2.3. Process Template Editor
          1. 26.2.3.1. Installing Process Template Editor
          2. 26.2.3.2. Working with a Process Template
            1. 26.2.3.2.1. Work Item Tracking
            2. 26.2.3.2.2. Categories
            3. 26.2.3.2.3. Link Types
            4. 26.2.3.2.4. Areas and Iterations
            5. 26.2.3.2.5. Groups and Permissions
            6. 26.2.3.2.6. Source Control
            7. 26.2.3.2.7. Portal
            8. 26.2.3.2.8. Reports
          3. 26.2.3.3. Editing Work Items on an Existing Team Project
      3. 26.3. UPLOADING PROCESS TEMPLATES IN TEAM FOUNDATION SERVER
      4. 26.4. DELETING PROCESS TEMPLATES
      5. 26.5. CUSTOMIZING PROCESS GUIDANCE
      6. 26.6. SUMMARY