Archive for the 'Microsoft Team Foundation' Category

Visual Studio Team System Guidance

Monday, March 26th, 2007
Microsoft Patterns and Practices team has released first several topics as a part of Visual Studio 2005 Team System Guidance. This project will be the “single best repository of Visual Studio Team System guidance”, including practical scenario-based guidance for roles such as PMs, developers, architects, testers. It contains thoroughly engineered and tested set of recommendations, and it will be the single entry point for videos, roadmaps, and task-based how-tos. Particularly interesting part of this project is the Team Foundation Server Branching Guide. This is an on-going work, and it gets announced in J. D. Meier’s blog as new parts appear: (via Brian Harry’s Blog)

Beta exam 71-510: TS: Visual Studio 2005 Team Foundation Server

Tuesday, March 13th, 2007
Rob Caron writes about new Microsoft beta exam 71-510: TS: Visual Studio 2005 Team Foundation Server, which includes its version control features:
http://blogs.msdn.com/robcaron/archive/2007/02/02/1584258.aspx Eugene Zakhareyev writes on his experience with this exam:
I think the TFS exam is mostly useless as far as certifying knowledge of Team Foundation Server goes. […] Overall impression was that questions were just thrown together, and I did not see clear picture of what the exam was supposed to certify.
This exam is going to be published in April 2007, hopefully in more polished state. If you’re planning to take it, see:

Brian Harry: Microsoft DevDiv Dogfood Statistics

Saturday, February 10th, 2007
For several months, Brian Harry has been telling a fascinating story of TFS deployment at Developer Division at Microsoft, with monthly statistics. It starts in May 2006, with a post “Deploying TFS in the Developer Division at Microsoft”. The numbers impress:
A single branch of our source code is over 600,000 files today. We are in the process of adding all of our test source to our branches (historically they have been in a separate repository). This will add more than 1,000,000 more files to each branch. By the time all is said and done, considering all of the branches we use, the TFS server will contain 100,000,000 files or more (no, that’s not a typo J). This will make it one of the (if not the) largest source code databases on the planet.
Huge scalability issues are to be expected when handling this amount of data. In “What we’ve learned” chapter Brian describes many problems they have met and solved. Brian also posts monthly statisitics on TFS usage: As of now, more than 1000 active users manage 77 million files in 514Gb of compressed storage. I guess substantial number of those files was not directly created by human beings, but nevertheless. This is important information, it shows that Visual SourceSafe story will not happen again, and the next Microsoft offering in that area will be very strong. (via Version Control Server Team Blog, which alas contains only a couple of posts).

Buck Hodges: “Overview of Branching, Merging, and Shelving”

Thursday, November 30th, 2006
Buck Hodges writes about branching, merging and shelving in Team Foundation. Branching and merging are business as usual, with many details specific to Team Foundation. Shelving, as far as I understood, is the implementation of lightweight temporary branches. This may be a good feature for occasional use. Read more at Overview of Branching, Merging, and Shelving (in Team Foundation’s Weblog).

Overview: database schema version control

Sunday, November 5th, 2006

It seems that version control for database schema changes has traditionally received little developer attention. Almost everyone just goes ahead and changes database schema, trying to keep it backwards-compatible.

That’s possible if the change is small or non-intrusive (as it is in most cases). For more complex changes you could create ad-hoc script which makes necessary alterations and data conversion. In the most serious cases you stop the service, backup the database (this step is usually skipped by everyone once in lifetime, and only once), upgrade the code, run the conversion procedure, start the service back and hope that it all went ok.

This path of less resistance works reasonably well, and rarely leads to disasters. However, it is still error-prone, and the trend is to make the schema upgrades more relaxed, both error developers and production admins.

More integrated development environments seem to get built-in database schema versioning naturally. Less integrated ones get consistent migration strategy only at individual product level, and the tools are usually ad-hoc.

For example, Ruby on Rails has a very refreshing idea of Active Migrations. They work seamlessly, because:

  • Rails is tightly integrated with underlying database;
  • migrations are not tied to using SQL: to create table or add new field to it, you use Ruby itself; this helps with thinking in right way about data changes;
  • keeping Rails application under Subversion is the encouraged practice;
  • rake utility knows about migrations, and helps in creating and deploying them;
  • capistrano utility also knows about migrations, and helps in pushing them to remote production/testing servers;

Perl is, of course, less integrated, and its primary offer, DBIx::Migration could use more attention. Being tied to using SQL is its main drawback.

I believe that mimicking Active Migrations functionality should be a new standard for every major open-source language, such as Perl, Python, or PHP. That’s just like everyone currently expects something similar to CPAN for every new language which tries to attract serious attention.

Meanwhile, Microsoft is taking advantage of its integrated development environment, and makes it easier to keep database schema under common version control.

Jeff Lynch writes in Microsoft Visual Studio Team Edition for Database Professionals:

…with Visual Studio Team Edition for Database Professionals, database development now becomes a fully supported part of your application’s development lifecycle. Now all database development is done “off line” and in a “sandbox” environment (this should make your dba stand up and sing!). All user defined functions and stored procedures can be fully unit tested using representative test data automatically generated by the toolset. And best of all, this new Visual Studio sku fully integrates into Team Foundation Server so your database schema (SQL scripts) can be put under source control just like any other C#, BizTalk or Web Application!

Sachin Rekhi writes in Extensibility in Team Edition for Database Professionals:

Test Conditions. The database unit testing feature allows you verify tests using either SQL assertions or easily configurable UI client-side test conditions. We ship a set of test conditions in the box, including row count, scalar value, empty resultset, etc. But these test conditions are completely extensible so you can imagine creating your own to do more powerful test verification. Check-in Policies. Team System also allows you to create custom check-in policies that require certain actions to be performed prior to check-in. For example, a testing policy that ships with TFS enforces that a specific set of tests is run prior to checking in your code. You can implement other such db specific policies if you desired.

Several third-party tools are available to take control of your database schema for MS SQL Server, e.g.:

What’s your experience with such tools? What do you use? How did it affect your development habits? What are the drawbacks? How should we design database migration tools for open-source languages?

Microsoft Codeplex

Sunday, October 8th, 2006
Codeplex is Microsoft’s open source project hosting web site. It is basically a hosted version of Team Foundation Server which allows project collaboration, providing source control and work item tracking. Full version of Team Foundation Server supports a lot more functionality, such as project communication, product builds, tools integration etc. Team Foundation system is explained in the following documents: Press coverage: I see a lot of projects hosted on Codeplex, but unfortunately I’m not that knowledgeable in modern Microsoft developement landscape, so I have to ask: which especially higher-profile projects are there? What is the general consensus amongst .Net crowd about the Codeplex, and the Team Foundation particularly?