Chapter 2
Introduction to Team Foundation Server

What's in this chapter?

  • Understanding Team Foundation Server
  • Learning the core concepts central to Team Foundation Server
  • Getting access to Team Foundation Server and connecting to it for the first time
  • Learning about what's new in Team Foundation Server 2013
  • Planning your Team Foundation Server adoption

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.

What Is Team Foundation Server?

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:

  • Project management and planning
  • Work item tracking (WIT)
  • Version control
  • Test case management
  • Build automation
  • Reporting
  • Virtual lab management

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:

  • Application tier — The application tier primarily consists of a set of web services with which the client machines communicate by using a highly optimized web service–based protocol.
  • Data tier — The data tier is made up of two or more SQL Server databases containing the database logic of the Team Foundation Server application, along with the data for your Team Foundation Server instance. The data stored in the databases is used by Team Foundation Server's reporting functionality. All the data stored in Team Foundation Server is stored in these SQL Server databases, thus making it easier to back up.

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.

Acquiring Team Foundation Server

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.

Hosted Team Foundation Server

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.

Visual Studio Online

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.

Third Party–Hosted Team Foundation Server Providers

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.

On-Premises Installation

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.

Team Foundation Server Core Concepts

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.

image

Figure 2.1

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.

Team Foundation Server

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.

Team Project Collection

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.

Team Project

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:

  • Path in version control (if using Team Foundation Version Control)
  • Default work item queries
  • Default areas and iterations
  • Default team

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:

  • Team project website
  • Document library
  • Stock reports

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:

  • Work Items — Each work item is attached to the team project and uses the process template assigned to it. For this reason, it is not possible to move a work item from one team project to another, although you may copy the work item between projects in the same project collection and include a link to the source work item for reference.
  • Document Libraries — The team project optionally refers to a project website based on SharePoint Foundation or SharePoint Server. The document libraries in this website are linked to this project, and all the documents, projects plans, process guidance, or other non-deliverable assets contained in the document library therefore correspond to the team project.
  • Reports — All the reports created as part of one of the stock process templates are scoped to the team project level, making it easy to determine the progress of work inside that team project.
  • Builds — Each build definition is tied to a team project, as are the build controllers and build agents performing the builds.
  • Version Control — All items stored in version control are either under a team project node in the repository or in a Git repository. All settings for version control are controlled at the team project level.
  • Classifications — A team project is typically broken into areas and iterations. An area is typically a functional area of the code that may have a subset of the whole team typically working on it. For example, a particular application may be broken into tiers: the web tier, application tier, and database tier. It is common that a feature or requirement may affect all tiers of the application, but a task or bug may just affect a small area of the code. Therefore, areas are organized hierarchically so that a feature can be assigned to the whole application in the team project, but an ASP.NET form development task may be assigned to a child area. Iterations are similarly organized. For Version 1 of the application, you may split development into several phases and, in each phase, have several short iterations (or sprints). These can be organized hierarchically in the iterations section.

