Description
What is Team Foundation Server?
Developing software is difficult—a fact repeatedly proven by how many projects run overtime or over budget, or fail completely. An essential factor in the success of any software development team is how well the members of the team communicate with one another, as well as with the people who wanted the software developed in the first place.
Team Foundation Server 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
- Work item tracking (WIT)
- Version control
- Test case management
- Build automation
- Reporting
- Release management
- Lab and environment management
- Feedback management
- Chat and team communication tools
Each of these topics is explored extensively in this book
Team Foundation Server is a separate server product designed specifically for software engineering teams with developers, testers, architects, project managers, business analysts, and anyone else contributing to software development releases and projects. Logically, Team Foundation Server is made up of the following two tiers, which can be physically deployed across one or many machines:
- 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. It also includes a rich web access site to interact with a server without having to install a client such as Visual Studio.
- Data tier—The data tier utilizes SQL Server to house the databases that contain the database logic for the Team Foundation Server application, the data for your Team Foundation Server instance, as well as the data for your Team Project Collection. The data stored in the data warehouse database and Analysis Services cube are used by Team Foundation Server’s reporting functionality. All the data stored in Team Foundation Server is stored in the SQL Server databases, thus making the system easy to back up.
Team Foundation Server was designed with extensibility in mind. It can integrate with a comprehensive .NET Application Programming Interface (API). It also has a set of events that allow it to integrate with outside tools as first-class citizens. The same .NET programming model and event system are used by Microsoft to construct Team Foundation Server, as well as the client integrations into Visual Studio.
Team Foundation Server has plenty of competitors, including other enterprise Application Lifecycle Management (ALM) systems and purpose-specific products (such as source control systems). The main benefit of having all the different systems available in one product is that Team Foundation Server fully integrates the different systems. This allows for true innovation in the development tools space, as you will notice with several of the new tools available in this latest release. Instead of worrying about integrating the separate systems yourself, you can take advantage of the work that Microsoft has done for you. Jason Zander, currently Corporate Vice President of development for Windows Azure, makes this particular point well in a blog post originally about Team Foundation Server 2010. You can find the blog post at http://aka.ms/IntegratedALMSolution
.
When you compare enterprise ALM products currently on the market, you will discover that Team Foundation Server was designed to be easily customized and extended. Team Foundation Server ensures that developers using any development platform can participate and easily use Team Foundation Server, including Visual Studio, Eclipse-based development, Xcode, and many more.
What is Visual Studio Online?
Installing and configuring Team Foundation Server has traditionally meant a significant investment in time and infrastructure. In addition to the initial setup, maintenance of an on-premises Team Foundation Server instance required ongoing effort.
In October 2012, a hosted Team Foundation Server was released to the general public under the name Team Foundation Service. This hosted service meant that a team could make use of many of the features of Team Foundation Service without the significant investment in infrastructure and maintenance. Since its initial release, the product has been continuously extended and improved.
In November 2013, Team Foundation Service was rolled into a new product called Visual Studio Online, which incorporates a number of developer services, including most of the features of an on-premises Team Foundation Server installation as well as Visual Studio, collaboration tools, load testing and build services, a diagnostic service called Application Insights, and even an online code editor.
Visual Studio Online is free for teams up to five users, and is also available on a per-user per-month subscription basis. A number of plans are available that include various features. These features include access to a hosted Team Foundation Server with unlimited Team Projects and basic project planning tools, and either the Visual Studio Express or Visual Studio Professional IDE. The plans also include a certain amount of cloud build and load testing time.
What’s New in Team Foundation Server 2013?
If you have used legacy versions of Team Foundation Server, you may be curious about what is new in the latest release. As this book demonstrates, it is a big release with considerable new functionality and improvements across the board. While many of these features are explained throughout this book, if you have used a previous version of Team Foundation Server, the features described in the following sections will be new to you. Some of the client-side topics are covered in more detail in the companion book to this volume, Professional Application Lifecycle Management with Visual Studio 2013 by Mickey Gousset, Martin Hinshelwood, Brian A. Randell, Brian Keller, and Martin Woodward (Wiley, 2014).
Version Control
One major change with this release was the addition of an alternative, distributed source control option within Team Foundation Server. While this was seen as a surprising move by many, it was really just addressing a common complaint many organizations had with source control in Team Foundation Server.
There are many powerful project management features provided by Team Foundation Server, but the primary reason for adopting a system like Team Foundation Server will always be source control. Developers have increasingly been moving to distributed version control products, such as Git or Mercurial, and the limitations of the centralized source control system provided by Team Foundation Server was a common reason cited by organizations choosing to use an alternative product. While support for disconnected workspaces was provided with the addition of Local Workspaces in the 2012 release of Team Foundation Server, team members were still limited to a single server-side repository for a workspace.
By adopting Git as a first-class version control alternative, Microsoft has added true distributed version control to the product. Developers can keep a full local repository, which allows them to work with multiple branches and commit locally before pushing their changes to the server.
We want to note two important points with respect to the distributed version control offering in Team Foundation Server. First, the Git implementation is a standard implementation of Git rather than one that has been specifically written for Team Foundation Server. This means you can work with a Git repository in Team Foundation Server in exactly the same way as you would with any other implementation. Second, despite the history of Team Foundation Server, both version control options are considered equals and are supported fully. The project management functions in Team Foundation Server are still available and code changes can still be linked to work items. Distributed version control is covered in detail in Chapter 7.
Team Collaboration
Team Foundation Server 2012 introduced a built-in set of experiences for requesting, responding, and managing code reviews. It uses the powerful work item tracking experiences behind the scenes as well as some specialized user experiences to help you discuss changes. This was a powerful way of formalizing collaboration between team members.
A new feature has been included in Team Foundation Server 2013 that allows team members to make comments directly against code, right from Team Web Access. You can make comments on an entire file, specific lines of code, or even a complete changeset, and just like code reviews, you can have threaded discussions. This provides a great way for team members to collaborate, directly against the code itself, without having to manage the complete code review process.
A new Team Room has also been added to Team Web Access in the 2013 release. This feature not only allows developers to chat in real time, but it notifies them of relevant events such as build completions and code changes.
Web Access
Team Web Access was completely redesigned in Team Foundation Server 2012 to provide an even better experience for those without any of the traditional clients available. It is friendly to modern browsers, including mobile browsers, and works well with both desktop and tablet devices.
Microsoft has further updated and improved Team Web Access in Team Foundation Server 2013. The agile management tools have also been improved and now have support for tags, backlog and board improvements, updated process templates, and support for Agile Portfolio Management. Some new features have been implemented for Team Web Access as well, including a new Test Hub, Team Rooms for live chat, and work item charts.
Agile Product Management
Additional new experiences added to Team Web Access are agile project management and product planning. The new Agile Planning tools are specifically designed for users practicing Agile development, but can actually be beneficial for those using any process.
The primary changes introduced in this release include Agile Portfolio Management and a set of improved process templates for managing projects.
The great thing about these changes is that they allow you to roll-up requirements so management can see just the level of detail they are interested in. Each team can have its own set of backlog items that contribute to a shared “feature” backlog.
Release Management
Release Management for Visual Studio 2013 is a powerful tool for automating the deployment pipeline for developed applications. Formerly known as InRelease, Microsoft acquired the product from a Canadian company called InCycle in June 2013.
The Release Management tool allows teams to deploy applications to multiple server environments and has strong integration with Team Foundation Service. Complex release workflows can be defined with a visual interface. Importantly, teams can define the promotion path of a single build through multiple environments and enforce a process of approval and promotion.