Because Team Foundation Server is so fundamental to the Application Lifecycle Management offering from Microsoft, later chapters go into more depth about utilizing different aspects of the product, such as how to use it to plan your work, how to use version control when developing software, and how to use the build automation capabilities. In each case, the use of Team Foundation Server is explained within the context of the task you are doing — but before we can do that you need to know what Team Foundation Server is, what it provides, and how to get it.
Although a full treatment of Team Foundation Server is necessary in a book about Microsoft's Application Lifecycle Management solution, this book deliberately focuses on how to use Team Foundation Server to develop software and effectively organize your teams. Team Foundation Server is highly customizable and extensible by an administrator. The book Professional Team Foundation Server 2013 (Wrox, 2014) is targeted at administrators of Team Foundation Server and individuals who want to customize their instance heavily, although Chapter 7 of this book gives you a small taste of the customizations that are possible and provides a starting point to learn more.
Developing software is difficult, a fact that is repeatedly proven by how many projects fail. Developing software is a creative endeavor, not a manufacturing process. Consequently, an essential factor in the success of any software development team is how well the members of the team communicate with each other and with the people who wanted the software developed in the first place.
Microsoft Visual Studio Team Foundation Server 2013 provides the core collaboration functionality for your software development teams in a very tightly integrated product. The functionality provided by Team Foundation Server includes the following:
Team Foundation Server is separate from Visual Studio. Logically, Team Foundation Server is made up of the following two tiers, which can be physically deployed across one or many machines, physical or virtual:
Team Foundation Server was designed with extensibility in mind. There are comprehensive APIs in .NET and Java for integrating with Team Foundation Server, and a set of events that enables outside tools to integrate with Team Foundation Server as first-class citizens. The same APIs and event system are used by Microsoft itself in the construction of Team Foundation Server, as well as the client integrations into Visual Studio, Microsoft Office, and Eclipse.
Team Foundation Server has competitors, including other enterprise Application Lifecycle Management suites and purpose-specific solutions (such as source control, a build server, or a work tracking system). As discussed in Chapter 1, the main benefit of having all these capabilities in one product is the tight integration that Microsoft has been able to achieve between the tools that you use to develop software and the tools that you use to communicate with your team and your stakeholders.
Team Foundation Server is a server-side product that must be acquired, installed, and configured. There are several options available for purchasing access to a server for your team. To begin with, you should decide if you want to run the Team Foundation Server inside your own firewall or if you want to explore a hosted Team Foundation Server offering.
The easiest way to acquire Team Foundation Server is to rent it from a provider and access it over the Internet. Trial options are available, which means you can get started with no cost, and there is no need to wait for hardware to be purchased. When it comes to hosted options, there are two main routes: hosting from Microsoft or hosting from a third-party provider.
However, hosting is not suitable for everyone. Some organizations have a legal obligation to keep the data that they would store inside Team Foundation Server inside the firewall; others may require the tight user identity integration provided by Team Foundation Server's Active Directory integration. Others are just not comfortable making their source code, work items, and build accessible from any machine over the Internet. For these types of organizations, a hosted solution probably isn't the answer.
Microsoft makes available a massive cloud-hosted instance of Team Foundation Server, part of Visual Studio Online at http://www.visualstudio.com. This is new commercial branding for the service that is in a preview at http://tfspreview.com.
As of the end of 2013, this is now a full commercial service available for customers who want to purchase Team Foundation services for their team at a low, predictable cost. Depending upon how you license Visual Studio (if at all), you'll find a variety of plans, including free, that provide access to the rich features of Team Foundation Server, but in a purpose-built cloud implementation.
Visual Studio Online is hosted on Windows Azure and makes use of all the services provided by Microsoft's cloud operating system to ensure high availability, resiliency, and a full backup of your data. However, because the system is scaled to support the thousands of users who access it over the Internet—and because it is just the basic core Team Foundation services that are available—Visual Studio Online comes with some limitations compared with a full on-premises installation. For example, currently there is no integration with SharePoint for a project portal and document library. There are also limited reporting features currently available and restrictions to the amount of customization that you can do to the server instance.
However, Visual Studio Online provides all the version control, work item tracking, build automation, and project management capabilities of Team Foundation Server. Being available over the Internet makes it very easy to use when your team is distributed globally, and it is easy to get started on using the service. All you need to do is visit www.visualstudio.com, create an account, and your team can be up and running before you have finished reading this chapter. Access to Visual Studio Online is controlled by federated Internet-based credentials; at the time of writing you need to have a free Microsoft Account from to authenticate with the service.
Because Visual Studio Online is maintained by the Team Foundation Server team at Microsoft, it is always running the very latest version of the server software during their development process. Therefore, new features will show up on Visual Studio Online before they are made available in the standard retail installation of Team Foundation Server via an update or a new major release. For this reason, you may notice some differences between some of the screens displayed in the figures of this book and the appearance of Visual Studio Online at the time of reading.
Many commercial companies can host your Team Foundation Server for you over the Internet for a small charge. They have the advantage that they have all the Team Foundation Server administrative knowledge in-house and have a great deal of experience running their servers for many customers. As these companies are dealing on a different scale than that of Microsoft's hosted service, they can often be much more flexible in the capabilities they provide (at a cost). Depending on the hosting provider, you may also be able to purchase SharePoint portal capabilities, along with a full reporting instance, and get the same capabilities as if you were running Team Foundation Server in-house without having to go through the up-front costs of acquiring the hardware to run Team Foundation Server or purchasing the software licenses in full, before use.
The version of Team Foundation Server used by the third-party hosted providers is exactly the same as the version you would get if you installed it on premises. The only difference is that Team Foundation Server is running in their data centers or private clouds and your team accesses it over the Internet. In this book, behavior categorized as on-premises refers to the behavior you would expect to see from your third party–hosted Team Foundation Server provider as opposed to the hosted service behavior provided by Microsoft's hosted offering (www.visualstudio.com).
As mentioned previously, in some organizations, using a third party to host such important data as your company's source code is not acceptable, and some other companies may actually be required by law to keep such data within the bounds of the corporate firewall. In those instances an on-premises option is the only one available.
The way that the vast majority of customers enjoy the features of Team Foundation Server is by locally installing a version of the software inside the firewall. Trial versions of Team Foundation Server are available for you to download and install locally so you can get up and running quickly. You can also download a prebuilt virtual machine from Microsoft with all the software necessary to help you evaluate the product.
To purchase Team Foundation Server to run locally, you can acquire the software in retail or via a MSDN Subscription, a Volume Licensing purchase, or through a Microsoft Partnership agreement.
Also available, first introduced in the 2012 release, is a version called Team Foundation Server Express. This includes the core developer features — such as version control, work item tracking, and build automation — all of which is available free of charge for individuals and teams of up to five users. The Express edition comes with a few limitations, namely: no support for SharePoint integration, limited to five named users, supports only SQL Express (so no reporting and a maximum database size of 10GB), and no sprint/backlog planning or feedback management.
You can upgrade from a Trial or Express edition of Team Foundation Server to a full edition at any time without losing any data. In addition you can purchase additional Client Access Licenses (CALs) if you require more than the five named users that come with the Express edition.
Let's take a look at some of the core concepts that are critical to understanding Team Foundation Server. If you have been using previous versions of Team Foundation Server for a while (especially the previous Team Foundation Server 2012 release), then you might want to skip to the “What's New in Team Foundation Server 2013” section later in this chapter.
Figure 2.1 provides an overview of the Team Foundation Server components, which are explained in the following sections.
In addition to the components shown in Figure 2.1, understanding the concepts of teams and team builds is necessary for a complete understanding of Team Foundation Server. Those concepts are also covered in the following sections.
A Team Foundation Server instance can be physically split into many different machines. The application tier refers to the running web application that is handling all requests for data from client machines running Visual Studio. The data in a Team Foundation Server instance is stored in a data tier, which is essentially a SQL Server installation being accessed by the application tier. Although the application tier and the data tier are logically separate, you can have both installed on a single physical machine. As the application tier is the level at which you access a Team Foundation Server instance, the application tier machine name is often referred to as simply the Team Foundation Server. You refer to your Team Foundation Server by name or URL (that is, tfsserver
orhttp://tfsserver:8080/tfs)
when Team Foundation Server is installed in the default virtual directory in IIS on the default port. When talking to a Team Foundation Server hosted over the Internet, you most often use the full URL, such as https://proalm.visualstudio.com.
Team Foundation Server can scale to support a very large number of active users, depending on the hardware supporting it. Therefore, for most organizations, Team Foundation Server instances tend to be scoped according to who pays for the installation and operation of the instance, not by scaling limitations of the server.
The team project collection concept was first introduced in Team Foundation Server 2010. This is a container for team projects. Each server has one or many team project collections, and a project collection can have zero or more team projects.
The team project collection is the main level of isolation between instances on a server. In a hosted Team Foundation Server, the collection is what is provided as your account. Global security groups take effect at the project collection level. The identifiers for work items and for changesets in version control are all numbered with sequential IDs that are unique at the project collection level.
A team project collection has a one-to-one relationship with a database instance in SQL Server. Therefore, you can back up and restore at the project collection level. You can move project collections between Team Foundation Servers, and you can split the project collection to break up the distribution of team projects between the resulting collections. Using this process, you can move a team project into a new collection by cloning the existing project collection and then deleting the appropriate team projects from each of the cloned project collections.
Each Team Foundation Server instance has a default project collection, usually called DefaultCollection
. As project collections were not introduced until the 2010 release, older clients that were created for Team Foundation Server 2008 will only be able to see this default collection.
A team project is a collection of work items, code, tests, or builds that encompass all the separate tools that are used in the lifecycle of a software development project. A team project can contain any number of Visual Studio solutions or projects, or, indeed, projects from other development environments. A team project is usually a fairly long-running thing with multiple areas and iterations of work.
You need at least one team project to start working with Team Foundation Server. When the team project is created, the following are also created by default:
If you're using a Team Foundation Server instance that is also attached to a SharePoint and SQL Server Reporting Services instance, then the following are also created:
The granularity that you choose for your team project has important implications for how you structure your work and when you move from one team project to another.
Team projects are intended to represent the largest unit of work in your organization. For example, in Microsoft Developer Division, the whole of a Visual Studio release lives in a single team project with Team Foundation Server as an area of that project.
A team project has a single process template, and changes made to the process template of a running team project affect that team project only. The default reports and work item queries are all scoped by team project, making it easy to track and find work for that team project as an entity.
The following are also linked to the team project that they belong to and, in general, are difficult to move between team projects:
Starting with Team Foundation Server 2012, teams are modeled as a core concept within Team Foundation Server. When you create a new team project, a new team is created for you by default with the name of that project. For example, if you create a team project called AdventureWorks
, then a team called AdventureWorks
Team
is automatically created. The team initially contains just one member (who is also an Administrator), the person who created the team project, but you can easily add members to the team using their domain credentials in an on-premises install or by email address for the hosted service.
As well as membership and administrators, a team has the following items associated with it:
For many smaller team projects, the concepts of team and team project merge. But for larger team projects, you may want to create additional teams, which is why it is important to call out what belongs to the team and what belongs to the team project.
Any areas, iterations, work items, work item queries, builds, and most actual Team Foundation Server artifacts that you create are created at the team project level. By default, other teams can see them and interact with them. You can think of the team as a filter on the team project data to show which information is most relevant to that team, and therefore to you as a member of one or more teams.
Under the covers in Team Foundation Server, a team is actually just a Team Foundation Server security group with some additional properties and metadata associated with it.
An important fact about software development projects is that there is no single process that is suitable for delivering all types of solutions to all types of businesses with all types of teams. Therefore, Team Foundation Server was designed from the ground up to be flexible in how you want your teams to work.
The process template is a set of files, both XML configuration files and supporting template files like SQL Server Reporting Services RDL files, that provide the details of how you want your process to work. Microsoft provides the following three process templates with the default installation of Team Foundation Server:
In addition to the templates installed by default, more are available to download online. If you have an existing process in your organization, it is possible to create a custom process template to match the process.
After you have created a team project with a process template, it is possible to modify nearly all aspects of it while the project is in flight, including work item types, fields, states, and so on. This was another critical design decision taken by Microsoft in designing Team Foundation Server because Microsoft recognized that the best teams are those that continually improve and adapt their processes, and that, as the project continues, more is learned about the domain, as well as the strengths and weaknesses of the team.
Work items in Team Foundation Server are things such as requirements, bugs, issues, and test cases. In other words, these are the items of work that your organization needs to track to manage the delivery of a software development project.
The work item tracking system is highly extensible. You can control which fields are presented to the users, which fields are rolled up into the reporting data warehouse, how the work item looks, what states the work item can be in, and how to transition from one state to the next.
All work items share certain common fields such as ID, state, and title, as shown in Figure 2.2. They have a full history of changes recorded to every field in the work item and by whom. You can also link work items, files, web pages, or other elements in Team Foundation Server.
The work item type definitions are all configurable at the team project level. The work item types are created from the process template definition during project creation, but they can be modified as the team project is in flight. Changing the work item types for one team project in flight does not affect those in another team project, even if they were created using the same original process template.
All data about the work item is stored in the Team Foundation Server database. Any file attachments are also stored in the database.
Team Foundation Server includes a full enterprise-class, centralized version control system that has been designed from the ground up to work well in environments that are spread across a wide geographical area over high-latency, low-bandwidth connections.
The basic model of version control in Team Foundation Server will feel very familiar if you have used Visual SourceSafe (VSS), Polytron Version Control System (PVCS), Perforce, or Subversion, but is different from Distributed Version Control Systems, such as Git or Mercurial. There have been very significant improvements in Team Foundation Server 2013 in the version control system (read more details about them in Chapter 3). In addition, you can now choose an alternative version control repository, one based on Git (read more about this in the “What's New in Team Foundation Server 2013” section later in this chapter and in Chapter 4). There are now two modes of operation for version control; one is used with server workspaces, which will be familiar to users of older versions of Team Foundation Server. With a server workspace, all files are read-only in the local file system until you check out a file to edit it.
The new mode of operation (and the default for new installations) is local workspaces, which will be much more familiar to users of tools such as Subversion or CVS. With local workspaces, files are read/write–enabled locally, and no checkout is required before you can edit the file. This makes working offline and working outside of Visual Studio significantly easier. However, the cost of this convenience is that you have to check which files have been changed before updating those files (or “checking them in”) to the server. Also, as no server call is made before a file is updated, you receive no warning if another team member is working on a file at the same time as you until you go to perform a check-in. However, for most teams with a regular-sized code base (that is, fewer than 100,000 files) the reduction in friction in editing the files outside of Visual Studio or when offline from Team Foundation Server means that local workspaces are a sensible default starting point.
As is common with centralized version control systems, all check-in operations are performed against the server; you cannot check in locally.
The project collection administrator can configure which modes of operation are available and can, for example, force server workspaces if a more controlled environment is preferred.
In either mode, by default, Team Foundation Server allows multiple people to edit the same text-based files at the same time. This is particularly useful for .sln
, .vbproj
, and .csproj
files in a Visual Studio project. When you go to check the file in to the server, if the latest version of that file is newer than the one you checked out, you are prompted to merge your changes with the changes made by your colleagues.
Team Foundation Server version control contains the following features:
get
is performed from version control, files are downloaded to the client machine. In the remote office environment, this often means that the same files are downloaded over the wide area network (WAN) to every client machine involved in the development. Team Foundation Server provides an optional proxy server that may be installed in these remote offices. In those scenarios, the clients may be configured to perform the download via the proxy so that the proxy can cache the downloaded files at the remote location. In that way, the majority of the developers in the remote office will be downloading files from the proxy server local to them, thus removing traffic from the WAN and improving performance.Team Foundation Server provides a fully-featured build-automation server to enable you to standardize the build infrastructure for your team. Team builds are set up in the system as a build definition. You provide the build definition with information as to what you want to build — that is, the folders or files in Team Foundation Server version control that contain the sources to be built, and the projects or solutions in those folders to build. You also specify when to perform the build using a trigger, such as building on every single check-in (continuous integration), building on a schedule, or validating that your changes pass the build process before check-in (known as a gated check-in).
There are many ways for a team member to interact with the core services in Team Foundation Server, including the following:
The following sections examine each of these, including the functionality they provide and basic usage.
Team Foundation Server functionality is installed as a standard part of the install of a Visual Studio edition (including the Express editions).
Assuming that you have an account, connect to your Team Foundation Server by clicking the Connect to Team Foundation Server link on the Visual Studio Start Page or in Team Explorer (View ⇒ Team Explorer).
If your desired server is not available in the Servers drop-down, click the Servers button and then click the Add button to connect to your Team Foundation Server. As shown in Figure 2.3, you can enter the server name or provide the full URL given to you by your Team Foundation Server administrator.
After you have added the server, select the project collection that contains your team projects and select the team project or projects that you want to work on.
Your selected team project displays in the Team Explorer window. The Team Explorer window will come as the first big surprise for users of an older version of Visual Studio. In Visual Studio 2013, the Team Explorer experience has been refined some more from the major 2012 update, which had the goal of removing clutter to provide a more focused experience. The home page that displays when you first connect to a team project is shown in Figure 2.4.
The sections that appear in the page depend on the version of Visual Studio that you have installed and the capabilities configured with your Team Foundation Server. For example, the My Work section is only displayed in Premium and Ultimate versions of Visual Studio when connected to a Team Project using Team Foundation Version Control. The Documents section displays when the team project is connected to a SharePoint portal, and the Reports section displays when the project has an associated reporting service site. If you're using a Team Project with Team Foundation Version Control, you'll see Pending Changes and Source Control Explorer options. If you're using a Team Project with a Git-based repository, you'll see Changes, Branches, and Unsynced Commits. However, all versions of Team Explorer display Work Items, Builds, and Settings. Clicking each section takes you to that page, which contains other sections. For example, clicking Work Items takes you to a page that contains your favorite work item queries and a tree of the available work item queries on the server (see Figure 2.5).
To change pages or projects or to connect to a different project, click the page header. A drop-down menu displays that enables you to change pages or connect to a different team or project (see Figure 2.6).
In Team Foundation Server 2012, Microsoft invested heavily in the web-based view of the server (often called Web Access). For the 2013 release, they continued to enhance it. You can view your server by navigating to its URL in a browser or by clicking the Web Access link in the Team Explorer. For example, if your server internally is called tfs2013
, then by default you would navigate to http://tfs2013:8080/tfs
. If your machine is accessed over the Internet, then a URL such as https://proalm.visualstudio.com is probably used.
Web Access (Figure 2.7) is ideal for users who do not want to install a dedicated Team Foundation Server client on their machines. At a high level, “when fully licensed,” it offers the following functionality from the browser:
As part of the Visual Studio Team Explorer installation, integration into Microsoft Excel is provided by default and a Team tab is available on the ribbon in Excel. This enables you to add and edit work items directly from Excel spreadsheets, as shown in Figure 2.8, as well as create Excel-based reports using data directly from Team Foundation Server.
Integration into Microsoft Project is also provided as part of the Team Explorer installation. This enables you to add and edit work items directly from Microsoft Project and to view data about the progress of these work items.
Team Foundation Server includes a set of command-line tools as part of the Team Explorer installation. The main command-line tool to be aware of as a user is tf.exe
, which is available from a Visual Studio 2013 command prompt. You can also install it separately on non Windows–based systems such as Mac OS X, Linux, and many other UNIX flavors.
The tf
command provides full access to Team Foundation Server version control functionality, including features in Team Foundation Server version control that are not exposed via the graphical clients.
For members of the team who are using Eclipse-based IDEs (including IBM Rational Application Developer or one of the many other Eclipse-based environments), full access to the Team Foundation Server capabilities are available from Microsoft using the TFS plug-in for Eclipse as part of Team Explorer Everywhere.
As you can see in Figure 2.9, at a high level, the Eclipse integration provides all the same functionality that a developer inside Visual Studio would utilize, including the following:
As part of the Team Foundation Server power tools available at http://aka.ms/tfpt, a Windows Explorer shell extension is available as an optional installation. This provides access to the basic version control functionality of Team Foundation Server from a standard Windows Explorer window and is most useful when working with Team Foundation Server version control outside of Visual Studio or Eclipse.
Team Foundation Server supports a rich and vibrant third-party ecosystem. As discussed previously, the same .NET and Java object models used by Microsoft to talk to Team Foundation Server are also available for developers in third-party companies to integrate with. Integrations are available into other parts of the Microsoft Office suite (such as Word and Outlook). In addition, many development tools now integrate with Team Foundation Server using the extensibility hooks provided by Microsoft.
For older development tools that support the Microsoft Source Code Control Interface (MSSCCI, pronounced “miss-key”) plug-in model for version control, Microsoft has a MSSCCI provider for Team Foundation Server as part of the power tools.
In the 2013 release, there have been a number of changes that continue on the work started with the 2012 release — some more dramatic than others. There have been four major changes in Team Foundation Server 2013: Git support in version control, Agile portfolio management planning, release management tools, and the commercial release of the Windows Azure-based Visual Studio Online. Team Foundation Server 2013 keeps the same core architectural building blocks introduced in the 2010 release, but with new sets of features built on top of it. Although many of these features are explained throughout this book, if you have used a previous version of Team Foundation Server then the features described in the following sections will be new to you.
Whereas Team Foundation Server 2012 included in the biggest fundamental change to Team Foundation Version Control since the original release in 2005, Team Foundation Server 2013 takes things to the next level by letting you choose a completely different type of repository — a Git-based one with full support for distributed version control. This is explained in detail in Chapter 4.
The most visible change to Team Foundation Server 2012 was the completely rewritten web interface. In Team Foundation Server 2013, Microsoft continued to invest. The latest version supports Kanban boards for managing your workflow. The new team rooms provide a tracked conversation portal for your teams to discuss project-related items as well as to track system events. The website also saw Microsoft bring web-based test case management by adding a full-featured Test hub. The home page is more customizable for each team and by the time you read this, there will be support for pinning work item charts to home pages. All of the new features are discussed throughout the book.
In Team Foundation Server 2013, you have the option to do Agile portfolio management, sometimes colloquially referred to as “enterprise Agile” by Microsoft. By default, each team project is configured with one level of portfolio backlog using the Feature work item type. In addition, you can configure up to four additional levels of portfolio backlogs. This can provide you with seven levels, from the top-level items to backlog items to tasks.
If you're upgrading from Team Foundation Server 2012, you must configure your existing projects using the Configure Features wizard if you want portfolio backlogs from an upgraded team project. In addition there's additional licensing issues. This feature is covered in detail in Chapter 12.
One of the missing features from earlier releases of Team Foundation Server are tools to make it easier to get your software from the development team to production and to your customers. In mid-2013, Microsoft acquired a partner solution called InRelease which provided a set of release management capabilities for use with Team Foundation Server. This technology was rebranded as Release Management for Visual Studio 2013 and is now developed and supported by Microsoft. Rather than customize your build definitions to try automated deployment, you now have a first class tool to manage your release pipeline. The feature provides a rich Windows client to define your deployment environments and configure the deployment via Windows Workflow, including a rich set of built-in deployment tasks. There's a web-based approval tool to manage a deployment as it moves between environments, including notifications. Finally, there's a deployer agent (that must be licensed per server) to get your bits configured on your machines — physical or virtual. Chapter 6 covers this feature in detail.
By making available a hosted Team Foundation Service in the cloud at http://www.visualstudio.com, Microsoft has removed the barrier of entry for teams that want to use the Application Lifecycle Management features of Visual Studio but do not want to run their own Team Foundation Server. The effect of making Team Foundation Server available over the Internet has also brought about changes to many aspects of the system — for example, you can now authenticate with this hosted service using a browser-based federated authentication mechanism rather than being forced to use a Windows-based login. The Team Foundation Build service now uses a polling-based model to detect when a new build is requested rather than the old push model, which makes using a build server in a different domain or outside the firewall much easier for on-premises installations of Team Foundation Server.
The value of Team Foundation Server is realized when it is utilized in a team. Therefore, ensuring a successful Team Foundation Server adoption requires cooperation from many people in your organization. This section should help you avoid some common pitfalls and provide you with some suggestions on where to start with what may seem like a large and daunting product.
When introducing any new tooling into a large organization, it is important that you address the key pain points first. For many companies, traceability of work through the development lifecycle is often an area that is being poorly addressed by existing tooling. For others, the version control system being used may be out of date and performing poorly. It is, therefore, usually the work item tracking or version control components that people first start using when adopting Team Foundation Server.
Luckily, Team Foundation Server is flexible enough that you can still get value from the product when using only one or two components of the system. When you have adopted both version control and work item tracking, the next area to tackle to gain the most benefit is likely to be Team Foundation Build. By automating your build system and increasing the frequency of integrations, you reduce the amount of pain that always occurs when integrating components to form a product.
The key is to gradually remove the unknown and unpredictable elements from the software delivery process, all the time looking for wasted effort that can be cut out.
Automating the builds not only means that the build and packaging process becomes less error prone, it also means that the feedback loop of requirements traceability is completed. You can now track work from the time that it is captured, all the way through to a change to the source code of the product, and into the build that contains those changes.
After a period of time, you will have built up a repository of historical data in your Team Foundation Server data warehouse, and you can start to make use of the reporting features to predict if you will be finished when you expect (that is, whether the amount of estimated work remaining on the system is reducing at the required rate). You can also drill into areas that you might want to improve — for example, which parts of the code are causing the most bugs.
It is after a period of getting used to the tooling that you want to look at your process templates and ensure that all the necessary data is being captured — but, equally, that all the work item types and transitions are required. If there are unnecessary steps, then consider removing them. If you notice problems because of a particular issue, consider modifying the process to add a safety net.
It is important to adjust the process not only to fit the team and organization, but also to ensure that you adjust your processes only when you need to, and not just because you can.
Check-in policies represent a key area where Team Foundation Server administrators have a temptation to go overboard at first. Check-in policies prevent checking in of code that doesn't meet the requirements programmatically defined in the check-in policy. However, each policy has a performance penalty for the whole team, not only in running the policy on each check-in, but also in ensuring that the policy will pass before checking in the code.
A problem with developers who are not checking in code in small iterative changes cannot be easily remedied by introducing a check-in policy — the policy alone will provide some discouragement for checking in. Therefore, check-in policies should be introduced over time and when the need is identified by the whole team.
This chapter introduced Team Foundation Server and discussed its role in bringing the team together when developing an application. You learned about some of the core concepts at the heart of Team Foundation Server, different ways to access the data in your organization's server, and what is new in the 2013 release of the product. Finally, you learned about some points that you should bear in mind when planning your Team Foundation Server deployment.
Chapter 3 looks in detail at using the version control features of Team Foundation Server and discusses the important new changes found in this latest release.