Team Foundation Server
Enterprise-Ready Source Control Management
By Vikram Srivatsa
Microsoft Team Foundation Server is an enterprise-ready source control tool. Microsoft s offering for configuration management was released in March 2006. This article provides a round-up of this tool and looks at the architecture of Team Foundation Server, features offered by this tool, and the migration path for users from Microsoft Visual SourceSafe.
Team Foundation Server: A Primer
Team Foundation Server is a core part of the Visual Studio Team System Suite of products. The Team Foundation Server product serves as the back-end repository that manages the source code control, provides reporting features, and enables work item tracking and a build engine (see Figure 1).
Figure 1: Team Foundation Server.
In short, Team Foundation Server enables the various stakeholders who are part of a software development lifecycle to collaborate effectively. The Team Foundation Server comes with a corresponding Team Explorer client, which is a rich client application integrated into Visual Studio 2005 that enables users to access the Team Foundation Server.
Microsoft s only tool in this domain prior to the inception of the Team Foundation Server was Visual SourceSafe. Although used widely in the Microsoft technology space, developers have always asked for a better, more robust tool from Microsoft for the important task of configuration management. It is important to understand that Team Foundation Server is not an upgrade to Microsoft s existing Visual SourceSafe, but rather a new product built from the ground up.
The general practice has been to use Visual SourceSafe for smaller projects with teams of five members or less and to move to a different vendor such as IBM Rational and use a tool such as IBM Rational Clearcase if the team is larger. With Team Foundation Server, Microsoft plans to address this gap and offer a robust, scalable solution for configuration management.
Team Foundation Server: Core Features
As discussed earlier, the core features of Team Foundation Server are Version Control, Build, WorkItem Tracking, and Team Collaboration. Team Foundation Server also provides reports on various aspects. To explore the core features of Team Foundation Server, it is necessary to first create a Team Project. All the features offered by Team Foundation revolve around the Team Project.
The version control features of Team Foundation Server can be accessed from Source Control Explorer, as shown in Figure 2.
Figure 2: Source Control Explorer.
Source Control Explorer is accessible from Visual Studio. The source control system includes the standard check-in, check-out features and certain enterprise-level features found in tools such as Clearcase; namely, the Branch and Merge operations. In addition to these features, the version control system has a new option called Shelve, which is like a user shelf for storing changes without committing them to the database.
A key feature of the version control system is the work item integration. Work item integration allows the developer to associate the check-in of source code or any artifact with a task or defect. For example, it s possible to check-in several source code files and bind that check-in operation with a specific bug. Figure 3 shows a check-in operation where the file being checked-in is being associated with a bug. This would enable an easy trace-back mechanism if there was a need to examine which source files were modified in order to fix a specific bug.
Figure 3: Work item integration.
Apart from this, Team Foundation Server provides the ability to assign check-in policies to the source control system. This is a way to ensure that the developer has completed certain prerequisites before allowing the check-in of the file. For example, it is possible to enforce a static code analysis check on the source-code before you check the code into the repository. This step ensures that the file will be checked in only after it has passed the static code analysis check.
Team Build is a Build facility built on top of the MSBuild engine. Team Build supports the use of a separate computer as a public build machine where source files are compiled. You can configure Team Build to move the final output into a particular file share. Team Build also provides various reporting features. For example, it is possible to customize and extend Team Build to support various custom scenarios that may be needed in a build process. Certain agile practices such as Continuous Integration can be achieved using Team Build. Microsoft plans to include MSBuild, the core engine behind Team Build, as part of every operating system starting from Windows Vista. This means that it is not a requirement to install Visual Studio 2005 on the machine hosting MSBuild because MSBuild includes a copy of the Common Language Runtime (CLR).
Team Foundation Server includes facilities that enable a project team to track various work items, such as a bug, risk, scenario, task, or quality of service requirement. Team foundation provides a fully fledged UI for creating these work items from within Visual Studio IDE. Once created, it is possible to manage the work item by assigning various attributes to it, such as the title, state, description, etc. Figure 4 shows the creation of a new bug.
Figure 4: WorkItem tracking.
You can see a list of queries in the right side of Figure 4. These queries enable users to query and retrieve information regarding the various work items.
Team Foundation Server enables collaboration between different members of a team by means of the Team Project. This acts as the primary central repository where the team can interact. Closely linked to the Team Project is a project portal based on Windows SharePoint Services. The project portal consists of information such as announcements, project documents, process guidance, and reports. Figure 5 shows a sample project portal.
Figure 5: A sample project portal.
Under the Hood: Architecture of Team Foundation Server
Team Foundation Server was built as a three-tier application and is comprised of a client tier, application tier, and a data tier (see Figure 6). Team Foundation Server leverages the SQL Server 2005 database on the data tier and makes use of Windows SharePoint Services and ASP.NET running on IIS 6.0 on the application tier.
Figure 6: Architecture of Team Foundation Server.
Team Foundation Server supports a single server, as well as a dual server deployment mode. The database and application tiers can be installed either on the same machine or on two machines, depending on the specific scenario and needs.
Data Tier. The data tier consists of a SQL Server 2005 database. This is used as the back-end for the Team Foundation Server system. Any software artifact managed by Team Foundation is stored in the SQL Server Database.
It is possible to use a SQL Server 2005 cluster as the back-end for Team Foundation Server. Apart from the software artifacts, the database is also used by Windows SharePoint Services for its configuration and content databases. Figure 7 shows the different databases used by Team Foundation Server. The Team Build Service also has its database in the data tier.
Figure 7: Team Foundation Databases.
Application Tier. The application tier is comprised of ASP.NET and Windows SharePoint Services running on IIS 6.0 and the Team Build Service.
Team Build is not installed as part of the Team Foundation Server setup, but rather must be installed separately by running the setup package on the TFS Installer CD. It is possible to install Team Build on a separate dedicated Build Server, as well. Team Build can also be installed on the client machine or on the data tier.
Client Tier. The client tier consists of the tools used by the end user to interact with Team Foundation Server. Visual Studio 2005 acts as the primary user interface and provides integration from within the IDE to connect to Team Foundation Server. Other clients, such as Microsoft Excel and Microsoft Project, can also be used in conjunction with Team Foundation Server.
Migration from Visual SourceSafe and Similar Tools
One of the important aspects that arise out of the launch of Team Foundation Server is the migration path for users who are using other configuration management tools, such as PVCS, Rational Clearcase, and Microsoft s own Visual SourceSafe product. For users of PVCS, the migration path is a two-step process. They need to convert from PVCS to Visual SourceSafe first using the PVCS_SS.EXE tool, which is provided with Visual SourceSafe; then they need to convert from Visual SourceSafe to Team Foundation Server. Microsoft is providing a command line utility called VSSConverter to migrate Visual SourceSafe repositories to Team Foundation Server.
Some of the key aspects that users need to be aware of in using the VSSConverter tool are listed here:
- VSSConverter migrates the source files, version history, labels, and comments with associated usernames.
- The user permissions of Visual SourceSafe will not be migrated to Team Foundation Server because the security model in Team Foundation is different from Visual SourceSafe.
- VSSConverter provides the option of migrating a specific folder from an existing Visual SourceSafe tree or for migrating all folders, depending on requirements.
- VSSConverter requires the Visual SourceSafe Database to be in Visual SourceSafe 6.0 format.
- VSSConverter can be run in analyze mode, which provides an analysis report that informs the user, prior to migration, about any migration issues that may arise. See Figure 8 for a sample analysis report.
Figure 8: VSSConverter Analysis Report.
Furthermore, the VSSConverter tool has a dependency on Visual SourceSafe 2005 and SQLExpress for performing the migration. The VSSConverter tool is located in the \Program Files\Microsoft Visual Studio 8\Common7\IDE folder.
There currently is no tool-based offering from Microsoft for migration from an IBM Rational Clearcase system to a Team Foundation System, although Microsoft does mention that it is high on their priority list and they will provide a solution after the release of Team Foundation Server in March. There is also a third-party offering called CS-Converter from ComponentSoftwareInc. that offers conversion from CVS, Subversion, and RCS.
Performance & Capacity Planning
It is important to understand that even though the architecture of Team Foundation Server looks like a standard three-tier application built using ASP.NET, you cannot use the application server as part of a Web farm or use technologies such as Network Load Balancing by adding another application tier node. The reason for this is that Team Foundation Server makes use of certain in-memory disposable caches to improve performance; hence, it is not possible to scale out at the application-tier level. This limitation will exist as of v1.0 of Team Foundation Server. The recommended practice to provide for availability is to use a warm standby server at the application tier.
Microsoft recommends a single server deployment of Team Foundation Server for about 100 users using Team Foundation Server. For more than 100 users it is recommended that the application tier and data tier be installed on two servers.
Team Foundation Server also supports a version control proxy server to provide better performance. In this scenario the first user who requests the files suffers the performance hit as files are cached onto the proxy server. Subsequent requests to the same files are retrieved from the proxy server, providing a performance benefit.
Team Foundation Server and Older Visual Studio Products
Microsoft provides an MSSCCI provider for older versions of Visual Studio 6.0 and Visual Studio 2003. This implies that moving to Team Foundation Server does not mandate a move to Visual Studio 2005. It is possible for teams currently working on a VB 6.0/VS.NET 2003 application to only switch the source control tool from SourceSafe to Team Foundation Server and continue to use their current development tools. The Team Foundation MSSCCI provider is available for download.
Industry Initiatives around Team Foundation Server
Team Foundation Server has generated a lot of interest in the industry, and many third-party vendors have announced various offerings that would extend and enhance the Team Foundation Server and increase the adoption rate.
The important initiatives in this area include offerings that take the reach of Team Foundation Server beyond the Microsoft Windows Platform and enable cross-platform usage of Team Foundation Server. Some of the initiatives around Team Foundation Server are listed here:
- Sourcegear s Project Allerton. Offers a GUI client, a command line utility, and Eclipse integration from Linux, UNIX, and MacOS.
- Teamprise. A suite of client applications that enable access to Team Foundation from non-Windows platforms such as Linux, UNIX, and MacOS X. This suite also provides integration of Team Foundation from within the Eclipse IDE.
- TeamLook. Project dashboard that enables team members to communicate with Team Foundation using Microsoft Outlook.
- TeamPlain. This includes four important feature additions to Team Foundation Server:
o TeamPlain WebAccess; offers a Web-based interface to access Team Foundation.
o TeamPlain Eclipse Plug-in; offers eclipse integration.
o TeamPlain Visual Studio 2003 plug-in; offers integration with Visual Studio 2003.
o TeamPlain Customer Connect; enables customers to participate in the development lifecycle.
This article covers the features offered by Microsoft s offering in the configuration management space: Team Foundation Server. It also describes the migration path from Visual SourceSafe and looks at some of the industry initiatives around Team Foundation Server.
Vikram Srivatsa is a Software Designer in the Advanced Technology Group at Hewlett-Packard Company (HP Services) and is based in Bangalore, India. Vikram is also a Microsoft MVP.