Wednesday, December 29, 2010

Play with TFS 2010 and VS 2010 for free ??

Microsoft has released the new version of a virtual machine with a entire ALM environment (TFS 2010 + VS 2010 Ultimate + tutorials), in trial version until June 1, 2011.
You'll be able to really learn and experiment advanced functionalities

  •  on the Tailspin Toys Application (Build definition, Unit Test, and much more...), 
  •  or create your own ones, with reports, new types of WorkItems, ...

It's here : Microsoft® Visual Studio® 2010 and Team Foundation Server® 2010 RTM virtual machine for Microsoft® Virtual PC 2007 SP1 

How to use it (and links to download other types of VPC, such as Hyper-V):

By the way, also try the "TFS Integration Platform" from CodePlex to extend the power of TFS outside its traditional usage.

Happy testing... and good luck downloading the 9 Gb !

PS : And for the fun, here is Visual Studio ALM Ranger Projects Scrum Guide.... Personally, I found it interesting but REALLY scary at first sight, despite the fact that I have been using TFS for the last 3 years, with Agile, and recently Scrum for about a year !!

Tuesday, December 28, 2010

What about the TS exam-70-512 : Visual Studio Team Foundation Server 2010, Administration

Wanna get a TS certification with TFS 2010 ??
You can go for the exam-70-512 "Visual Studio Team Foundation Server 2010, Administration".

Here is a official information on Microsoft Web site :

In order to study the materials for this exam, Latek did a great job in helping us finding out what MSDN information to read:

I just wish this was a Wiki so that we could add some more links !

Here is a training course for the certification :

Good luck !

Tuesday, December 21, 2010

TFS 2010 is great as an ALM tool, what next ??

TFS 2010 is already a great tool for doing an easy ALM with ONLY one tool, and works great with Agile Scrum.

So what else could Microsoft will add in the next versions ?

It's gonna be much MORE AGILE !!!
With better communication between the Team and the Stakeholder, as a result (and I added some of my guesses and hopes) :

. more visual communication tools (Powerpoint integration, ...),
. dynamic charts and cinematic between pages (such as Sketchflow in Microsoft Expression Blend 4),
. Release Management (> 2011),
. THE cloud !!! for continious delivery,
. Portfollio for helping the Business to prioritized,
. Process management : Moving from Agile to CMMI,
. Value for existing assets (eg. architectural),
. Ops integration

A survey worldwide shows :
  • The top 2 tools used to archive : VSS > Subversion (TFS comes in the 3rd rank)
  • The premier ALM Tools : Microsoft > IBM
Source of those information : Brian Harry (creator of VSS and Microsoft Visual Studio Technical Fellow) in the ALM summit 2010.

Brian Harry reminded us an interresting information : Microsoft is "dog fooding" TFS 2010 within a large development team "The Microsoft Developer Division has 3,500 developpers users". Another source tells us that this represents terabytes of data.

Let's hope the future will start ASAP !!!

PS : with still some missing features, so don't forget to check updates and my other post

Sunday, December 19, 2010

ALM submit Redmond november 2010 (TFS, Agile, Scrum, ...)

Last month, Microsoft organized one of the best ALM event ever :

During 3 days great and hot topics were presented, among which we can find Team Foundation Server 2010, Visual Studio 2010, and Agile, Scrum.
with great speakers (Ken Schwaber, Brian Harry, …).

The Web casts and more info are available here :

Wishing to have this same great program organized in Europe too, 'cause many employers don't see the needs in sending people in conferences ;-)

1 Agile Acceleration
Keynote - Scrum: the 3rd decade - Ken Schwaber
Featured - The state of ALM: An industry view - David West
Heterogeneous ALM environments - Jamie Cool
Keynote - IT for the future - Moving into the cloud - Tony Scott
Using failure to pave the path for success - John Szurek
Managing Change
  • Scenario-focused engineering - Drew Fletcher,
  • Chasing agility - Chris Kinsman
  • Agile transformation of a Microsoft product team - Cameron Skinner
2 Collaborative Development
Keynote - From individual to team to organization - Brian Harry
Making Continuous Delivery a Reality from Product Backlog to Virtual Lab - Amit Chopra
Successful software project management styles - Stephanie Cuthbertson
Increasing Revenue Opportunities with Automated Development Tools - Karel Deman
Platform Integration
  • Extending the ALM platform - Mario Cardinal
  • Synchronizing and migrating ALM environments - Grant Holliday
  • Values: Exploring the Why Behind What We Do - Jim Newkirk
  • The future of collaborative development - Mary Czerwinski

