|Important||This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here.|
Team Foundation Overview
Team Foundation is a set of tools and technologies that enable a team to collaborate and coordinate their efforts on building a product or completing a project. Team Foundation enhances team communication, tracks work status, supports team roles, enacts the team process, and integrates team tools.
The primary purpose of Team Foundation is to enable collaboration on a team to make it easier to build a product, or complete a project. There are many types of projects. Software projects involve building and releasing a software product that is typically a new product, an upgrade to an existing product, or a minor update release.
Team Foundation enables collaboration through enhanced communication, supporting multidisciplinary roles, tracking work status, enacting the team's process, and integration of tools.
The purpose of enhancing communication on a team is to ensure that no information or work is lost when tasks are handed-off from one team member to another. The central concept when you work with Team Foundation is the team project. A team project is stored on Team Foundation Server and has a name everyone on the team can easily identify. For example, a team working on version 1.0 of Adventure Works would probably have a team project called Adventure Works 1.0. The team project provides a central location for everyone to coordinate his or her work.
Each team project has an associated project portal that is a Windows SharePoint Web site. Team members can use the project portal to store documents, find reports, and use other Windows SharePoint collaborative features like calendars and lists. For more information about the project portal, see Using the Team Project Portal.
Depending on the process, you may not have a project portal.
All team members work with team projects by using Team Explorer in the Visual Studio IDE. Team Explorer connects to one Team Foundation Server and displays team projects from that server. By using Team Explorer, every team member can find and update work items, view reports, manage documents, and work with product builds. For more information about Team Explorer, see Configuring Team Projects with Team Explorer.
Team Foundation provides alerts that are sent to you through e-mail when something changes on the team project. Alerts can be sent when the status of a work item changes, a check-in occurs, a build is completed, or when a build status changes. For more information about alerts, see Setting Alerts.
Team Foundation version control enables the team to manage all source files for a project. Typically Team Foundation version control is used for source files but you can add non-source files such as important project documentation. For more information about Team Foundation version control, see Team Foundation Version Control.
Team Foundation Build enables the team to create and manage product builds regularly. For example, a team can run daily builds and post them to a shared server. Team Foundation Build also provides build reports on the status and quality of each build. For more information about Team Foundation Build, see Managing Builds with Team Foundation Build.
Tracking Work Status
The purpose of tracking work status is to understand the health of the project, who is assigned work, and what the status of that work is. Team Foundation uses the concept of a work item to track fundamental pieces of work on a team project. Various types of work items are available and are based on the type of work that they represent. For example, a bug work item type tracks problems and issues discovered when you are creating the product, and a task work item type tracks planned development, testing, or other types of tasks.
Work Item History
All work items have a running history that logs all activity. Whenever a work item changes, whether the item's status changes to closed or notes are updated with new information, all the changes are logged so that anyone can review the complete history of activity on a work item at any time. For more information about work items, see Working with Team Foundation Work Items.
Work item queries are used to find work items that match a specific set of criteria. Queries are useful to find the current status on work items. For example, a query could find all bug work items with a priority of 1. Or a query could find all task work items assigned to the Web development team. For more information about work item queries, see Working With Work Item Queries.
Microsoft Project and Excel Integration
Work items are stored in a database on the Team Foundation server; however, copies of work items can be imported and tracked in Microsoft Project or Microsoft Excel. For example, task work items can be imported into Microsoft Project and organized to load balance work for team members. Also, bug work items can be imported into Microsoft Excel to create a list of top priority bugs that must be fixed. Finally, updates can be made to the offline copies of work items in Microsoft Project and Microsoft Excel and published back to the work item database keeping offline work items synchronized with the server. For more information about how to use Microsoft Project and Microsoft Excel for managing work items, see Managing Work Items in Microsoft Excel and Microsoft Project.
Reports are stored in a database on the Team Foundation server, and they track status and trend information over time on a team project. The data for the reports is stored in a data warehouse and collected from the operational databases on Team Foundation server. Types of information that can be tracked in reports are work item changes, check-ins, status on product builds, and test results. Also, cross-project reports can compare historical data for multiple projects. For more information about reports, see Using Reporting and Metrics.
Roles are assumed by one or more team members on a team project, and each role represents one or more disciplines that are required to successfully complete the team project.
Roles do not represent a one-to-one relationship with job titles or disciplines. For example, a developer role may be fulfilled by an individual with a job title of software engineer, or Web developer. Also, roles have different meaning depending on their context.
Roles in Help Documentation
The Help documentation organizes content into three general roles: Administrators, Project Leads, and Project Members. These general roles are used by the Help documentation to help you find the tasks and information that most likely apply to you when you work on a team project.
Roles in Process
New team projects are created from a process template that defines a set of roles that all team members will participate in. For example, the MSF for Agile Software Development process defines six roles: business analyst, project manager, architect, developer, tester, and release manager. When a team project is created by using the MSF for Agile Software Development process, each team member must assume one of these roles, which will guide how he or she interact and work on the team project. For more information on roles in process, see the process guidance for the process that you are using on your team project.
Team Foundation security groups enforce permissions available for each team member. When a new team project starts, the administrator maps process roles for that team project to specific security groups and permissions. Additionally, the process template defines a default set of security groups. For example, MSF for Agile Software Development defines Contributors and Readers security groups. So on a new team project, a developer is likely mapped to the Contributors security group.
A common problem many product teams experience is trying to make their tools to follow their process. Team Foundation enacts process in the tools by enabling teams to customize process through a set of XML files. Every team project can follow a different process.
Team Foundation supports customization of work items, work item instances, reports, security, project portal, documents and templates, source control settings, and process guidance content.
For more information about process template customization, see Process Template Manager.
To enhance collaboration, the tools that a team uses must work in an integrated manner to avoid duplication of work, such as repeating security configurations in multiple tools, and manual yet obvious steps, such as having to manually update status in a report when a work item is closed.
Team Foundation tools integrate with each other to automate many tasks that typically do not occur between tools. For example, when you check in source code to fix a bug, you can automatically resolve the work item that describes the bug.
Integration in the Integrated Development Environment
Many Team Foundation tools are integrated with the Visual Studio integrated development environment (IDE). Team Explorer is the main window to work with team projects. Additional windows are available from Team Explorer such as Source Control Explorer, and the Build Explorer.
Team Foundation Extensibility
Team Foundation can also be extended to integrate additional tools that are created by third-party organizations. For more information, see the Visual Studio Extensibility Center.
Integration with Other Tools
Team Foundation can be used with older Visual Studio projects and other tools and code projects. Even though you cannot view and compile these types of projects using Team Foundation, you can run them side-by-side. You can use Team Foundation to collaborate on the projects, when you are using an older version of Visual Studio, or the other tools, to build the code. For more information about how to work with older projects and other tools, see Working with Older Visual Studio Projects or Other Code Projects.
When you first start working with Team Foundation, you may wonder where to start. The answer depends on your role. Administrators typically start by setting up Team Foundation servers and granting permissions. Typically project leads create new team projects and start tracking work. Typically, project members join team projects and start creating or working on work items assigned to them.
Project administrators manage the day-to-day operations of Team Foundation servers. They perform tasks such as setting up new Team Foundation servers, creating new team projects, backing up and restoring data, and configuring security for team members.
Getting Started Questions
The following table lists typical questions for getting started as a project administrator and links to more information about those questions.
How do I set up a Team Foundation server?
How do I create a new team project?
How do I back up and restore Team Foundation server databases?
Project leads are in charge of one or more team projects. They monitor day-to-day activity on the project by running queries and reports, and also assign work items to ensure that progress on the project continues.
Getting Started Questions
The following table lists typical questions for getting started as a project lead and links to more information about those questions.
How do I create a new team project?
How do I create new queries and run queries?
How do I run reports to obtain status?
How do I start my new team project?
How do I create work item lists in Microsoft Excel and task lists in Microsoft Project?
How do I customize the process for a team project?
Project members are anyone who works on one or more team projects. Project members must understand what process they are using on their team project, how to find and resolve work items assigned to them, and how to work with source control.
Getting Started Questions
The following table lists typical questions for getting started as a project member and links to more information about those questions.
How do I join a new team project?
How do I find my work items?
How do I update work items in Microsoft Excel and Microsoft Project?
How do I determine which process my team project uses?
How do I work with files in source control on my team project?
How do I work with my team project to find documents, builds, and other information?