The case for TFS as an enterprise ALM tool

In the past few years, Microsoft has been playing catch-up in the ALM world.  Their first true venture into that space was the introduction of TFS back in 2005.  The first release focused mostly on developer support such as builds and task tracking.  But it built the foundation for what has been released in the following versions (2008, 2010, and the minor “in-between” releases).  TFS 2010 finally put out what I believe is a compelling product that rivals anything that is out there, competes with them head to head, and in many ways does a much better job than other more established packages.

Up until the 2008 release, Microsoft had been pushing the “Visual Studio Team System” name, and last year in 2010, I started seeing that changed towards Visual Studio ALM.  So what was the big change?  They added much better testing and virtualization tools, they revamped their build system, added more project management features through test case management.  Lately I’ve seen more and more information coming out such as this: http://www.microsoft.com/visualstudio/en-us/visual-studio-testing-tools and this: http://www.microsoft.com/visualstudio/en-us/try/test-professional-2010-tour

Many people think of TFS as just a source control system, but it is so much more, and if all you are using it for is to store your code, you are vastly underutilizing it and you should re-evaluate your investment (of time and money).

Visual Studio ALM includes features that address all facets of ALM, as shown on the diagram below:

clip_image002

Team Foundation Server is at the core for VS ALM and it serves as the main hub for all the collaboration between the different parts. TFS provides version control, work item tracking, build automation, and data warehouse. Work item tracking houses all requirements, bugs, tasks, and other artifacts that allow the entire team to communicate together within one system. The data warehouse enables powerful reporting tools which provide historical trending and visibility into overall project health. The SQL Server engine that houses all real-time data is able to provide insight into any pending or upcoming issues so that the team can make data-driven decisions. TFS also integrates with Microsoft Project and Project Server to help plan and manage projects.

So at the end of the day, why stitch together multiple disparate systems like this:

clip_image001

When you could have one system that encompasses and integrates all these features including automated testing, virtual lab deployment, and architectural validation (to name a few).   So now your workflow looks like this:

clip_image002

There’s a ton of features that I’m diving into and the more I dig, the better I find it.  At the end of the day, the most powerful thing that TFS has going for itself is the power to integrate so many moving parts and give you the ability to make decisions at the enterprise level.  Quality is found at every stage of your SDLC, so use your tools wisely and you’ll notice a big improvement across the board!

About esteban

Esteban is the Founder and Chief Technologist at Nebbia Technology, an ALM consulting and Azure-powered technology company. He is a software developer with a passion for ALM, TFS, Azure, and software development best practices. Esteban is a Microsoft Visual Studio ALM MVP and ALM Ranger, Pluralsight author, and the president of ONETUG (Orlando .NET User Group).

2 thoughts on “I’m on Radio TFS # 103!

  1. Renato Bento

    Thank you,
    this really helped me out!
    I was on a hard path trying to parse this parameters as a XmlDoc.

  2. Jorge Sanchez

    Hey I being using your code to accomplish the same thing but I never work with TFS before, I think I got it to the part that I could pass the ProjectFilePath and NewAssemblyName, but I not sure how to pass the Workspace InArgument do you have an example of how do I specify this on MsBuild?

    BTW i also change

    var workspace = context.GetValue(this.Workspace);
    to
    var workspace = (Workspace)context.GetValue(Workspace);

    is this correct?

    Thank you very much


Leave a Reply

Your email address will not be published. Required fields are marked *

Are you human? *