TSM - Collaboration done easy with TFS (I)

Dorin Cazan - Service specialist @Siemens

Team Foundation Server (abbr. TFS) has the promise of being an out of the box, all in one box solution to ALM within an organization. You can use it to manage your project and track your team's work, to manage your code, to build and test your software. You can do so either with Team Foundation Server installed on your own server, or by using Visual Studio Online in the cloud.

According to Microsoft these are some of the major features which are included in Team Foundation Server: 

You can best describe TFS by looking at its two main sides: On one hand, simply put, TFS is a collaboration platform… or, one can say, it is but a collection of features that are shared by the members of a project team and by their customers and partners of that project team. This collection of features enables them to work together more effectively - they can share project plans and notebooks, progress assessments, requests and requirements, code and much more by either relying just on TFS as it comes 'out of the box' or by enhancing its features, capabilities and usage scenarios. 

On the other hand, by looking beyond what TFS has to offer 'out of the box', one can say TFS is a collaboration platform specifically architected for integration and extensibility. Over the API one can customize elements of Team Foundation Server and complement it with new functionality. Extension can range from renaming a field in a work item, to integrating an entirely new tool for added functionality. 

TFS extensibility options

The extensibility of TFS is given by its multi-tiered structure and by the different models a user can interact with in order to adapt or add functionality. You can extend Team Foundation by using:

  1. Its client object model (as the name suggests, it applies to the client computers) in order to influence the TF behavior when it comes to version control, work item tracking, and builds 

  2. The server object model (on the application tier) in order to integrate additional tools into Visual Studio, create reports and even create event triggered actions like build deployment to a share used by the customer once you have changed the build quality appropriately

  3. The build process object model in order to customize the build process on the build machine - you can customize the build process template, the build activities and also edit the build workflow directly.

Fig 1. TFS multi-tier environment

At Siemens, one of the divisions using TFS has developed a tool that adds advanced functionality to the work item tracking aspect of TFS - especially when it comes to request tracking. Among the extra features that are available after installing these 'custom controls' one could enumerate the following: extra fields and tabs, functionality to refresh the structure cache of the work items, check users permissions for request tracking, create work item templates without having to install the Power Tools for Visual Studio and the possibility to associate and sync work items belonging to different team collections or even TFS servers. 

Among other enhancements that have been brought to our TFS installation in order to facilitate and enhance its usage scenarios not only for our Siemens developers but also for our stakeholders and customers include an event triggered release mechanism which deploys the build from the drop location to external shares, build definition export/import tools, integration with translation tools, integration with PLM products such as Team Center, custom check-in policies, enhanced version control security by employing IP secured folders directly in TFS Source control and many more.

It should be noted that Microsoft has a so called Visual studio User Voice site. This site is for suggestions and ideas for the IDE of Visual Studio - not all the ideas one writes there will be implemented, but it is a nice feeling being able convey your thoughts to Microsoft and potentially getting a new feature developed and implemented directly in TFS without going through the hustle of learning how TF works and how you can use the TFS API in order to develop an extra extension. 

As with all collaboration platforms, there are also some flaws which one needs to consider - my main complaints and grievances are related to TFS being developed as a centralized-server model that requires constant and active communication between a client machine and the application server. If, for example, you experience a power cut or the network goes down for 1 hour, development pretty much stops. The reason here is that TFS will mark all files as read-only on the filesystem until you have asked the server to check them out for you. If you cannot communicate to the server, you cannot checkout the files and hence you cannot edit them. If on the other hand you have checked out files, you cannot check them in while the server is down; in some cases you can't check them in even after the server is available again because your solution file goes offline and sometimes fails to reconnect to the server automatically. You would then get a similar error message and wonder what else could go wrong on such a beautiful day:

This solution is offline.  Team Foundation Server.

The solution was offline during its previous session and will remain offline.

In the past, some tweaking of the Windows registry or the rebinding of your *.csproj was required in order to get you solution up and running again, but it seems Microsoft has been addressing this issues in the newer VS versions as I haven't encountered this error in quite some time. 

For those who think that TFS is a "close solution", we know that it can be integrated with other 3rd party source control and issue tracking systems. Some of the features that enhance the extensibility and flexibility of TFS is its capability to integrate and work hand in hand with other software packages, including but not necessarily limited to other MS Products such as Microsoft Project Server, SharePoint, Excel and Outlook but also ClearCase (IBM), GIT and Eclipse. You can further enhance its functionality by installing Microsoft Test Manager, a separate Team Foundation client that lets you manage and execute test cases and create and manage physical or virtual test environments.

If you don't know if you would benefit from TFS and don't really want to invest money in order to find out whether it suits your needs or not, do not despair, Microsoft has introduced Team Foundation Server Express and VisualStudioOnline (also known as Team Foundation Service, the hosted version of TFS.). 

TFS Express is perfect for students, individual developers and small teams of maximum five developers. It's free and you can easily install it on your personal station without the need of having a dedicated server. If you assess that you would like to upgrade to a paid version of TFS, you can do it without losing all your work as you can take your full history with you.

TFS benefits for non-developers?

As the title of this article has hinted, I would like to share my opinion on usage scenarios that are not necessarily implying the usage of TFS just for the software development process. I mean sure, among other things, Siemens develops software, it employs TFS and other platforms in doing so… but that doesn't change the fact that the colleagues developing the software and the colleagues testing and using the software are not the same. In addition to the aforementioned users, one has to consider the other teams which interact on a daily basis with either the development teams or the end users: the trainers, project manager, configuration managers and the support teams.

Why would one think about using TFS features for teams of non-developers? The answer is simple: Starting with TFS 2015 Microsoft has introduced a major change to the licensing of Visual Studio Online and TFS by adding the Stakeholder license. This licensing method allows any number of users to be assigned a stakeholder license at no charge. These colleagues will have the ability to create and edit work items, view dashboards and will have read-only access to the Task and Kanban boards.  Moreover, 5 free Basic licenses are available to both Visual Studio Online and on-premises TFS deployments.

According to MS, the goal of this license is to facilitate communication in the project lifecycle by enabling the entire organization to participate in projects. This is a nice start, which shows Microsoft is redirecting its focus on developing the usability and usage scenarios of TFS. A stakeholder license might not seem like much now, but at this moment it seems a solid foundation, one which it can be built upon.