3 Engaging the Whole Team
Keynote - The agile consensus - Sam Guckenheimer
Requirements Management: a smooth transition - Ido Eshed
Testing in an agile world - Vinod Malhotra
How are they different, really? - Eric Willeke
Professional Practices
  • The Marriage of Exploratory Testing & Agile Development - Jon Bach
  • Professional scrum developer practices - David Starr
  • Connecting Developer Workflow: Mylyn and the Task-Focused Interface - David Green
  • ALM Summit Panel Discussion - Schwaber, Starr, Guckenheimer, Provost, Willeke

Thursday, December 16, 2010

CMMI Case Study : What about quality with V-Cycle vs. Agile-Scrum ?? and link with the theory of evolution...

"Soirée de rentrée du SUG le 30 Septembre 2010" is a meeting I attended a while ago.

Since it is particularly interesting to show figures on how Scrum helped improving the overall quality of a product, within a CMMI context, I wanted to comment some of the major elements of the presentation concerning General Electric :
  • More Business Value delivered per release : twice as much between 2 major releases. This is because Scrum focuses on working with priority set on high ROI features,
  • Less days required to delivering a Business Value unit : divided by 2 between 2 major releases. This is because a good Scrum team is not scared to criticize the existing procedures and make them change for the next iteration. On the other hand, a good Scrum team will gather key data into BI tools to analyse them and find ways to optimize things, just like a scientific approach within the Mechanical Engineering industry (such as car production lines).
  • Less defects per release : divided by 12 in about 2 years time, and the trends shows that it tends to  zero ! because for a good Scrum Team, a user story can only be done and completed, with a series of strict validations. Moreover the Continuous Integration process based on a large amount of Unit Testing and GUI testing guaranties that we don't have any regressions.
  • The Turn-over of the people within the team is less a problem : This is because of the emphasis on the oral communication and due to the pair-programming to force the exchange of the information within all members of a team.
  • No more delays for the releases : This is due to the short cycle of the iteration period, where at the end of each iteration, we MUST have a working product that could potentially be shipped to production. To do so, you must have a state of the art Software Factory, with a large amount of automated tests and builds,
Important UPDATE: I forgot to mention about a major side effect presented when implementing Scrum after a V-Cycle on this project :
The team hated those daily meetings and talking about what they did... thinking that this method was implemented to spy them. As a result, the turnover was quite important. After a while, not only people got used to it, but they realized that this entire Scrum process helped them delivering better quality product.  

The slides was made public by the French Scrum User Goup

Another link is : "start tiny to end up huge : the art of the incremental build"
Commencer petit pour finir grand : l'art de la construction incrémentale par Etienne Charignon

Happy reading.

Tuesday, December 7, 2010

What's inside the WIX package and what do you need ?

To better use WIX without notepad ! you souhd install at least the following :

          where you'll find in the Bin folder the exe such as : Candle, Light, Lit, Lux, ...

  • WIX edit (9 Mb for the version wixedit-0.7.3.msi)

Thursday, December 2, 2010

Variables available for the Workflow Foundation inside your Build Process Template

I might not be looking properly, but as per today, I did not find a large amount of information on the various parameters available for the Workflow Foundation inside your Build Process Template

For instance, just search for       "BuildDetail.DropLocation" BuildDirectory
 in Google, I only get 42 results. BUT thoses 2 parameters are essentials to my Workflow !

Update : The complete documentation on "Team Foundation Build Activities" is now available (Dec 9th  2010)

Here are a list of other handy parameters that I use :
  • this:Process.BuildNumberFormat=["$(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.r)"]

In C#, we have :
BuildDetail.DropLocation = "\\MyBuildServer\TFSDropBuild\Dev_Night\Dev_Night_20101202.6"