Teams

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:

  • Description of the team, for example, what they are responsible for.
  • Security permissions in Team Foundation Server given to members of the team.
  • Areas that the team is responsible for.
  • Iterations that the team will be taking part in. The iterations have a start date and end date that control which iteration is the “current” one.
  • A backlog of work associated with that team (that is, work items in that team's area).
  • A board of backlog items, showing for each product backlog item or story what associated tasks there are for that work item. Team members can easily drag and drop them into other states, such as In Progress or Done.
  • Alert events, for example sending an email notification when a build fails or a work item is associated with a team member.
  • Favorites, such as work item queries, source control paths, or build definitions that may be important to that team.

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.

Process Templates

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:

  • Microsoft Visual Studio Scrum 2013 — Available previously as an optional add-on and made the default in Team Foundation Server 2012, the Scrum process template is not only installed by default but is the default process template used when creating new projects. It is a template designed for teams that want to base their software development on the highly popular Scrum methodology (at the time of writing the most popular of the formal Agile development methodologies). Users' needs are tracked by product backlog item work items, which are broken down into task work items. There are also work items for bugs, impediments, and test cases. The work items' states follow those recommended by the Scrum software development practice.
  • MSF for Agile Software Development 2013 — This is a lightweight template designed for teams following a delivery process based on general Agile software development practices. User needs are tracked by user story work items, as well as types for bugs, issues, tasks, and test cases. In general, the work items have a simple state progression from active to resolved to closed. It is also an excellent starting point for people who want to customize a process to fit with their development organization.
  • MSF for CMMI Process Improvement 2013 — This is a more detailed template, designed for teams with more traditional process requirements — that is, those that typically have longer lifecycles and possible governmental requirements that the process template would help fulfill. Note that if your organization is striving for CMMI compliance you should not consider this template as your only choice; you should still evaluate the possibilities offered by the MSF for the Agile Software Development template, among others.

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 Item Tracking

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.

image

Figure 2.2

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.

Version Control

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:

  • Atomic check-ins — Changes you make to the files are batched into a changeset. When you check in the files in a changeset, they are taken as a single atomic transaction. If a single file cannot be checked in (for example, because of a merge conflict) then the whole changeset is not committed. Only after the whole changeset has been successfully applied do any of the files become the latest version. This way, you can ensure the consistency of your code base.
  • Associate check-ins with work items — When you perform a check-in, you may associate that changeset with one or more work items. In this way, you can get full traceability of requirements from the initial feature desired by the user, to the tasks required to create it, to the check-ins into version control that were required to implement the feature. This information is surfaced in the work item that you linked to, as well as being shown in the build report and also passed into the reporting system in Team Foundation Server.
  • Branching and merging — Team Foundation Server supports a full path space branching model. If you desire parallel development on a code base, then you can create a branch of the code in two separate places in the version control repository, and then merge changes that have been applied to one branch into the other.
  • Shelving — This includes the capability to store files on the server without committing them to the main version control repository. This is useful in a couple of different scenarios. You may want to back up changes made on your local machine to the server if you are going to be working on the files for more than a few hours or if you need to work on a different task temporarily and resume later. Another scenario is when you want to copy changes from one machine to another without checking them in (for example, a shelveset is used during a code review, to have a colleague verify your changes).
  • Labeling — In Team Foundation Server, you can tag a set of files at a particular version with a textual label. This is useful for indicating which files were included in a certain build or which files are ready to move to your quality assurance (QA) process. Note that in Team Foundation Server, labels are always editable. Provided you have permission, you may add or remove files from that label at any time.
  • Concurrent check-outs — Also known as the Edit-Merge-Commit model, by default, multiple people may edit a file at the same time. If a file were modified while you were working on it, then you would be prompted to merge the changes with the latest version of the file.
  • Follow history — If you rename or branch a file then you can view the history of that file before it was renamed or branched. You can also follow the history of a file from before it was branched or merged.
  • Check-in policies — When performing a check-in, Team Foundation Server provides the capability for the client to run code to validate that the check-in should be allowed. This includes performing actions, such as checking that the change is associated with a work item, checking that the code passes static code analysis rules, and so on. Check-in policies are also an extension point in Team Foundation Server so that you can create your own, should you want to do so.
  • Check-in notes — In some organizations, it is necessary to capture metadata about a check-in (such as the code reviewer, or a reference to a third-party system). In other version control systems, this is frequently accomplished by requiring that the check-in comment follow certain unenforced conventions. Team Foundation Server provides check-in note functionality to capture this metadata. A team project administrator may add or remove check-in notes at the team project level, as well as make a particular check-in note mandatory.
  • Team Foundation Server proxy — Frequently, organizations have regional development centers separated from the main development offices or the data center hosting the Team Foundation Server environment. When a 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 Build

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).

Accessing Team Foundation Server

There are many ways for a team member to interact with the core services in Team Foundation Server, including the following:

  • Web browser
  • Visual Studio
  • Eclipse-based development environments
  • Microsoft Test Manager
  • Team Foundation Server Administration Console
  • Microsoft Excel
  • Microsoft Project
  • Command-line tools
  • Third-party integrations

The following sections examine each of these, including the functionality they provide and basic usage.

Accessing Team Foundation Server from Visual Studio

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.

image

Figure 2.3

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.

image

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).

image

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).

image

Figure 2.6

Accessing Team Foundation Server Through a Web Browser

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:

  • Backlog and iteration planning
  • Task board
  • Create and edit work items and work item queries
  • Manage areas and iterations
  • Administer permissions and team membership
  • Read-only access to version control
  • Queue and manage build definitions
image

Figure 2.7

Using Team Foundation Server in Microsoft Excel

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.

image

Figure 2.8

Using Team Foundation Server in Microsoft Project

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.

Command-Line Tools for Team Foundation Server

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.

Accessing Team Foundation Server from Eclipse

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:

  • Full version control integration (check-out, check-in, history, branch, merge, label, synchronize, and so on)
  • Full work item tracking (create and edit work items and work item queries)
  • Full team build integration (create, edit, and manage builds and build definitions)
  • Access to team reports and documents
image

Figure 2.9

Windows Explorer Integration with Team Foundation Server

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.

Access to Team Foundation Server via Other Third-Party Integrations

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.

What's New in Team Foundation Server 2013

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.

Version Control

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.

Web Access

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.

Agile Portfolio Management

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.

Release Management

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.

The Cloud

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.

Adopting 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.

Summary

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.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.21.244.217