In order to have the name of the last sub-folder, you could use a quick and dirty trick (I hope there's a better solution somewhere hidden in the MSDN) :
Arguments = BuildDetail.DropLocation + " " + BuildDetail.DropLocation.Substring(BuildDetail.DropLocation.LastIndexOf("\") + 1)

Note : Even if it is not obvious, you can write some code in the "FileName" field. Warning, it'll look like you can write C# code (since the SubString(), '+' operator, etc... works) BUT you have to write that as a VB.Net expression, for instance :

  • "Hello World.This works".Split(Convert.ToChar("."))(0)

Alternatively, you could use native TFS property such as BuildDetail.BuildDefinition.Name if needed.
Another "Friend" string available is :

  • SourcesDirectory 

that replaces the need for doing :

  • BuildDetail.DropLocation.Split(Convert.ToChar("\"))(4).ToString()

Here is the detail of the POC Batch file to make sure that the expression in the "FileName" field works, with input parameters sent by WF4 :

REM Create a unique identifier
SET T=%time:~0,5% 
SET fileName=.%T::=-% 

REM %1 is for instance \\MyBuildServer\TFSDropBuild\Dev_Night\Dev_Night_20101202.6
DIR *.* > %1\myNewCreatedFile_%fileName%.txt
DIR *.* > %1\myNewCreatedFile_%2_%fileName%.txt

Wednesday, December 1, 2010

ALM + TFS 2010 + VS 2010 : Where to start ?

Where to start with your Application Lifecycle Management ?? based on Team Foundation Server 2010 and Visual Studio 2010

If you have feedbacks, please do so to improve this documentation

[updated] You could find complementary and/or similar information on Posts similar to this one:
. a handy spreadsheet by Terje Sandstrom
. and an MSDN one from Grant Holliday.

On large scale and critical projects, you can reach really high quality and standards :
  • by choosing a project management framework or combining them (as long as they are not incompatible: CMMI, ITIL, ISO, SCRUM, PMBOK, PRINCE2...)
  • by taking into account the user's needs (either by arranging the priorities or extend the existing contract),
  • by creating a great team,
  • by providing them great tools or resources, which is the matter of this Post. Moreover, most of them comes free of charge (indicated by the label  [Free]).
  • by blending with other great tools (that are not listed below, such as HP ALM 11 and its Quick Test Pro - Very expensive, but great),  
  • by taking into account your team's needs and feedbacks,
  • by adding some challenges (with regular independent audits),
  • by adding comments to this post so I can enhance it ;-)

0. Prerequisites
You obviously need VS2010 + TFS2010 : either get a 
.  TFS 2010 Ultimate trial  [Free],
. or get entire MS ALM (TFS 2010 +VS 2010 Ultimate with proper Service Pack and Powertools installed)    {for Virtual PC, for Hyper-V, ... that expires every so often. Google for "Microsoft® Visual Studio® 2010 and Team Foundation Server® 2010 RTM virtual machine"[Free],
. or have an MSDN account or proper license.

1. Compulsory Tools
. Microsoft TFS Power Tools (> March 2011) [Free],
. VS Productivity Tools add on [Free],
. TFS Sidekicks 2010 [Free - from Attrice Corporation],
Team Foundation Server Administration Tool  [Free - from CodePlex] (to administer easily accounts accross TFS, Reporting Services and WSS),
. FxCop/Code Analysis [Free - Comes with VS],
. StyleCop/Source Analysis (>v4.4) [Free],
. NDepend (if you think the 351 rules of FxCop and StyleCop are enough, trust me you're wrong !!! Get NDepend on the top of those two previous tools),
. MSI generator (VS Installer could be enough, else use WIX [Free]= Windows Installer XML),
. SoapUI to test your WCF Web Services [Free] or WCFTestClient [Free - Comes with VS]
[updated 2011.09.05] Fiddler Http Debugging Proxy  [Free]  and its Microsoft addon to decode Binary messages : WCF Binary messages inspector  [Free] .
[updated 2011.06.21] TFS Admin tools ( [Free], for eg. to add a user in both TFS, Sharepoint and Reporting Services in one click !

2. Highly recommended tools
. GhostDoc [Free - from Submain],
. Doxygen [Free],
. Inmeta Visual Studio Build Explorer will present your numerous Build definitions as a treeview [Free],
. VS Power Tools : Work Item Search, Work Item Visualizer [Free],
. WIX Edit  [Free]+ Votive  [Free] [to manage and generate automatically with TFS and for free your MSIs]
.  HP QTP (Quick Test Pro) [If you have a lot of money !],
   - or "cheaper" TELERIK WebUI Test Studio,
   - or Coded UI given in VS 2010 Ultimate.
[updated 2011.06.21] A GREAT tool to test Web Services (including WCF Binary used by Silverlight) : HP ALM-Service Test 11 (not free !!! $$$$$)
Fissum - A TFS tray icon client  [Free].

Optional :
. [Just as R&R tools] : Pex  [framework Free] but PEX with Integration into VS2010 requires MSDN + Moles,
. [updated 2011.06.21] Extand TDD with BDD (Behaviour Dev Driven) and generate your tests based on T4 : SpecFlow Pragmatic BDD for .NET  [Free],
.  NArrange [Free],
. en_visual_studio_2010_pex_0.94.51023.0_power_tools_x86_598803.exe
. en_visual_studio_2010_pex_0.94.51023.0_power_tools_x64_598803.exe

3.0 Required updates
As per today, install at least the following :

. TFS 2010 SP1 Cumulative Update 1 - KB2536929 (version June 8th 2011)  [Free] 
. VS10-KB2345133-x86-FixScrollingContextMenu.exe

. VS10-KB2268081-x86-Find and Replace Dialog Growing.exe
. VS10-KB2251084-x86 Cut or Copy displays 'insufficient memory' error.exe
. en_visual_studio_2010_fp2_x86_604352-FeaturePack-14nov2010.msi
You could use the Microsoft Web Platform Installer (WPI) to do so easily, and always have the latest available updates.

3.1 Required TFS addon
. TFS 2010 additional Checkin Policies [Free]

4. To read / watch necessarily : Branching and Merging
A must "have" : VS ALM Ranger :  [Free]
. --> Start here
. TFS_Branching_Guide_Q&
. TFS_Branching_Guide_2010_Complete_Package_v1

[updated 2011.06.21] Check Brian Harry's blog (see below) to have latest updates on ALM Ranger's work,

• Webcast - Excellent [Free]: (Eric Swanson, Sept 2010)

• Webcast - Very good [Free]: Understanding Branching and Merging in Team Foundation Server 2010, (Brian Randell, MVP VS ALM, @ TechEd Nov. 2010),

• MSDN "Using Version Control" [Free] :

• Webcast - R&D on Branches with TFS 2010 [Free] : (Brian Keller, Oct 2008)

5. Other recommended Resources
Any questions ? Find an answer on the following specialized forum  [Free]

Blogs to check out [Free]:
  . (Brian Harry) IMPOSSIBLE to miss out, with PLENTY of information

• Webcast of TechEd 2010 : DEV405-Deep Dive into TFS 2010 Server Reporting

• Books on TFS 2010, for instance :
. Professional Application Lifecycle Management with Visual Studio 2010 (Wrox Programmer to Programmer)

• WebCasts (prioritized) [Free] :
. Check the Webcasts on TechEd (US and Europe) using the search / filters to get excellent informations and practical cases, by talented/famous speakers [Free]. For instance :
--> Neno Loje (MVP) : Best Practices Using Visual Studio Team Foundation Server 2010,
--> Brian Harry is a Microsoft Technical Fellow and Product Unit Manager for TFS
PDC 2008 Team Foundation Server 2010 : Cool Next Features
--> Before developing TFS 2010, Matthew Mitrik, program manager for Team Foundation Server, explains how Branching and Merging should be

• Other  [Free]:
 . Start to read more about TFS Integration :
(developped by the MS TFS product group and the Visual Studio ALM Rangers).
 . In order to create Great reports based on the TFS Datawarehouse, check this out :
 .  Books / online books on .Net and ALT.Net and Agile :

6. Working with the Build Process Template (Workflow Foundation 4) - Team Foundation Build Activities : 
. Recent documentation (dec. 2010) :
[updated 2011.09.12Create easily Build version :
 . [updated 2011.10.05]

7. To go deeper
• Get a TFS 2010 certification : Exam 70-512: TS (Admin)

• Concerning the Builds :
. Microsoft Developer Network > Visual Studio Team System Forums > Team Foundation Server - Build Automation

• Information on my Blog, such as this one,
For your information, here is a list of companies that are both using TFS 2010 AND are referenced with Microsoft :

• If you want to integrate Project Server 2010 (and Sharepoint 2010) WITH TFS 2010, here is the Beta (as per today). It comes with a 'Go Live' license :

• Since reflector is not free anymore, use :

8. ALM - Performance Testing aspects
• Here is a link that summarizes tools / help on performance testing :
• Based on Fiddler quoted above, check the additional extensions (security, load, performance, ...)
     . Security :    [Free],

Create a Custom Workflow for a TFS 2010 Build Definition

1. This is where to start :

2. Customize your Build with Workflow Foundation 4.0
Based on the previous introduction, you'll be able to work with WF 4.0 on your Build process template (more than 600 lines of XAML).

  2.a. Add a new Invoke Process after a successful Build, within the "Try Compile, Test, and Associate Changesets and WorkItems" activity, inside the "Compile, Test, and Associate" sequence :

   2.b. Then, Drag & Drop an Invoke Process activity (from the Team Foundation Build Activities Toolbar), click property to set its parameters.
   Warning 1: The previous MSDN documentation forgot to mention to add the FileName parameter inside double quotes, this bits of code will be considered as a String by WF4).
   Warning 2: You will have a red exclamation mark above each new activity in error. This is NORMAL, since once you Drop them, they are not yet configured. A mouse over it will detail the problem.

  2.c. Then, add 2 sub-tasks as 2 other activities within the Invoke Process : The WriteBuildMessage and the WriteBuildError. And set them up according to the previous MSDN example.

   This is only a example where you could drop your 'Invoke process' activity. On 'real' project, you should combine this with If-Then conditions, and add it on anywhere is required. For this test, I placed this new activity at the begging of your workflow to see quickly of if works. Once OK, just Drag & Drop it to a relevant place.

   Update : For more details, check my other post : Variables available for workflow foundation within TFS 2010

  2.d. Once done, all the red exclamation marks will disapear.

  2.e. Don't forget to archive this new Build ProcessTemplate, and reference it in the Build Definition (otherwise TFS will not find your changes that are only local).

 2.f Option : You could add custom C# from the TFS 2010 SDK code to extend further your process (example here).

If you made an error, here is an example of a Build compilation problem (UNC=universal naming convention):
  • CMD.EXE was started with the above path as the current directory.
  • UNC paths are not supported.  Defaulting to Windows directory.
  • Access is denied.

Else, it's done and finished !!

In the resulting XAML, we can notice that Visual Basic is NOT dead :

              <If Condition="[AssociateChangesetsAndWorkItems]"
DisplayName="If AssociateChangesetsAndWorkItems"
DisplayName="Associate Changesets and Work Items for non-Shelveset Builds"
Reason="Manual, IndividualCI, BatchedCI, Schedule, ScheduleForced, UserCreated">
                      <scg:Dictionary x:TypeArguments="x:String, x:Object">
                        <x:Boolean x:Key="IsPinned">Truex:Boolean>
DisplayName="Associate Changesets and Work Items"
 Result="[associatedChangesets]" />
DisplayName="Invoke DeployBatch"
                        <ActivityAction x:TypeArguments="x:String">
                            <DelegateInArgument x:TypeArguments="x:String" 
                            Name="errVTHOutput" />
DisplayName="DeployBatch Error"
 Message="[errVTHOutput]" />
                        <ActivityAction x:TypeArguments="x:String">
                            <DelegateInArgument x:TypeArguments="x:String" 
                            Name="stdVTHOutput" />
DisplayName="DeployBatch Output"
 mva:VisualBasic.Settings="Assembly references and imported namespaces serialized as XML namespaces" />
                        <scg:Dictionary x:TypeArguments="x:String, x:Object">
                          <x:Boolean x:Key="IsPinned">Truex:Boolean>


Team Project Collections, the theory and the Best Practices

A. How to use a Team Project Collection
1. Here is the official MSDN theory :

2. Here are some explanations :
  a. From the MSDN :

  b. From Brian Harry

3. Here are some Lesson Learned and Best Practices,
 a. A Great !! Webcast that tells us not to create many Team Project Collections, issued from the TechEd Europ 2010, 2 weeks ago, by Neno Loje (MVP Visual Studio ALM) and the Slides (or I backed it up here)

b. ALM Ranger Best practices guides :
(including Visual Studio TFS Branching Guide 2010 on CodePlex :

c. An "old" White Paper from Mario Rodriguez (2009.11.05) :

B. How to migrate them from TFS 2008 to TFS 2010 ??

C. More info, and free training courses

Tuesday, November 30, 2010

How to automatically deploy, once Gated checked-in

Solution 1 : Based on Web deploy package
* Create a Web deploy package
* Add extra MSBuild parameters onto the BuildDefinition (such as  /p:CreatePackageOnPublish=true /p:DeployOnBuild=true)

Then, once you run and passed the Gated Check-in (or in fact, any TFS Build), you will find all the codes be be installed in the TFS "Drop folder".

Solution 2 : Run a Batch file with the Build definition Workflow :
To do so, you have to use InvokeProcess activity with the Workflow TFS 2010 - how to execute a batch file after build
For more details, see my other post :

Solution 3 : A more "industrialized way" is to use WIX to generate your MSI
First, we have to understand how it works (Ewald Hofman is MVP VS ALM) before specifically use WIX.

Then, you should understand MSBuild ; here are the basics from the MSDN : "Compile Apps Your Way With Custom Tasks For The Microsoft Build Engine"

Finally, use this VERY detailed tutorial "Automate Releases With MSBuild And Windows Installer XML" (MSDN Mag).

Note: Here is a Hello World that will launch Notepad with a new HelloWorld.txt file after the Build,
we first start to create a MSBuild project, for instance mySmallProject.csproj

in which you can find :
 <Target   Name="AfterBuild"
             <Exec   Command="C:\WINDOWS\notepad.exe HelloWorld.txt" />

Then the command line :
          msbuild.exe mySmallProject.csproj /t:Build
will build and at the end, it will open your NotePad !

Solution 4: Use TFS Deploy but this project has only 140 downloads as per today (dec 2010).