Steven Wilssens http://steven.wilssens.net/ Imagination is more importand then knowledge Steven Wilssens Thu, 17 Aug 2006 19:07:17 GMT newtelligence dasBlog 1.7.5016.2 Steven.Wilssens@telenet.be Steven.Wilssens@telenet.be http://steven.wilssens.net/Trackback.aspx?guid=a0d0b8e7-21de-481a-803e-94d34b8eb292 http://steven.wilssens.net/pingback.aspx http://steven.wilssens.net/PermaLink.aspx?guid=a0d0b8e7-21de-481a-803e-94d34b8eb292 http://steven.wilssens.net/CommentView.aspx?guid=a0d0b8e7-21de-481a-803e-94d34b8eb292 http://steven.wilssens.net/SyndicationService.asmx/GetEntryCommentsRss?guid=a0d0b8e7-21de-481a-803e-94d34b8eb292 0

On Friday 8 September 2006 I will be delivering a a one-day VISUG event at the Compuware offices .  During this event we will provide our VISUG members with deep dive information on Visual Studio Team System 2005. Since this is a community event, we directly skip all formalities and focus on what is really important:  The attendee will acquire the knowledge to be productive on a team that uses Visual Studio 2005 Team System.

During the event we will discuss following topics:

  • Event Overview : Overview, Business value of VSTS, core scenarios, licensing
  • Planning for VSTS: Hardware and software requirements, selecting projects or solutions
  • Deploying & Maintaining Team Foundation Server: Installation, Administration, backup and restore
  • Working with Team Foundation Server: Architectural overview, services, extensibility
  • Team Projects & Reporting: Project planning, methodology, reports
  • Process Template Customization: Process guidance, work item types, workflow
  • Source Code Control: Overview, migration, administration
  • Building Code (MSBuild): Overview, customization
  • Architect Tools: Application designer, class designer, logical datacenter designer, SDM SDK
  • Developer Tools: Profiling, code coverage, code analysis
  • Visual Studio 2005 Team Edition for Database Professionals
  • Testing Tools: Test management, test types, unit testing
  • Integration Scenarios: Commonly encountered integration scenarios

This training is free of charge to all our VISUG members.  You can register at http://www.visug.be/CommentsView.aspx?Id=83ab000e-8475-4e46-b642-ac9855b891f2 .  Be aware that there is a maximum of 40 attendees for this event so register as soon as possible.

Team System Event on Friday 8 September 2006 http://steven.wilssens.net/PermaLink.aspx?guid=a0d0b8e7-21de-481a-803e-94d34b8eb292 http://steven.wilssens.net/TeamSystemEventOnFriday8September2006.aspx Thu, 17 Aug 2006 19:07:17 GMT <p> <font face=Tahoma color=#000000>On Friday 8 September 2006 I will be delivering&nbsp;a&nbsp;a one-day&nbsp;VISUG event at the </font><a href="#topofpage" target=_blank><font face=Tahoma>Compuware offices</font></a><font color=#000000><font face=Tahoma>.&nbsp; During this event we will provide our VISUG members with deep dive information on Visual Studio Team System 2005. Since this is a community event, we directly skip all formalities and focus on what is really important:&nbsp; <b>The attendee will acquire the knowledge to be productive on a team that uses Visual Studio 2005 Team System.</b></font></font> </p> <blockquote> <p> <font face=Tahoma color=#000000>During the event we will discuss following topics: </font> <ul> <li> <font face=Tahoma color=#000000>Event Overview : Overview, Business value of VSTS, core scenarios, licensing </font> <li> <font face=Tahoma color=#000000>Planning for VSTS: Hardware and software requirements, selecting projects or solutions </font> <li> <font face=Tahoma color=#000000>Deploying &amp; Maintaining Team Foundation Server: Installation, Administration, backup and restore </font> <li> <font face=Tahoma color=#000000>Working with Team Foundation Server: Architectural overview, services, extensibility </font> <li> <font face=Tahoma color=#000000>Team Projects &amp; Reporting: Project planning, methodology, reports </font> <li> <font face=Tahoma color=#000000>Process Template Customization: Process guidance, work item types, workflow </font> <li> <font face=Tahoma color=#000000>Source Code Control: Overview, migration, administration </font> <li> <font face=Tahoma color=#000000>Building Code (MSBuild): Overview, customization </font> <li> <font face=Tahoma color=#000000>Architect Tools: Application designer, class designer, logical datacenter designer, SDM SDK </font> <li> <font face=Tahoma color=#000000>Developer Tools: Profiling, code coverage, code analysis </font> <li> <font face=Tahoma color=#000000>Visual Studio 2005 Team Edition for Database Professionals </font> <li> <font face=Tahoma color=#000000>Testing Tools: Test management, test types, unit testing </font> <li> <font face=Tahoma color=#000000>Integration Scenarios: Commonly encountered integration scenarios </font> </li> </ul> <p> <font face=Tahoma color=#000000>This training is free of charge to all our VISUG members.&nbsp; You can register at </font><a href="#topofpage"><font face=Verdana>http://www.visug.be/CommentsView.aspx?Id=83ab000e-8475-4e46-b642-ac9855b891f2</font></a><font face=Tahoma color=#000000>.&nbsp; Be aware that there is a maximum of 40 attendees for this event so register as soon as possible.</font> </p> </blockquote><img width="0" height="0" src="/aggbug_id_a0d0b8e7_21de_481a_803e_94d34b8eb292.ashx"> http://steven.wilssens.net/CommentView.aspx?guid=a0d0b8e7-21de-481a-803e-94d34b8eb292 Team System
http://steven.wilssens.net/Trackback.aspx?guid=0e0473c1-f008-47d8-a2e6-a8f2455be110 http://steven.wilssens.net/pingback.aspx http://steven.wilssens.net/PermaLink.aspx?guid=0e0473c1-f008-47d8-a2e6-a8f2455be110 http://steven.wilssens.net/CommentView.aspx?guid=0e0473c1-f008-47d8-a2e6-a8f2455be110 http://steven.wilssens.net/SyndicationService.asmx/GetEntryCommentsRss?guid=0e0473c1-f008-47d8-a2e6-a8f2455be110 0

On of the extensibility features of Team Foundation Server is the ability to subscribe to Team System Events.  To my knowledge you can manage these subscriptions with the BisSubscribe.exe command-line utility, the client API’s or the EventService web service.   You use these tools to retrieve event subscription information if you provide the information on who created the event subscription or the subscription ID. 

Unfortunately they do not allow you to get a list of all the event subscriptions that are made on a particular team foundation server.  This can come in handy when you need an overview of and maintain the list of subscriptions on your server.  Since there is no standard way to accomplish this, I arranged a get together with my good friends Mr. Reflection, Mr. Private Method, Mrs. Internal Method and Mrs. Private Field and we came up with the underlying code sample which returns the event subscriptions for your Team Foundation Server:

/// <summary>
/// Gets all <see cref="Subscription"/> instances for a team foundation server
/// </summary>
private Subscription[] Subscriptions()
{
// 1. Get an instance of the types on which we will perform reflection
// The SubscriptionOnServer contains the logic for retrieving event subscriptions
Type subscriptionOnServerType =typeof(SubscriptionOnServer);
// The SubscriptionOnServer contains the logic for executing stored procedures
Type dbType = subscriptionOnServerType.Assembly.GetType("Microsoft.TeamFoundation.Server.DB");

// 2. Get an instance of the subscriptionOnServer class through its factory method
MethodInfo serivceMethod = dbType.GetMethod("Service", BindingFlags.Static | BindingFlags.Public);
object service = serivceMethod.Invoke(dbType, null);

// 3. Initialize the connectionstring property of the DB class
MethodInfo initMethod = dbType.GetMethod("Init", BindingFlags.Instance | BindingFlags.NonPublic);
initMethod.Invoke(service, newobject[] { ConfigurationManager.AppSettings["ConnectionString"] });

// 4. Retrieve all the subscriptions on the server
MethodInfo AllBareSubscriptionsMethod = subscriptionOnServerType.GetMethod("AllBareSubscriptions", BindingFlags.Static | BindingFlags.NonPublic);
ArrayList allSubscriptionsOnServer = (ArrayList)AllBareSubscriptionsMethod.Invoke(subscriptionOnServerType, newobject[] { });

// 5. Get the FieldInfo information for the internal subscription field on the SubscriptionOnServer type
FieldInfo subscriptionField = subscriptionOnServerType.GetField("subscription", BindingFlags.NonPublic | BindingFlags.Instance);

// 6. Get the Subscription representation of the SubscriptionOnServer instances that were retrieved
Subscription[] allSubscriptions =new Subscription[allSubscriptionsOnServer.Count];
for (int idx = 0; idx < allSubscriptionsOnServer.Count; idx++)
{
SubscriptionOnServer currentSubscriptionOnServer = (SubscriptionOnServer)allSubscriptionsOnServer[idx];
Subscription currentSubscription = (Subscription)subscriptionField.GetValue(currentSubscriptionOnServer);

allSubscriptions[idx] = currentSubscription;
}
return allSubscriptions;
}

You also need an application configuration file that looks this:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

    <appSettings>
        <add key="ConnectionString" value="Application Name=TeamFoundation;Persist Security Info=False;Initial Catalog=TfsIntegration;Data Source=QUAOAR;Integrated Security=SSPI"/>
    </appSettings>

</configuration>


  How to retrieve all event subscription made in Team Foundation Server http://steven.wilssens.net/PermaLink.aspx?guid=0e0473c1-f008-47d8-a2e6-a8f2455be110 http://steven.wilssens.net/HowToRetrieveAllEventSubscriptionMadeInTeamFoundationServer.aspx Wed, 09 Aug 2006 11:29:59 GMT <p> <font face=Tahoma color=#000000>On of the extensibility features of Team Foundation Server is the ability to subscribe to Team System Events.&nbsp; To my knowledge you can manage these subscriptions with the BisSubscribe.exe command-line utility, the client API’s or the EventService web service.&nbsp;&nbsp; You use these tools to retrieve event subscription information if you provide the information on who created the event subscription or the subscription ID.&nbsp; </font> </p> <p> <font face=Tahoma color=#000000>Unfortunately they do not allow you to get a list of all the event subscriptions that are made on a particular team foundation server.&nbsp; This can come in handy when you&nbsp;need an overview of and maintain the list of subscriptions on your server.&nbsp; Since there is no standard way&nbsp;to accomplish this, I arranged a get together with my good friends Mr. Reflection, Mr. Private Method, Mrs. Internal Method and Mrs. Private Field and we came up with the underlying code sample which returns the event subscriptions for your Team Foundation Server:</font> </p> <font color=#000000> <p> <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// &lt;summary&gt;</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// Gets all &lt;see cref="Subscription"/&gt; instances for a team foundation server</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// &lt;/summary&gt;</span> <br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">private</span> Subscription[] Subscriptions()<br> {<br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">// 1. Get an instance of the types on which we will perform reflection</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">// The SubscriptionOnServer contains the logic for retrieving event subscriptions</span> <br> Type subscriptionOnServerType <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">typeof</span>(SubscriptionOnServer);<br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">// The SubscriptionOnServer contains the logic for executing stored procedures</span> <br> Type dbType <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> subscriptionOnServerType.Assembly.GetType(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Microsoft.TeamFoundation.Server.DB"</span>);<br> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">// 2. Get an instance of the subscriptionOnServer class through its factory method</span> <br> MethodInfo serivceMethod <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> dbType.GetMethod(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Service"</span>, BindingFlags.Static <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">|</span> BindingFlags.Public);<br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">object</span> service <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> serivceMethod.Invoke(dbType, <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">null</span>);<br> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">// 3. Initialize the connectionstring property of the DB class</span> <br> MethodInfo initMethod <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> dbType.GetMethod(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Init"</span>, BindingFlags.Instance <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">|</span> BindingFlags.NonPublic);<br> initMethod.Invoke(service, <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">object</span>[] { ConfigurationManager.AppSettings[<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"ConnectionString"</span>] });<br> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">// 4. Retrieve all the subscriptions on the server</span> <br> MethodInfo AllBareSubscriptionsMethod <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> subscriptionOnServerType.GetMethod(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"AllBareSubscriptions"</span>, BindingFlags.Static <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">|</span> BindingFlags.NonPublic);<br> ArrayList allSubscriptionsOnServer <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> (ArrayList)AllBareSubscriptionsMethod.Invoke(subscriptionOnServerType, <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">object</span>[] { });<br> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">// 5. Get the FieldInfo information for the internal subscription field on the SubscriptionOnServer type</span> <br> FieldInfo subscriptionField <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> subscriptionOnServerType.GetField(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"subscription"</span>, BindingFlags.NonPublic <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">|</span> BindingFlags.Instance);<br> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">// 6. Get the Subscription representation of the SubscriptionOnServer instances that were retrieved</span> <br> Subscription[] allSubscriptions <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> Subscription[allSubscriptionsOnServer.Count];<br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">for</span> (<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">int</span> idx <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> 0; idx &lt; allSubscriptionsOnServer.Count; idx++)<br> {<br> SubscriptionOnServer currentSubscriptionOnServer <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> (SubscriptionOnServer)allSubscriptionsOnServer[idx];<br> Subscription currentSubscription <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> (Subscription)subscriptionField.GetValue(currentSubscriptionOnServer);<br> <br> allSubscriptions[idx] <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> currentSubscription;<br> }<br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">return</span> allSubscriptions; <br> }</span> </p> </font> <p> <font face=Tahoma color=#000000>You also need an application configuration file that looks this:</font> </p> <font color=#000000> <p> <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">&lt;?xml version=<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"1.0"</span> encoding=<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"utf-8"</span> ?&gt;<br> &lt;configuration&gt;<br> <br> &nbsp;&nbsp;&nbsp;&nbsp;&lt;appSettings&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;add key=<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"ConnectionString"</span> value=<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Application Name=TeamFoundation;Persist Security Info=False;Initial Catalog=TfsIntegration;Data Source=QUAOAR;Integrated Security=SSPI"</span>/&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&lt;/appSettings&gt;<br> <br> &lt;/configuration&gt;<br> </span> </p> <p> <br> </font>&nbsp;> <img width="0" height="0" src="/aggbug_id_0e0473c1_f008_47d8_a2e6_a8f2455be110.ashx"> http://steven.wilssens.net/CommentView.aspx?guid=0e0473c1-f008-47d8-a2e6-a8f2455be110 SCM
http://steven.wilssens.net/Trackback.aspx?guid=52605a52-0979-493e-84ba-287b45f13d1b http://steven.wilssens.net/pingback.aspx http://steven.wilssens.net/PermaLink.aspx?guid=52605a52-0979-493e-84ba-287b45f13d1b http://steven.wilssens.net/CommentView.aspx?guid=52605a52-0979-493e-84ba-287b45f13d1b http://steven.wilssens.net/SyndicationService.asmx/GetEntryCommentsRss?guid=52605a52-0979-493e-84ba-287b45f13d1b 2

Visual Studio 2005 Team System allows you to add the work item association check-in policy, to your Team Project. It requires you and other team members to associate a work item with each check-in, which is great. 

 

However, it does allow you to associate work items from a team project that is different from the one your changes belong to.  If you have 2 team projects A and B, you are allowed to associate a work item from team project A with changes that were made in team project B.

I’m looking for a valid reason why this should be allowed, so if you have an idea as to why, do not hesitate to help me out here…

Despite the fact that there could be a valid reason to do this, I created a check-in policy that ensures you that you are only allowed to associate a work item for the team project to which the changes belong.  This means you can only associate work items for team project A with changes from team project A.

Update: Removed duplicate PolicyFailure entries.

using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Windows.Forms;

using Microsoft.TeamFoundation.VersionControl.Client;

namespace CheckForCommentsPolicy
{
/// <summary>
/// This policy will check if there is a relationship between the team project to which the pending changes belong to and the team project to which the work items associated with a check-in belong.
/// </summary>
[Serializable]
publicclass ValidateWorkItemAssociation : PolicyBase
{
/// <summary>
/// Creates a default instance of the <see cref="ValidateWorkItemAssociation"/> class.
/// </summary>
public ValidateWorkItemAssociation()
{
InstallationInstructions =@"Create a new string value under [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\TeamFoundation\SourceControl\Checkin Policies]\nKey: ValidateWorkItemAssociationPolicy\nValue: full name of the ValidateWorkItemAssociation.dll file.";
}

/// <summary>
/// This string is a description of the type of our policy. It will be displayed to the
/// user when they select our policy type in the list of policies installed on the system
/// as mentioned above.
/// </summary>
publicoverridestring TypeDescription
{
get { return"Checks the relation between the pending changes and the related work items"; }
}

/// <summary>
/// This is a string that is stored with the policy definition on the source
/// control server. If a user does not have our policy plugin installed, this string
/// will be displayed. We can use this as an opportunity to explain to the user
/// how they might go about installing our policy plugin.
/// </summary>
publicoverridestring InstallationInstructions
{
get
{
returnbase.InstallationInstructions;
}
set
{
base.InstallationInstructions = value;
}
}


/// <summary>
/// This string is the description of the policy. It will be displayed to the user in a list
/// of all installed policy types when they are creating a new policy.
/// </summary>
publicoverridestring Description
{
get { return"This policy will check if there is a relationship between the team project for the pending changes and the team project of the associated work items."; }
}

/// <summary>
/// This string is the type of our policy. It will be displayed to the user in a list
/// of all installed policy types when they are creating a new policy.
/// </summary>
publicoverridestring Type
{
get { return"Check the relation between the pending changes and the related work items."; }
}

/// <summary>
/// This method is invoked by the policy framework when the user creates a new checkin
/// policy or edits an existing checkin policy. We can use this as an opportunity to
/// display UI specific to this policy type allowing the user to change the parameters
/// of the policy.
/// </summary>
publicoverridebool Edit(IPolicyEditArgs policyEditArgs)
{
// no configuration to save
returntrue;
}

/// <summary>
/// This method performs the actual evaluation. It is called by the policy framework at various points in time
/// when policy should be evaluated. In this example, we invoke this method ourselves when various asyc
/// events occur that may have invalidated the current list of failures.
/// </summary>
publicoverride PolicyFailure[] Evaluate()
{
// Make sure we are notified when the user changes his selection of work items
this.PendingCheckin.WorkItems.CheckedWorkItemsChanged -= new EventHandler(CheckedWorkItemsChanged);
this.PendingCheckin.WorkItems.CheckedWorkItemsChanged += new EventHandler(CheckedWorkItemsChanged);

List<PolicyFailure> failures =new List<PolicyFailure>();

foreach (WorkItemCheckinInfo info inthis.PendingCheckin.WorkItems.CheckedWorkItems)
{
if (PendingCheckin.PendingChanges.AffectedTeamProjectPaths.Length > 0)
{
// Get the affected team project path for the first check in
string affectedTeamProjectPath = PendingCheckin.PendingChanges.AffectedTeamProjectPaths[0];
Regex matchTeamProject =new Regex("[^$/][^/]*");
// Retrieve the team project name for the pending change
string affectedTeamProjectName = matchTeamProject.Match(affectedTeamProjectPath).Value;
if (affectedTeamProjectName != info.WorkItem.Project.Name)
{
failures.Add(
new PolicyFailure(
string.Format("Work item with ID '{0}', is not a work item for team project '{1}'.",
info.WorkItem.Id, matchTeamProject.Match(affectedTeamProjectName).Value)
, this)
);
}
}
}
return failures.ToArray();
}

/// <summary>
/// This method is called if the user double-clicks on a policy failure in the UI.
/// We can handle this as we please, potentially prompting the user to perform
/// some activity that would eliminate the policy failure.
/// </summary>
publicoverridevoid Activate(PolicyFailure failure)
{
MessageBox.Show("Please associate a work item that belongs to the same team project as your pending changes.");
}

/// <summary>
/// This method is called if the user presses F1 when a policy failure is active in the UI.
/// We can handle this as we please, displaying help in whatever format is appropriate.
/// For this example, we'll just pop up a dialog.
/// </summary>
publicoverridevoid DisplayHelp(PolicyFailure failure)
{
MessageBox.Show("This policy helps you make sure that you associated work items to a check-in that belong to the same team project as the pending changes.", "Prompt Policy Help");
}

/// <summary>
/// Called when the user changes the work item selection during a check-in
/// </summary>
privatevoid CheckedWorkItemsChanged(object sender, EventArgs e)
{
this.OnPolicyStateChanged(Evaluate());
}
}
}


Work Item Association during check-in http://steven.wilssens.net/PermaLink.aspx?guid=52605a52-0979-493e-84ba-287b45f13d1b http://steven.wilssens.net/WorkItemAssociationDuringCheckin.aspx Tue, 04 Jul 2006 09:31:25 GMT <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"> <font face=Tahoma><font color=#000000>Visual Studio 2005 Team System allows you to add the <i style="mso-bidi-font-style: normal">work item association</i> check-in policy, to your Team Project. It requires you and other team members to associate a work item with each check-in, which is great.<span style="mso-spacerun: yes">&nbsp; </span></font></font> </p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"> <font face=Tahoma color=#000000></font>&nbsp; </p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"> <font face=Tahoma color=#000000>However, it does allow you to associate work items from a team project that is different from the one your changes belong to.<span style="mso-spacerun: yes">&nbsp; </span>If you have 2 team projects <em>A</em> and <em>B</em>, you are allowed to associate a work item from team project <em>A</em> with changes that were made in team project <em>B</em>.</font> </p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"> <font face=Tahoma color=#000000>I’m looking for a valid reason why this should be allowed, so if you have an idea as to why, do not hesitate to help me out here…</font> </p> <p> <font face=Tahoma color=#000000>Despite the fact that there could be a valid reason to do this, I created a check-in policy that&nbsp;ensures you that you are only allowed to associate a work item for the team project to which the changes belong.<span style="mso-spacerun: yes">&nbsp; </span>This means you can only associate work items for team project <em>A</em> with changes from team project <em>A</em>.</font> </p> <p> <font face=Tahoma color=#000000><font color=#ff0000>Update: Removed duplicate PolicyFailure&nbsp;entries.</font> </font> </p> <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"> <p> <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">using</span> System;<br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">using</span> System.Collections.Generic;<br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">using</span> System.Text.RegularExpressions;<br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">using</span> System.Windows.Forms;<br> <br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">using</span> Microsoft.TeamFoundation.VersionControl.Client;<br> <br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">namespace</span> CheckForCommentsPolicy<br> {<br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// &lt;summary&gt;</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// This policy will check if there is a relationship between the team project to which the pending changes belong to and the team project to which the work items associated with a check-in belong.</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// &lt;/summary&gt;</span> <br> [Serializable]<br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">class</span> ValidateWorkItemAssociation : PolicyBase<br> {<br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// &lt;summary&gt;</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// Creates a default instance of the &lt;see cref="ValidateWorkItemAssociation"/&gt; class.</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// &lt;/summary&gt;</span> <br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span> ValidateWorkItemAssociation()<br> {<br> InstallationInstructions <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> <span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">@"Create a new string value under [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\TeamFoundation\SourceControl\Checkin Policies]\nKey: ValidateWorkItemAssociationPolicy\nValue: full name of the ValidateWorkItemAssociation.dll file."</span>;<br> }<br> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// &lt;summary&gt;</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// This string is a description of the type of our policy. It will be displayed to the</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// user when they select our policy type in the list of policies installed on the system</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// as mentioned above.</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// &lt;/summary&gt;</span> <br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">override</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> TypeDescription<br> {<br> get { <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">return</span> <span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Checks the relation between the pending changes and the related work items"</span>; }<br> }<br> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// &lt;summary&gt;</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// This is a string that is stored with the policy definition on the source</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// control server. If a user does not have our policy plugin installed, this string</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// will be displayed. We can use this as an opportunity to explain to the user</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// how they might go about installing our policy plugin.</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// &lt;/summary&gt;</span> <br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">override</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> InstallationInstructions<br> {<br> get<br> {<br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">return</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">base</span>.InstallationInstructions;<br> }<br> set<br> {<br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">base</span>.InstallationInstructions <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> value;<br> }<br> }<br> <br> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// &lt;summary&gt;</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// This string is the description of the policy. It will be displayed to the user in a list</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// of all installed policy types when they are creating a new policy.</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// &lt;/summary&gt;</span> <br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">override</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> Description<br> {<br> get { <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">return</span> <span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"This policy will check if there is a relationship between the team project for the pending changes and the team project of the associated work items."</span>; }<br> }<br> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// &lt;summary&gt;</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// This string is the type of our policy. It will be displayed to the user in a list</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// of all installed policy types when they are creating a new policy.</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// &lt;/summary&gt;</span> <br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">override</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> Type<br> {<br> get { <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">return</span> <span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Check the relation between the pending changes and the related work items."</span>; }<br> }<br> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// &lt;summary&gt;</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// This method is invoked by the policy framework when the user creates a new checkin</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// policy or edits an existing checkin policy. We can use this as an opportunity to</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// display UI specific to this policy type allowing the user to change the parameters</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// of the policy.</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// &lt;/summary&gt;</span> <br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">override</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">bool</span> Edit(IPolicyEditArgs policyEditArgs)<br> {<br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">// no configuration to save</span> <br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">return</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">true</span>;<br> }<br> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// &lt;summary&gt;</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// This method performs the actual evaluation. It is called by the policy framework at various points in time</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// when policy should be evaluated. In this example, we invoke this method ourselves when various asyc</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// events occur that may have invalidated the current list of failures.</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// &lt;/summary&gt;</span> <br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">override</span> PolicyFailure[] Evaluate()<br> {<br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">// Make sure we are notified when the user changes his selection of work items</span> <br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">this</span>.PendingCheckin.WorkItems.CheckedWorkItemsChanged -= <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> EventHandler(CheckedWorkItemsChanged);<br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">this</span>.PendingCheckin.WorkItems.CheckedWorkItemsChanged += <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> EventHandler(CheckedWorkItemsChanged);<br> <br> List&lt;PolicyFailure&gt; failures <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> List&lt;PolicyFailure&gt;();<br> <br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">foreach</span> (WorkItemCheckinInfo info <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">in</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">this</span>.PendingCheckin.WorkItems.CheckedWorkItems)<br> {<br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">if</span> (PendingCheckin.PendingChanges.AffectedTeamProjectPaths.Length &gt; 0)<br> {<br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">// Get the affected team project path for the first check in</span> <br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> affectedTeamProjectPath <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> PendingCheckin.PendingChanges.AffectedTeamProjectPaths[0];<br> Regex matchTeamProject <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> Regex(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"[^$/][^/]*"</span>);<br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">// Retrieve the team project name for the pending change</span> <br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> affectedTeamProjectName <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> matchTeamProject.Match(affectedTeamProjectPath).Value;<br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">if</span> (affectedTeamProjectName !<span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> info.WorkItem.Project.Name)<br> {<br> failures.Add(<br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> PolicyFailure(<br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span>.Format(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Work item with ID '{0}', is not a work item for team project '{1}'."</span>,<br> info.WorkItem.Id, matchTeamProject.Match(affectedTeamProjectName).Value)<br> , <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">this</span>)<br> );<br> }<br> }<br> }<br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">return</span> failures.ToArray();<br> }<br> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// &lt;summary&gt;</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// This method is called if the user double-clicks on a policy failure in the UI.</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// We can handle this as we please, potentially prompting the user to perform</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// some activity that would eliminate the policy failure.</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// &lt;/summary&gt;</span> <br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">override</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">void</span> Activate(PolicyFailure failure)<br> {<br> MessageBox.Show(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Please associate a work item that belongs to the same team project as your pending changes."</span>);<br> }<br> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// &lt;summary&gt;</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// This method is called if the user presses F1 when a policy failure is active in the UI.</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// We can handle this as we please, displaying help in whatever format is appropriate.</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// For this example, we'll just pop up a dialog.</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// &lt;/summary&gt;</span> <br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">override</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">void</span> DisplayHelp(PolicyFailure failure)<br> {<br> MessageBox.Show(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"This policy helps you make sure that you associated work items to a check-in that belong to the same team project as the pending changes."</span>, <span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Prompt Policy Help"</span>);<br> }<br> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// &lt;summary&gt;</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// Called when the user changes the work item selection during a check-in</span> <br> <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/// &lt;/summary&gt;</span> <br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">private</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">void</span> CheckedWorkItemsChanged(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">object</span> sender, EventArgs e)<br> {<br> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">this</span>.OnPolicyStateChanged(Evaluate());<br> }<br> }<br> }<br> </span> </p> <p> <br> </p> </span><img width="0" height="0" src="/aggbug_id_52605a52_0979_493e_84ba_287b45f13d1b.ashx"> http://steven.wilssens.net/CommentView.aspx?guid=52605a52-0979-493e-84ba-287b45f13d1b SCM
http://steven.wilssens.net/Trackback.aspx?guid=2c5c5e0d-44d9-45a9-9ed5-dab4f81f54e4 http://steven.wilssens.net/pingback.aspx http://steven.wilssens.net/PermaLink.aspx?guid=2c5c5e0d-44d9-45a9-9ed5-dab4f81f54e4 http://steven.wilssens.net/CommentView.aspx?guid=2c5c5e0d-44d9-45a9-9ed5-dab4f81f54e4 http://steven.wilssens.net/SyndicationService.asmx/GetEntryCommentsRss?guid=2c5c5e0d-44d9-45a9-9ed5-dab4f81f54e4 0 Tomorrow (06/29/2006), I’m presenting the first day of the VISUG event on Visual Studio Team System . Psst I’m getting used to the US date-time notation ;-) We will have a very diverse audience ranging from developers to sales people, VSTS rookies to VSTS experts… I’m really looking forward to the challenge of making all of our members leave with that happy VSTS feeling… Visual Studio Team System 2005 – Event http://steven.wilssens.net/PermaLink.aspx?guid=2c5c5e0d-44d9-45a9-9ed5-dab4f81f54e4 http://steven.wilssens.net/VisualStudioTeamSystem2005Event.aspx Thu, 29 Jun 2006 19:16:34 GMT <font face=Tahoma color=#000000>Tomorrow (06/29/2006), I’m presenting the first day of the </font><a href="#topofpage"><font face=Tahoma>VISUG event on Visual Studio Team System</font></a><font face=Tahoma color=#000000>. <em>Psst I’m getting used to the US date-time notation ;-)</em> We will&nbsp;have a very diverse audience ranging from developers to sales people, VSTS rookies to VSTS experts… I’m really looking forward to the challenge of making all of our members leave with that happy VSTS feeling…</font><img width="0" height="0" src="/aggbug_id_2c5c5e0d_44d9_45a9_9ed5_dab4f81f54e4.ashx"> http://steven.wilssens.net/CommentView.aspx?guid=2c5c5e0d-44d9-45a9-9ed5-dab4f81f54e4 Team System http://steven.wilssens.net/Trackback.aspx?guid=1d6e4d14-e638-4c43-8937-4bcb25defd01 http://steven.wilssens.net/pingback.aspx http://steven.wilssens.net/PermaLink.aspx?guid=1d6e4d14-e638-4c43-8937-4bcb25defd01 http://steven.wilssens.net/CommentView.aspx?guid=1d6e4d14-e638-4c43-8937-4bcb25defd01 http://steven.wilssens.net/SyndicationService.asmx/GetEntryCommentsRss?guid=1d6e4d14-e638-4c43-8937-4bcb25defd01 0 Reminder: Visual Studio Team System Workshop by VISUG http://steven.wilssens.net/PermaLink.aspx?guid=1d6e4d14-e638-4c43-8937-4bcb25defd01 http://steven.wilssens.net/ReminderVisualStudioTeamSystemWorkshopByVISUG.aspx Fri, 23 Jun 2006 08:47:09 GMT <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"> <span lang=EN-US style="mso-ansi-language: EN-US"><font face=Tahoma color=#000000><strong>Reminder:</strong></font></span> </p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"> <span lang=EN-US style="mso-ansi-language: EN-US"><font face=Tahoma color=#000000></font></span>&nbsp; </p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"> <span lang=EN-US style="mso-ansi-language: EN-US"><font face=Tahoma color=#000000>The </font><a href="#topofpage"><font face=Tahoma color=#0000ff>Belgian Visual Studio User Group</font></a><font face=Tahoma color=#000000> organizes a 1 ½ day </font></span><a href="#topofpage" target=_blank><span lang=EN-US style="mso-ansi-language: EN-US"><font face=Tahoma color=#0000ff>seminar around Visual Studio Team System</font></span></a><span lang=EN-US style="mso-ansi-language: EN-US"><font face=Tahoma color=#000000> on 30 June and 1 July.&nbsp;&nbsp;There are still some seats available, so if you are interested in learning about Team System in a User Group kind of way (real high risk live demo's, with live coding and hopefully a happy ending :-) )</font></span> </p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"> <span lang=EN-US style="mso-ansi-language: EN-US"><font face=Tahoma color=#000000></font></span>&nbsp; </p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"> <b><span lang=EN-US style="mso-ansi-language: EN-US"><font color=#000000><font face=Tahoma><?xml:namespace prefix = u2 />Description:<u2:p></u2:p> </font></font></span></b><span lang=EN-US style="mso-ansi-language: EN-US"> <br> <font color=#000000><font face=Tahoma><?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />This day and a half community event provides VISUG members with deep dive information on Visual Studio Team System 2005. During this event we will demonstrate the capabilities Visual Studio Team System <st1:metricconverter u1:st="on" ProductID="2005 in"> <st1:metricconverter ProductID="2005 in" w:st="on">2005 in</st1:metricconverter> </st1:metricconverter> a way only user group can: not in theory but by live examples.<u2:p></u2:p><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> <o:p></o:p> </font></font></span> </p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"> <b><span lang=EN-US style="mso-ansi-language: EN-US"> <o:p> <font face=Tahoma color=#000000>&nbsp;</font> </o:p> </span></b> </p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"> <font color=#000000><font face=Tahoma><b><span lang=EN-US style="mso-ansi-language: EN-US">Event Outline:<u2:p></u2:p> </span></b><span lang=EN-US style="mso-ansi-language: EN-US"> <o:p></o:p> </span></font></font> </p> <p class=MsoListParagraphCxSpFirst style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; mso-add-space: auto"> <font color=#000000><font face=Tahoma><span lang=EN-US style="mso-ansi-language: EN-US; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri"><span style="mso-list: Ignore">•<span style="FONT: 7pt 'Times New Roman'"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span></span><span lang=EN-US style="mso-ansi-language: EN-US">Event Overview : Overview, Business value of VSTS, core scenarios, licensing <u2:p></u2:p> <o:p></o:p> </span></font></font> </p> <p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; mso-add-space: auto"> <font color=#000000><font face=Tahoma><span lang=EN-US style="mso-ansi-language: EN-US; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri"><span style="mso-list: Ignore">•<span style="FONT: 7pt 'Times New Roman'"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span></span><span lang=EN-US style="mso-ansi-language: EN-US">Planning for VSTS: Hardware and software requirements, selecting projects or solutions <u2:p></u2:p> <o:p></o:p> </span></font></font> </p> <p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; mso-add-space: auto"> <font color=#000000><font face=Tahoma><span lang=EN-US style="mso-ansi-language: EN-US; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri"><span style="mso-list: Ignore">•<span style="FONT: 7pt 'Times New Roman'"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span></span><span lang=EN-US style="mso-ansi-language: EN-US">Deploying &amp; Maintaining Team Foundation Server: Installation, Administration, back up and restore <u2:p></u2:p> <o:p></o:p> </span></font></font> </p> <p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; mso-add-space: auto"> <font color=#000000><font face=Tahoma><span lang=EN-US style="mso-ansi-language: EN-US; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri"><span style="mso-list: Ignore">•<span style="FONT: 7pt 'Times New Roman'"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span></span><span lang=EN-US style="mso-ansi-language: EN-US">Working with Team Foundation Server: Architectural overview, services, extensibility <u2:p></u2:p> <o:p></o:p> </span></font></font> </p> <p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; mso-add-space: auto"> <font color=#000000><font face=Tahoma><span lang=EN-US style="mso-ansi-language: EN-US; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri"><span style="mso-list: Ignore">•<span style="FONT: 7pt 'Times New Roman'"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span></span><span lang=EN-US style="mso-ansi-language: EN-US">Team Projects &amp; Reporting: Project planning, methodology, reports <u2:p></u2:p> <o:p></o:p> </span></font></font> </p> <p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; mso-add-space: auto"> <font color=#000000><font face=Tahoma><span lang=EN-US style="mso-ansi-language: EN-US; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri"><span style="mso-list: Ignore">•<span style="FONT: 7pt 'Times New Roman'"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span></span><span lang=EN-US style="mso-ansi-language: EN-US">Process Template Customization: Process guidance, work item types, workflow <u2:p></u2:p> <o:p></o:p> </span></font></font> </p> <p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; mso-add-space: auto"> <font color=#000000><font face=Tahoma><span lang=EN-US style="mso-ansi-language: EN-US; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri"><span style="mso-list: Ignore">•<span style="FONT: 7pt 'Times New Roman'"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span></span><span lang=EN-US style="mso-ansi-language: EN-US">Source Code Control: Overview, migration, administration <u2:p></u2:p> <o:p></o:p> </span></font></font> </p> <p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; mso-add-space: auto"> <font color=#000000><font face=Tahoma><span lang=EN-US style="mso-ansi-language: EN-US; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri"><span style="mso-list: Ignore">•<span style="FONT: 7pt 'Times New Roman'"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span></span><span lang=EN-US style="mso-ansi-language: EN-US">Building Code (MSBuild): Overview, customization <u2:p></u2:p> <o:p></o:p> </span></font></font> </p> <p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; mso-add-space: auto"> <font color=#000000><font face=Tahoma><span lang=EN-US style="mso-ansi-language: EN-US; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri"><span style="mso-list: Ignore">•<span style="FONT: 7pt 'Times New Roman'"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span></span><span lang=EN-US style="mso-ansi-language: EN-US">Architect Tools: Application designer, class designer, logical datacenter designer, SDM SDK <u2:p></u2:p> <o:p></o:p> </span></font></font> </p> <p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; mso-add-space: auto"> <font color=#000000><font face=Tahoma><span lang=EN-US style="mso-ansi-language: EN-US; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri"><span style="mso-list: Ignore">•<span style="FONT: 7pt 'Times New Roman'"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span></span><span lang=EN-US style="mso-ansi-language: EN-US">Developer Tools: Profiling, code coverage, code analysis <u2:p></u2:p> <o:p></o:p> </span></font></font> </p> <p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; mso-add-space: auto"> <font color=#000000><font face=Tahoma><span lang=EN-US style="mso-ansi-language: EN-US; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri"><span style="mso-list: Ignore">•<span style="FONT: 7pt 'Times New Roman'"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span></span><span lang=EN-US style="mso-ansi-language: EN-US">Testing Tools: Test management, test types, unit testing <u2:p></u2:p> <o:p></o:p> </span></font></font> </p> <p class=MsoListParagraphCxSpLast style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; mso-add-space: auto"> <font color=#000000><font face=Tahoma><span lang=EN-US style="mso-ansi-language: EN-US; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri"><span style="mso-list: Ignore">•<span style="FONT: 7pt 'Times New Roman'"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span></span><span lang=EN-US style="mso-ansi-language: EN-US">Integration Scenarios: Commonly encountered integration scenarios <u2:p></u2:p> <o:p></o:p> </span></font></font> </p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"> <b><span lang=EN-US style="mso-ansi-language: EN-US"> <o:p> <font face=Tahoma color=#000000>&nbsp;</font> </o:p> </span></b> </p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"> <b><span lang=EN-US style="mso-ansi-language: EN-US"><font color=#000000><font face=Tahoma>When:<u2:p></u2:p> </font></font></span></b><span lang=EN-US style="mso-ansi-language: EN-US"> <br> <font color=#000000><font face=Tahoma>Friday 30 June 2006 from 13:00 until 17:00<br> Saturday 1 July 2006 from 9:00 until 16:00<u2:p></u2:p> &nbsp;<u2:p></u2:p> <o:p></o:p> </font></font></span> </p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"> <b><span lang=EN-US style="mso-ansi-language: EN-US"> <o:p> <font face=Tahoma color=#000000>&nbsp;</font> </o:p> </span></b> </p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"> <b><span lang=EN-US style="mso-ansi-language: EN-US"><font color=#000000><font face=Tahoma>Where:<u2:p></u2:p> </font></font></span></b><span lang=EN-US style="mso-ansi-language: EN-US"> <br> <a href="#topofpage"><font face=Tahoma color=#000000>Compuware Belgium</font></a> <o:p></o:p> </span> </p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"> <b><span lang=EN-US style="mso-ansi-language: EN-US"> <o:p> <font face=Tahoma color=#000000>&nbsp;</font> </o:p> </span></b> </p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"> <strong><span lang=EN-US style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ansi-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi"><font face=Tahoma color=#000000>How to register:</font></span></strong><span lang=EN-US style="mso-ansi-language: EN-US"> <br> <font face=Tahoma color=#000000>Send an email to </font><a href="mailto:Steven.Wilssens@Compuware.com"><font face=Tahoma color=#000000>Steven Wilssens</font></a><font color=#000000><font face=Tahoma>, which contains your name and the fact that you want to attend the event. Remember, there are 30 seats available for this event, so register as soon as possible.<o:p></o:p> </font></font></span> </p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"> <b><span lang=EN-US style="mso-ansi-language: EN-US"> <o:p> <font face=Tahoma color=#000000>&nbsp;</font> </o:p> </span></b> </p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"> <b><span lang=EN-US style="mso-ansi-language: EN-US"><font color=#000000><font face=Tahoma>Subscription Fee:<u2:p></u2:p> </font></font></span></b><span lang=EN-US style="mso-ansi-language: EN-US"> <br> <font face=Tahoma color=#000000>As with all Visual Studio User Group events, it is available to our Visual Studio User Group Members at no cost.</font></span> </p> <img width="0" height="0" src="/aggbug_id_1d6e4d14_e638_4c43_8937_4bcb25defd01.ashx"> http://steven.wilssens.net/CommentView.aspx?guid=1d6e4d14-e638-4c43-8937-4bcb25defd01 SCM http://steven.wilssens.net/Trackback.aspx?guid=1338fcdb-df57-4e07-9d89-217c8062165d http://steven.wilssens.net/pingback.aspx http://steven.wilssens.net/PermaLink.aspx?guid=1338fcdb-df57-4e07-9d89-217c8062165d http://steven.wilssens.net/CommentView.aspx?guid=1338fcdb-df57-4e07-9d89-217c8062165d http://steven.wilssens.net/SyndicationService.asmx/GetEntryCommentsRss?guid=1338fcdb-df57-4e07-9d89-217c8062165d 1

The Team Foundation Server MSSCCI Provider enables integrated use of Team Foundation Version Control with products that don't support Team Explorer integration. 
The previous version already supported Visual Basic 6 SP6, Visual Studio 2002, Visual Studio 2003, SQL Server Management Studio,...  
I'm pretty exited about the latest version which was released on 6/21/2006.  This release does not only include additional support for PowerBuilder, Enterprise Architect, but also an improved Open from SCC experience, Work items can now be modified in the checkinwindow, Get latest on checkout support,  Check-in lock is treated as exclusive, and the setup now works on works on x64. 

You can download the TFS MSSCCI provider here .

Team Foundation Server MSSCCI Provider http://steven.wilssens.net/PermaLink.aspx?guid=1338fcdb-df57-4e07-9d89-217c8062165d http://steven.wilssens.net/TeamFoundationServerMSSCCIProvider.aspx Fri, 23 Jun 2006 08:39:39 GMT <p> <font face=Tahoma color=#000000>The Team Foundation Server MSSCCI Provider enables integrated use of Team Foundation Version Control with products that don't support Team Explorer integration.&nbsp; <br> The previous version already supported Visual Basic 6 SP6, Visual Studio 2002, Visual Studio 2003, SQL Server Management Studio,...&nbsp;&nbsp;<br> I'm pretty exited about the latest version which was released on 6/21/2006.&nbsp; This&nbsp;release does not only include additional support for PowerBuilder, Enterprise Architect, but also an improved Open from SCC experience, Work items can now be modified in the checkinwindow, Get latest on checkout support,&nbsp; Check-in lock is treated as exclusive, and the setup now works on works on x64.&nbsp; </font> </p> <p> <font face=Tahoma><font color=#000000>You can download the TFS MSSCCI provider</font> </font><a href="#topofpage"><font face=Tahoma>here</font></a><font face=Tahoma><font color=#000000>.</font> <br> </font> </p> <img width="0" height="0" src="/aggbug_id_1338fcdb_df57_4e07_9d89_217c8062165d.ashx"> http://steven.wilssens.net/CommentView.aspx?guid=1338fcdb-df57-4e07-9d89-217c8062165d Team System
http://steven.wilssens.net/Trackback.aspx?guid=9d56162f-9a2e-4b60-bf80-d88c2694cbc9 http://steven.wilssens.net/pingback.aspx http://steven.wilssens.net/PermaLink.aspx?guid=9d56162f-9a2e-4b60-bf80-d88c2694cbc9 http://steven.wilssens.net/CommentView.aspx?guid=9d56162f-9a2e-4b60-bf80-d88c2694cbc9 http://steven.wilssens.net/SyndicationService.asmx/GetEntryCommentsRss?guid=9d56162f-9a2e-4b60-bf80-d88c2694cbc9 8 MVP Visual Developer - Team System http://steven.wilssens.net/PermaLink.aspx?guid=9d56162f-9a2e-4b60-bf80-d88c2694cbc9 http://steven.wilssens.net/MVPVisualDeveloperTeamSystem.aspx Fri, 07 Apr 2006 07:03:02 GMT <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"> <font color=#000000><font face=Tahoma>Yesterday, </font><a href="#topofpage"><font face=Tahoma>Tom Mertens </font></a><font face=Tahoma><?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />announced that Microsoft nominated 2 new MVP's for <st1:country-region> <st1:place>Belgium</st1:place> </st1:country-region> .<span style="mso-spacerun: yes">&nbsp; </span>If you read </font><a href="#topofpage"><font face=Tahoma>Tom's post</font></a><font face=Tahoma>, you will know that the first new MVP is </font><a href="#topofpage"><font face=Tahoma>Mieke Verburgh</font></a><font face=Tahoma>.<span style="mso-spacerun: yes">&nbsp; But who's the second?&nbsp; </span>On Tuesday I received the news that I'm the second <st1:country-region> <st1:place>Belgium</st1:place> </st1:country-region> that was awarded with the Microsoft Most valuable Professional (MVP) Title.<span style="mso-spacerun: yes">&nbsp; </span>I’m now an MVP in the Visual Developer - Team System domain.<span style="mso-spacerun: yes">&nbsp; </span>As you can imagine I am really thrilled to get rewarded this way. This is an extra boost for me to provide you with as much information I have on Team system and continue the <a href="#topofpage">Belgium Visual Studio User Group initiative</a>.<span style="mso-spacerun: yes">&nbsp; </span>A lot of people provided me with an amazing amount of support during the past months, but I would especially like to thank&nbsp;</font><a href="mailto:Annemie.Vandenberghe@compuware.com"><font face=Tahoma>Annemie Vandenberghe </font></a><font face=Tahoma>who is the Human Resource Manager at Compuware and one of the thriving forces of Compuware and the Belgium Visual Studio User Group.&nbsp; If you are interested in becoming a member of the Professional Services Department at Compuware, <a href="mailto:Annemie.Vandenberghe@compuware.com">just send her an email </a>and hopefully we’ll meet during one of the following interviews<span style="mso-spacerun: yes">&nbsp; </span></font></font> </p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> <o:p> <font face=Tahoma color=#000000>&nbsp;</font> </o:p> </p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"> <font color=#000000><font face=Tahoma>From the marketing trenches about the MVP program:<o:p></o:p> </font></font> </p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"> <o:p> <font face=Tahoma color=#000000>&nbsp;</font> </o:p> </p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"> <font face=Tahoma color=#000000><em>The Microsoft MVP Program is a worldwide award and recognition program that strives to identify amazing individuals in technical communities around the globe who share a passion for technology and the spirit of community. Microsoft MVPs are recognized for both their demonstrated practical expertise and willingness to share their experience with peers in Microsoft technical communities.</em></font> </p> <img width="0" height="0" src="/aggbug_id_9d56162f_9a2e_4b60_bf80_d88c2694cbc9.ashx"> http://steven.wilssens.net/CommentView.aspx?guid=9d56162f-9a2e-4b60-bf80-d88c2694cbc9 Team System http://steven.wilssens.net/Trackback.aspx?guid=3c2e75c9-3688-4dd2-ac76-914fda0f100e http://steven.wilssens.net/pingback.aspx http://steven.wilssens.net/PermaLink.aspx?guid=3c2e75c9-3688-4dd2-ac76-914fda0f100e http://steven.wilssens.net/CommentView.aspx?guid=3c2e75c9-3688-4dd2-ac76-914fda0f100e http://steven.wilssens.net/SyndicationService.asmx/GetEntryCommentsRss?guid=3c2e75c9-3688-4dd2-ac76-914fda0f100e 0 These are the presentations and the code demo's Jelle Druyts and I used during the Microsoft Developer & IT Pro Days 2006 in Belgium on 8th of March.
The Best Practices for Application Development (Jelle Druyts and Steven Wilssens):
Best Practices For Application Development.zip
Demo 01 - Enterprise Library.zip
Demo 02 - Enterprise Library and Command Pattern.zip
Demo 03 - Test Driven Development.zip
Best Practices for Advanced Source Control: Beyond CheckOut and CheckIn (Steven Wilssens):
Advanced Source Control - PART I.zip
Advanced Source Control - PART II.zip
Advanced Source Control - PART III.zip
Final version of Slides and Demo's Developer and IT Pro Days 2006 http://steven.wilssens.net/PermaLink.aspx?guid=3c2e75c9-3688-4dd2-ac76-914fda0f100e http://steven.wilssens.net/FinalVersionOfSlidesAndDemosDeveloperAndITProDays2006.aspx Wed, 15 Mar 2006 10:31:09 GMT <font color=#000000>These are the presentations and the code demo's</font> <a href="#topofpage"><font color=#0000ff size=2>Jelle Druyts</font></a> <font color=#000000>and </font><a href="#topofpage"><font color=#0000ff size=2>I</font></a> <font color=#000000>used during the </font><a href="#topofpage"><font color=#0000ff size=2>Microsoft Developer &amp; IT Pro Days 2006 in Belgium on 8th of March.</font></a> <br> <table style="WIDTH: 100%" cellspacing=0 cellpadding=0 border=0> <tbody> <tr> <td style="WIDTH: 30px" valign=top align=left> <span style="FONT-SIZE: 10pt"><font color=#000000>•</font></span></td> <td valign=top align=left> <a href="#topofpage"><font color=#0000ff size=2>The Best Practices for Application Development (Jelle Druyts and Steven Wilssens):</font></a> <br> <a href="/content/binary/Best20Practices20For20Application20Development.zip"><font color=#0000ff size=2>Best Practices For Application Development.zip</font></a> <br> <a href="/content/binary/Demo200120_20Enterprise20Library.zip"><font color=#0000ff size=2>Demo 01 - Enterprise Library.zip</font></a> <br> <a href="/content/binary/Demo200220_20Enterprise20Library20and20Command20Pattern.zip"><font color=#0000ff size=2>Demo 02 - Enterprise Library and Command Pattern.zip</font></a> <br> <a href="/content/binary/Demo200320_20Test20Driven20Development.zip"><font color=#0000ff size=2>Demo 03 - Test Driven Development.zip</font></a> <br> </td> </tr> <tr> <td style="WIDTH: 30px" valign=top align=left> <span style="FONT-SIZE: 10pt"><font color=#000000>•</font></span></td> <td valign=top align=left> <a href="#topofpage"><font color=#0000ff size=2>Best Practices for Advanced Source Control: Beyond CheckOut and CheckIn (Steven Wilssens):</font></a> <br> <a href="/content/binary/Advanced20Source20Control20_20PART20I.zip"><font color=#0000ff size=2>Advanced Source Control - PART I.zip</font></a> <br> <a href="/content/binary/Advanced20Source20Control20_20PART20II.zip"><font color=#0000ff size=2>Advanced Source Control - PART II.zip</font></a> <br> <a href="/content/binary/Advanced20Source20Control20_20PART20III.zip"><font color=#0000ff size=2>Advanced Source Control - PART III.zip</font></a> <br> </td> </tr> </tbody> </table> <img width="0" height="0" src="/aggbug_id_3c2e75c9_3688_4dd2_ac76_914fda0f100e.ashx"> http://steven.wilssens.net/CommentView.aspx?guid=3c2e75c9-3688-4dd2-ac76-914fda0f100e .NET 2.0
http://steven.wilssens.net/Trackback.aspx?guid=64e2cc82-5ab4-4565-b3cc-15bedb07e7ef http://steven.wilssens.net/pingback.aspx http://steven.wilssens.net/PermaLink.aspx?guid=64e2cc82-5ab4-4565-b3cc-15bedb07e7ef http://steven.wilssens.net/CommentView.aspx?guid=64e2cc82-5ab4-4565-b3cc-15bedb07e7ef http://steven.wilssens.net/SyndicationService.asmx/GetEntryCommentsRss?guid=64e2cc82-5ab4-4565-b3cc-15bedb07e7ef 1
One of the great features of Team System is the extensibility of its reporting infrastructure. It includes a data warehouse in which data from work item tracking, version control, builds, and testing tools are stored. The data warehouse includes both relational and analytical process (OLAP) databases. This provides you with enormous potential for creating you own reports. What I want to show you in the following example is how you can use the analytical process database and show it in a PivotTable report. PivotTable reports organize and summarize your data so that it doesn't just sit on a worksheet gathering dust. We will retrieve a list of ChangeSets, with the names of the modified files, the number of lines that were added, modified, and removed, for the available team projects:

Cryptic Error Messages:
• Step 6 If you get “Initialization of the data source failed", you need to reregister Microsoft OLE DB provider for Analysis Services 9.0. Depending on your installation location following command will help you out: regsvr32 "c:\program files\common files\system\ole db\msolap90.dll".
• Step 8 If you get “an error occurred in the transport layer”, you very likely did not enter a correct user name/password combination.


Steps:
• Step 1 Start Microsoft Excel.
• Step 2 From the menu select Data > PivotTable and PivotChart Report.
• Step 3 In the PivotTable and PivotChart wizard dialog select External Data Source and click the Next.

• Step 4 Notice that the text next to the Get Data button indicates that no data fields have been retrieved at the moment.

• Step 5 Click the Get Data button.
• Step 6 Click the OLAP Cubes tab, Select and click OK.

• Step 7 In Field 1 enter TeamSystem (or any name you want to give it). For field 2 select Microsoft OLE DB Provider for Analysis Services 9.0 and click Connect.

• Step 8 Make sure Analysis server is selected and enter the server name in the Server field. For User ID enter TFSREPORTS and enter the designated TFSREPORTS password in the Password field. Click Next.

• Step 9 Make sure TFSWarehouse is selected and click Finish.

• Step 10 You should see that TFSWarehouse is displayed after the Connect button. Make sure that the Team System cube is selected. Check the Save my user ID and password checkbox and click OK.

• Step 11 IN the Choose Data Source dialog click OK.
• Step 12 In the PivotTable dialog click Finish.
• Step 13 From the PivotTable Field List, double-click each of the following nodes in this order:
Team Project.Team Project
Changeset
Filename.File Path
Lines Added
Lines Modified
Lines Deleted.
It is possible that not all required fields are present in you current PivotTable Field List. The necessary steps, to add the missing fields, are described in the How to add a  Field to the Team System Cube post.

Close the PivotTable Field List window.
• Step 14 Enjoy your great new PivotTable!
Data Mining with Team System and Microsoft Office Excel 2003 http://steven.wilssens.net/PermaLink.aspx?guid=64e2cc82-5ab4-4565-b3cc-15bedb07e7ef http://steven.wilssens.net/DataMiningWithTeamSystemAndMicrosoftOfficeExcel2003.aspx Thu, 08 Dec 2005 18:18:37 GMT <div style="TEXT-ALIGN: left"> <table style="WIDTH: 100%" cellspacing=0 cellpadding=0 border=0> <tbody> <tr> <td style="COLOR: black; FONT-FAMILY: Tahoma"> One of the great features of Team System is the extensibility of its reporting infrastructure. It includes a data warehouse in which data from work item tracking, version control, builds, and testing tools are stored. The data warehouse includes both relational and analytical process (OLAP) databases. This provides you with enormous potential for creating you own reports. What I want to show you in the following example is how you can use the analytical process database and show it in a PivotTable report. PivotTable reports organize and summarize your data so that it doesn't just sit on a worksheet gathering dust. We will retrieve a list of ChangeSets, with the names of the modified files, the number of lines that were added, modified, and removed, for the available team projects:<br> </td> </tr> <tr> <td> <strong style="COLOR: black; FONT-FAMILY: Tahoma"> <br> Cryptic Error Messages:<br> </strong> <div style="TEXT-ALIGN: left"> <table style="WIDTH: 100%" cellspacing=0 cellpadding=0 border=0> <tbody> <tr> <td style="WIDTH: 83px; COLOR: black; FONT-FAMILY: Tahoma" valign=top> • Step 6</td> <td style="COLOR: black; FONT-FAMILY: Tahoma"> If you get “Initialization of the data source failed", you need to reregister Microsoft OLE DB provider for Analysis Services 9.0. Depending on your installation location following command will help you out: regsvr32 "c:\program files\common files\system\ole db\msolap90.dll".</td> </tr> <tr> <td style="WIDTH: 83px; COLOR: black; FONT-FAMILY: Tahoma" valign=top> • Step 8</td> <td style="COLOR: black; FONT-FAMILY: Tahoma"> If you get “an error occurred in the transport layer”, you very likely did not enter a correct user name/password combination. </td> </tr> </tbody> </table> </div> <br> </td> </tr> <tr> <td> <strong style="COLOR: black; FONT-FAMILY: Tahoma"> <br> Steps:</strong> <table cellspacing=0 cellpadding=0 width="100%" border=0> <tbody> <tr> <td style="WIDTH: 83px; COLOR: black; FONT-FAMILY: Tahoma"> • Step 1</td> <td style="COLOR: black; FONT-FAMILY: Tahoma"> Start Microsoft Excel.<br> </td> </tr> <tr> <td style="WIDTH: 83px; COLOR: black; FONT-FAMILY: Tahoma"> • Step 2</td> <td style="COLOR: black; FONT-FAMILY: Tahoma"> From the menu select <strong>Data &gt; PivotTable and PivotChart Report</strong>.<br> </td> </tr> <tr> <td style="WIDTH: 83px; COLOR: black; FONT-FAMILY: Tahoma" valign=top> • Step 3</td> <td style="COLOR: black; FONT-FAMILY: Tahoma" valign=top> In the <strong>PivotTable and PivotChart</strong> wizard dialog select <strong>External Data Source</strong> and click the <strong>Next</strong>.<br> <img src="/content/binary/Step3.jpg"> <br> </td> </tr> <tr> <td style="WIDTH: 83px; COLOR: black; FONT-FAMILY: Tahoma" valign=top> • Step 4</td> <td style="COLOR: black; FONT-FAMILY: Tahoma" valign=top> Notice that the text next to the <strong>Get Data</strong> button indicates that no data fields have been retrieved at the moment.<br> <img src="/content/binary/Step4.jpg"> <br> </td> </tr> <tr> <td style="WIDTH: 83px; COLOR: black; FONT-FAMILY: Tahoma"> • Step 5</td> <td style="COLOR: black; FONT-FAMILY: Tahoma"> Click the <strong>Get Data</strong> button.<br> </td> </tr> <tr> <td style="WIDTH: 83px; COLOR: black; FONT-FAMILY: Tahoma" valign=top> • Step 6</td> <td style="COLOR: black; FONT-FAMILY: Tahoma" valign=top> Click the <strong>OLAP Cubes</strong> tab, Select <NEW source="" data=""> </NEW> and click <strong>OK</strong>.<br> <img src="/content/binary/Step6.jpg"> <br> </td> </tr> <tr> <td style="WIDTH: 83px; COLOR: black; FONT-FAMILY: Tahoma" valign=top> • Step 7</td> <td style="COLOR: black; FONT-FAMILY: Tahoma" valign=top> In Field <strong>1</strong> enter TeamSystem (or any name you want to give it). For field <strong>2</strong> select <strong>Microsoft OLE DB Provider for Analysis Services 9.0</strong> and click <strong>Connect</strong>.<br> <img src="/content/binary/Step7.jpg"> <br> </td> </tr> <tr> <td style="WIDTH: 83px; COLOR: black; FONT-FAMILY: Tahoma" valign=top> • Step 8</td> <td style="COLOR: black; FONT-FAMILY: Tahoma"> Make sure <strong>Analysis server</strong> is selected and enter the server name in the Server field. For <strong>User ID</strong> enter <strong>TFSREPORTS</strong> and enter the designated <strong>TFSREPORTS </strong>password in the <strong>Password</strong> field. Click <strong>Next</strong>.<br> <img src="/content/binary/Step8.jpg"> <br> </td> </tr> <tr> <td style="WIDTH: 83px; COLOR: black; FONT-FAMILY: Tahoma" valign=top> • Step 9</td> <td style="COLOR: black; FONT-FAMILY: Tahoma" valign=top> Make sure <strong>TFSWarehouse</strong> is selected and click <strong>Finish</strong>.<br> <img src="/content/binary/Step9.jpg"> <br> </td> </tr> <tr> <td style="WIDTH: 83px; COLOR: black; FONT-FAMILY: Tahoma" valign=top> • Step 10</td> <td style="COLOR: black; FONT-FAMILY: Tahoma"> You should see that <strong>TFSWarehouse</strong> is displayed after the <strong>Connect</strong> button. Make sure that the <strong>Team System</strong> cube is selected. Check the <strong>Save my user ID and password</strong> checkbox and click <strong>OK</strong>.<br> <img src="/content/binary/Step10.jpg"> <br> </td> </tr> <tr> <td style="WIDTH: 83px; COLOR: black; FONT-FAMILY: Tahoma"> • Step 11</td> <td style="COLOR: black; FONT-FAMILY: Tahoma"> IN the <strong>Choose Data Source</strong> dialog click <strong>OK</strong>.<br> </td> </tr> <tr> <td style="WIDTH: 83px; COLOR: black; FONT-FAMILY: Tahoma"> • Step 12</td> <td style="COLOR: black; FONT-FAMILY: Tahoma"> In the <strong>PivotTable</strong> dialog click <strong>Finish</strong>.<br> </td> </tr> <tr> <td style="WIDTH: 83px; COLOR: black; FONT-FAMILY: Tahoma" valign=top> • Step 13</td> <td style="COLOR: black; FONT-FAMILY: Tahoma"> From the <strong>PivotTable Field List</strong>, double-click each of the following nodes in this order:<br> <table style="WIDTH: 100%" cellspacing=0 cellpadding=0 border=0> <tbody> <tr> <td style="WIDTH: 5px"> <font color=#000000>• </font></td> <td> <font color=#000000>Team Project.Team Project</font></td> </tr> <tr> <td style="WIDTH: 5px"> <font color=#000000>• </font></td> <td> <font color=#000000>Changeset</font></td> </tr> <tr> <td style="WIDTH: 5px"> <font color=#000000>• </font></td> <td> <font color=#000000>Filename.File Path</font></td> </tr> <tr> <td style="WIDTH: 5px"> <font color=#000000>• </font></td> <td style="WIDTH: 83px"> <font color=#000000>Lines Added</font></td> </tr> <tr> <td style="WIDTH: 5px; HEIGHT: 19px"> <font color=#000000>• </font></td> <td> <font color=#000000>Lines Modified</font></td> </tr> <tr> <td style="WIDTH: 5px"> <font color=#000000>• </font></td> <td> <font color=#000000>Lines Deleted.</font></td> </tr> </tbody> </table> It is possible that not all required fields are present in you current PivotTable Field List. The necessary steps, to add the missing fields, are described in the <strong>How to add a &nbsp;Field to the Team System Cube</strong> post.<br> <img src="/content/binary/Step13.jpg"> <br> Close the PivotTable Field List window.<br> </td> </tr> <tr> <td style="WIDTH: 83px; COLOR: black; FONT-FAMILY: Tahoma" valign=top> • Step 14</td> <td style="COLOR: black; FONT-FAMILY: Tahoma"> Enjoy your great new PivotTable!<br> <img src="/content/binary/Step1412.jpg" border=0></td> </tr> </tbody> </table> </td> </tr> </tbody> </table> </div> <img width="0" height="0" src="/aggbug_id_64e2cc82_5ab4_4565_b3cc_15bedb07e7ef.ashx"> http://steven.wilssens.net/CommentView.aspx?guid=64e2cc82-5ab4-4565-b3cc-15bedb07e7ef Team System
http://steven.wilssens.net/Trackback.aspx?guid=e9ad83f0-8115-4e6e-8a96-dbe26d4a12f6 http://steven.wilssens.net/pingback.aspx http://steven.wilssens.net/PermaLink.aspx?guid=e9ad83f0-8115-4e6e-8a96-dbe26d4a12f6 http://steven.wilssens.net/CommentView.aspx?guid=e9ad83f0-8115-4e6e-8a96-dbe26d4a12f6 http://steven.wilssens.net/SyndicationService.asmx/GetEntryCommentsRss?guid=e9ad83f0-8115-4e6e-8a96-dbe26d4a12f6 2

During the Professional Developers Conference, I attended the excellent pre-conference session on Software Development with Visual Studio Team System. The session was delivered by Richard Hundhausen and Steven Borg . Their presentation was divided into two main parts:

A two hour theoretical introduction to Visual Studio 2005 Team System;
A four hour end-to-end demo on how to build a distributed application using Team System.

In the first part they started by summarizing the different challenges that companies encounter while building distributed solutions: lack of communication; lack of tool integration, lack of (good) process guidance, and the need to increase the predictability of success.
Steven continued by stating that about 70% of private and about 90% of all government software development projects, still actually fail.
After these chocking figures we composed a definition of Team System as being an integrated suite of tools to support the entire software development lifecycle. Although I think we will only accomplish this in future versions of Team System, the current version is an incredible starting point.
As you undoubtedly know Microsoft will provide the Visual Studio Team System front-ends in basically 3 different editions:

Team Edition for Software Architects
Team Edition for Software Developers
Team Edition for Software Testers
You can get the sum of all of the functionality provided by the abovementioned in the Team Suite Edition.

Our speakers covered the different features for each edition and continued by covering the different areas where Team Foundation Server will provide you with huge productivity improvements:

Collaboration
o Work Item tracking:
Scenarios, Quality of Service Requirements, Risks, Tasks, Bugs, Custom work items
o Reports
Software Configuration Management
o Merging, branching, shelving, etc
Build Management
With a room full of developers, you could not continue the session without explaining how the Team Foundation Server provides all the abovementioned functionality. They did this by explaining the Team Foundation Services Architecture and made a very important remark if you want to talk to these services yourself: despite the fact that these services are exposed as web services, developers are highly encouraged to use the provided Team Foundation Object Model since it provides you with process orchestration which you would be missing if you would decide to talk to the web service directly by creating your own proxies.
In the following minutes we stopped in the land of the Software Configuration Manager where they explained the Team System’s Version Control System and compared it to Visual SourceSafe 2005. As a conclusion I can say that Visual SourceSafe 2005 is definitely a huge improvement on its predecessors, but is still relies on the file system for its storage, whereas Team Foundation Version Control is in a league of its own and uses SQL server 2005 as its storage provider.
One of the great things about Team System is that it’s not a locked down platform but that it’s extensible in almost any way you can imagine. There is an exhaustive eventing model and as I mentioned before you can use the many API’s that are exposed. It is also possible to extend Team System by providing you own methodology templates. You can also use the different extensibility toolkits that are available today and will be part of the actual Team System SDK. It is very reassuring to hear that a lot of VSIP partners are planning on extending Team System which definitely proves that they believe in its future.
During the remainder of the introduction Steven and Richard covered the different editions of the Team System front-ends:

The first edition they tackled was Team System for Project Manager which might seem a bit strange since there is no direct mapping to a Team System Edition. A combination of the Team System Client, the Team System functionalities provided in Excel and MS Project will make a project manager a respected member of the Team System family. Following activities available to a project manager were discussed and illustrated:

The creation and configuration of team projects;
Creation and Assignment of work items;
Project status monitoring by querying work items or viewing reports on the project portal. You have many different reports but if I have to pick a favorite it would be the code churn report, which Microsoft believes to be an excellent predictor with respect to the possible failure of a project;
They did make an important remark with regards to the MS Project integration: currently there is no integration with MS Project Server but you can do this yourself through the mpp files.

The second edition was the architect edition and we defined the architect’s problems space. Today’s connected systems are becoming more and more complex and an architect is often confronted with communication problems between architects and developers, and development and IT operations teams. In Team System two different types of architects are distinguished:

Software/Application Architects
Network/Infrastructure Architects.
Following activities available to an architect were discussed and illustrated:
Create Logical Datacenter Diagrams (LDD)
Create Application Diagrams (AD)
Compose application components into “systems”
Create trial deployment diagrams
o Validate AD against LDD
Generate deployment reports
Generate and implement application components (web services)
The long term view of these diagrams is that you should be able to auto-deploy your applications or make recommendations concerning your deployment, before you actually begin the installation of the application.
Team System will allow you to fail often, fail early. Team System will help a team to avoid last minute disputes with IT Operations when it comes to deploying your apps to their servers. This System Definition Model (SDM) provides a common language for describing all aspects of IT system, both the constraints and the settings.
In the following minutes the speakers explained the following designers that are included by the Distributed System Designers in Team System:
Logical Datacenter Designer (LDD)
Application Connection Designer (ACD)
System Designer
Deployment Designer
You can find the definitions of these designers in the Visual Studio 2005 Team System: Designing Distributed Systems for Deployment article on the MSDN website.
The next question on the agenda was: “has UML died with the arrival of the Domain Specific Languages”? The answer is obviously NO: while UML will help you describe how to build the code, DSL will help you with the description of the capabilities of the code.

The third edition was the edition for developers and as it was becoming a habit by then we defined the developer’s problems space. Developers face many problems but we focused on the following:

Developers are not writing quality code;
Inadequate source control system and practices;
No way to relate code changes to justification.
I had no problem agreeing with the abovementioned statements and was happy to know that many developers will be helped by the upcoming release of Team System. The speakers focused in on that by providing a list of activities (besides writing code) that a developer probably does and then continued by explaining what Team System features help him to do a better job:
Unit Testing: The unit testing facilities in Visual Studio 2005 are much more powerful and easier to use than NUnit and there is a much better integration with the code coverage tool, than there is between NUnit and NCover.
Static Analysis: This will test your code for common problems, best practices, naming guidelines, etc. The tools that are incorporated are PreFast for C and C++, and FxCop for .NET.
Source Control: The speakers focused on the integrated check-in capabilities and check-in policies.

The fourth edition was the edition for testers and as we defined the problem space where these Team System citizens live in:

Testing controls are not integrated;
There is no version control for tests;
There are no integrated communication mechanisms.
There are different testing types and Team System has an out of the box set of tools that help the tester perform following activities:
Unit testing and component testing, and code coverage: It is important to notice that the unit testing and component testing activities have a significant overlap with development activities and as such both developers and testers can take advantage of these tools.
Web testing: Tools that support functional web testing. These tests are created in following steps:
o Create a recorded test, which simply records the user’s keystrokes and the URLs of the pages visited.
o Browse your website until you are done
o Convert the recorded test into a coded web test and customize the test further.
Load testing: These tools allow you to test the behaviour of the Web site under load. You can you can use your Web Tests as the basis for load tests.
Test management: This can be done by means of work items; these are units of work assigned to members of your product team.
As the speakers indicated, Microsoft is not providing all the tools required by the tester role but has been actively encouraging third-party vendors to ensure their tools can integrate closely with the Testers edition, and as mentioned Beta 2 comes with an extensive Application Programming Interface (API).

As you will definitely realize there are more than 4 roles involved in the software development process, examples are: Business Analyst, GUI designer, etc. In the first version of Team System they will still be able to participate by:

Accessing the real-time reports on the portal;
Using Excel or Project to maintain work items;
Using Team Explorer or command-line utilities to view/edit project artifacts.
Team System is for the entire team, but not all members are equally supported. Although this may look like a serious shortcoming at first, please realize that this is a version 1 product and the product supports most of the members in ways you could only dream of a year ago.

This concludes my summary of the theoretical part of the presentation given by Richard and Steven, the following hours they went trough an end to end demonstration of the features that were discussed in the first part of the presentation. As the title said it was an introduction to team system and so far it was best I have seen.

PDC05 - Software Development with Visual Studio Team System http://steven.wilssens.net/PermaLink.aspx?guid=e9ad83f0-8115-4e6e-8a96-dbe26d4a12f6 http://steven.wilssens.net/PDC05SoftwareDevelopmentWithVisualStudioTeamSystem.aspx Tue, 20 Sep 2005 19:41:52 GMT <p> <font face=Tahoma color=#000000>During the Professional Developers Conference, I attended the excellent pre-conference session on Software Development with Visual Studio Team System. The session was delivered by </font><a href="#topofpage"><font face=Tahoma color=#0000ff>Richard Hundhausen</font></a><font face=Tahoma color=#000000> and </font><a href="#topofpage"><font face=Tahoma color=#0000ff>Steven Borg</font></a><font face=Tahoma color=#000000>. Their presentation was divided into two main parts: </font> <table cellspacing=0 cellpadding=0> <tbody> <tr valign=top> <td width=31> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>A two hour theoretical introduction to Visual Studio 2005 Team System;</font></td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>A four hour end-to-end demo on how to build a distributed application using Team System.</font></td> </tr> </tbody> </table> </p> <p> <font face=Tahoma color=#000000>In the first part they started by summarizing the different challenges that companies encounter while building distributed solutions: lack of communication; lack of tool integration, lack of (good) process guidance, and the need to increase the predictability of success.<br> Steven continued by stating that about 70% of private and about 90% of all government software development projects, still actually fail.<br> After these chocking figures we composed a definition of Team System as being an integrated suite of tools to support the entire software development lifecycle. Although I think we will only accomplish this in future versions of Team System, the current version is an incredible starting point.<br> As you undoubtedly know Microsoft will provide the Visual Studio Team System front-ends in basically 3 different editions: </font> <table cellspacing=0 cellpadding=0> <tbody> <tr valign=top> <td width=31> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Team Edition for Software Architects</font></td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Team Edition for Software Developers</font></td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Team Edition for Software Testers</font></td> </tr> </tbody> </table> <font face=Tahoma color=#000000>You can get the sum of all of the functionality provided by the abovementioned in the Team Suite Edition. </font> </p> <p> <font face=Tahoma color=#000000>Our speakers covered the different features for each edition and continued by covering the different areas where Team Foundation Server will provide you with huge productivity improvements:<br> </font> <table cellspacing=0 cellpadding=0> <tbody> <tr valign=top> <td width=31> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Collaboration<br> </font> <table cellspacing=0 cellpadding=0> <tbody> <tr valign=top> <td width=31> <font face=Tahoma color=#000000 size=2>o</font></td> <td> <font face=Tahoma color=#000000 size=2>Work Item tracking:<br> Scenarios, Quality of Service Requirements, Risks, Tasks, Bugs, Custom work items</font></td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>o</font></td> <td> <font face=Tahoma color=#000000 size=2>Reports</font></td> </tr> </tbody> </table> </td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Software Configuration Management<br> </font> <table cellspacing=0 cellpadding=0> <tbody> <tr valign=top> <td width=31> <font face=Tahoma color=#000000 size=2>o</font></td> <td> <font face=Tahoma color=#000000 size=2>Merging, branching, shelving, etc</font></td> </tr> </tbody> </table> </td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Build Management</font></td> </tr> </tbody> </table> <font face=Tahoma color=#000000>With a room full of developers, you could not continue the session without explaining how the Team Foundation Server provides all the abovementioned functionality. They did this by explaining the Team Foundation Services Architecture and made a very important remark if you want to talk to these services yourself: despite the fact that these services are exposed as web services, developers are highly encouraged to use the provided Team Foundation Object Model since it provides you with process orchestration which you would be missing if you would decide to talk to the web service directly by creating your own proxies.<br> In the following minutes we stopped in the land of the Software Configuration Manager where they explained the Team System’s Version Control System and compared it to Visual SourceSafe 2005. As a conclusion I can say that Visual SourceSafe 2005 is definitely a huge improvement on its predecessors, but is still relies on the file system for its storage, whereas Team Foundation Version Control is in a league of its own and uses SQL server 2005 as its storage provider.<br> One of the great things about Team System is that it’s not a locked down platform but that it’s extensible in almost any way you can imagine. There is an exhaustive eventing model and as I mentioned before you can use the many API’s that are exposed. It is also possible to extend Team System by providing you own methodology templates. You can also use the different extensibility toolkits that are available today and will be part of the actual Team System SDK. It is very reassuring to hear that a lot of VSIP partners are planning on extending Team System which definitely proves that they believe in its future.<br> During the remainder of the introduction Steven and Richard covered the different editions of the Team System front-ends: </font> </p> <p> <font face=Tahoma color=#000000>The first edition they tackled was Team System for Project Manager which might seem a bit strange since there is no direct mapping to a Team System Edition. A combination of the Team System Client, the Team System functionalities provided in Excel and MS Project will make a project manager a respected member of the Team System family. Following activities available to a project manager were discussed and illustrated: </font> <table cellspacing=0 cellpadding=0> <tbody> <tr valign=top> <td width=31> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>The creation and configuration of team projects;</font></td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Creation and Assignment of work items;</font></td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Project status monitoring by querying work items or viewing reports on the project portal. You have many different reports but if I have to pick a favorite it would be the code churn report, which Microsoft believes to be an excellent predictor with respect to the possible failure of a project;</font></td> </tr> </tbody> </table> <font face=Tahoma color=#000000>They did make an important remark with regards to the MS Project integration: currently there is no integration with MS Project Server but you can do this yourself through the mpp files. </font> </p> <p> <font face=Tahoma color=#000000>The second edition was the architect edition and we defined the architect’s problems space. Today’s connected systems are becoming more and more complex and an architect is often confronted with communication problems between architects and developers, and development and IT operations teams. In Team System two different types of architects are distinguished: </font> <table cellspacing=0 cellpadding=0> <tbody> <tr valign=top> <td width=31> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Software/Application Architects</font></td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Network/Infrastructure Architects.</font></td> </tr> </tbody> </table> <font face=Tahoma color=#000000>Following activities available to an architect were discussed and illustrated: </font> <table cellspacing=0 cellpadding=0> <tbody> <tr valign=top> <td width=31> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Create Logical Datacenter Diagrams (LDD)</font></td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Create Application Diagrams (AD)</font></td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Compose application components into “systems”</font></td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Create trial deployment diagrams </font> <table cellspacing=0 cellpadding=0> <tbody> <tr valign=top> <td width=31> <font face=Tahoma color=#000000 size=2>o</font></td> <td> <font face=Tahoma color=#000000 size=2>Validate AD against LDD</font></td> </tr> </tbody> </table> </td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Generate deployment reports</font></td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Generate and implement application components (web services)</font></td> </tr> </tbody> </table> <font face=Tahoma color=#000000>The long term view of these diagrams is that you should be able to auto-deploy your applications or make recommendations concerning your deployment, before you actually begin the installation of the application.<br> Team System will allow you to fail often, fail early. Team System will help a team to avoid last minute disputes with IT Operations when it comes to deploying your apps to their servers. This System Definition Model (SDM) provides a common language for describing all aspects of IT system, both the constraints and the settings.<br> In the following minutes the speakers explained the following designers that are included by the Distributed System Designers in Team System: </font> <table cellspacing=0 cellpadding=0> <tbody> <tr valign=top> <td width=31> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Logical Datacenter Designer (LDD)</font></td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Application Connection Designer (ACD)</font></td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>System Designer</font></td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Deployment Designer</font></td> </tr> </tbody> </table> <font face=Tahoma color=#000000>You can find the definitions of these designers in the </font><a href="#topofpage" target=_blank><font face=Tahoma color=#0000ff>Visual Studio 2005 Team System: Designing Distributed Systems for Deployment</font></a><font face=Tahoma color=#000000> article on the MSDN website.<br> The next question on the agenda was: “has UML died with the arrival of the Domain Specific Languages”? The answer is obviously NO: while UML will help you describe how to build the code, DSL will help you with the description of the capabilities of the code. </font> </p> <p> <font face=Tahoma color=#000000>The third edition was the edition for developers and as it was becoming a habit by then we defined the developer’s problems space. Developers face many problems but we focused on the following: </font> <table cellspacing=0 cellpadding=0> <tbody> <tr valign=top> <td width=31> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Developers are not writing quality code;</font></td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Inadequate source control system and practices;</font></td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>No way to relate code changes to justification.</font></td> </tr> </tbody> </table> <font face=Tahoma color=#000000>I had no problem agreeing with the abovementioned statements and was happy to know that many developers will be helped by the upcoming release of Team System. The speakers focused in on that by providing a list of activities (besides writing code) that a developer probably does and then continued by explaining what Team System features help him to do a better job: </font> <table cellspacing=0 cellpadding=0> <tbody> <tr valign=top> <td width=31> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Unit Testing: The unit testing facilities in Visual Studio 2005 are much more powerful and easier to use than NUnit and there is a much better integration with the code coverage tool, than there is between NUnit and NCover.</font></td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Static Analysis: This will test your code for common problems, best practices, naming guidelines, etc. The tools that are incorporated are PreFast for C and C++, and FxCop for .NET.</font></td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Source Control: The speakers focused on the integrated check-in capabilities and check-in policies.</font></td> </tr> </tbody> </table> </p> <p> <font face=Tahoma color=#000000>The fourth edition was the edition for testers and as we defined the problem space where these Team System citizens live in: </font> <table cellspacing=0 cellpadding=0> <tbody> <tr valign=top> <td width=31> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Testing controls are not integrated;</font></td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>There is no version control for tests;</font></td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>There are no integrated communication mechanisms.</font></td> </tr> </tbody> </table> <font face=Tahoma color=#000000>There are different testing types and Team System has an out of the box set of tools that help the tester perform following activities: </font> <table cellspacing=0 cellpadding=0> <tbody> <tr valign=top> <td width=31> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Unit testing and component testing, and code coverage: It is important to notice that the unit testing and component testing activities have a significant overlap with development activities and as such both developers and testers can take advantage of these tools.</font></td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Web testing: Tools that support functional web testing. These tests are created in following steps: </font> <table cellspacing=0 cellpadding=0> <tbody> <tr valign=top> <td width=31> <font face=Tahoma color=#000000 size=2>o</font></td> <td> <font face=Tahoma color=#000000 size=2>Create a recorded test, which simply records the user’s keystrokes and the URLs of the pages visited.</font></td> </tr> <tr valign=top> <td width=31> <font face=Tahoma color=#000000 size=2>o</font></td> <td> <font face=Tahoma color=#000000 size=2>Browse your website until you are done</font></td> </tr> <tr valign=top> <td width=31> <font face=Tahoma color=#000000 size=2>o</font></td> <td> <font face=Tahoma color=#000000 size=2>Convert the recorded test into a coded web test and customize the test further.</font></td> </tr> </tbody> </table> </td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Load testing: These tools allow you to test the behaviour of the Web site under load. You can you can use your Web Tests as the basis for load tests.</font></td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Test management: This can be done by means of work items; these are units of work assigned to members of your product team.</font></td> </tr> </tbody> </table> <font face=Tahoma color=#000000>As the speakers indicated, Microsoft is not providing all the tools required by the tester role but has been actively encouraging third-party vendors to ensure their tools can integrate closely with the Testers edition, and as mentioned Beta 2 comes with an extensive Application Programming Interface (API). </font> </p> <p> <font face=Tahoma color=#000000>As you will definitely realize there are more than 4 roles involved in the software development process, examples are: Business Analyst, GUI designer, etc. In the first version of Team System they will still be able to participate by: </font> <table cellspacing=0 cellpadding=0> <tbody> <tr valign=top> <td width=31> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Accessing the real-time reports on the portal;</font></td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Using Excel or Project to maintain work items;</font></td> </tr> <tr valign=top> <td> <font face=Tahoma color=#000000 size=2>•</font></td> <td> <font face=Tahoma color=#000000 size=2>Using Team Explorer or command-line utilities to view/edit project artifacts.</font></td> </tr> </tbody> </table> <font face=Tahoma color=#000000>Team System is for the entire team, but not all members are equally supported. Although this may look like a serious shortcoming at first, please realize that this is a version 1 product and the product supports most of the members in ways you could only dream of a year ago. </font> </p> <p> <font face=Tahoma color=#000000>This concludes my summary of the theoretical part of the presentation given by Richard and Steven, the following hours they went trough an end to end demonstration of the features that were discussed in the first part of the presentation. As the title said it was an introduction to team system and so far it was best I have seen. </font> </p> <img width="0" height="0" src="/aggbug_id_e9ad83f0_8115_4e6e_8a96_dbe26d4a12f6.ashx"> http://steven.wilssens.net/CommentView.aspx?guid=e9ad83f0-8115-4e6e-8a96-dbe26d4a12f6 Team System
http://steven.wilssens.net/Trackback.aspx?guid=b3769592-d2c2-4287-9f55-76989eaed47b http://steven.wilssens.net/pingback.aspx http://steven.wilssens.net/PermaLink.aspx?guid=b3769592-d2c2-4287-9f55-76989eaed47b http://steven.wilssens.net/CommentView.aspx?guid=b3769592-d2c2-4287-9f55-76989eaed47b http://steven.wilssens.net/SyndicationService.asmx/GetEntryCommentsRss?guid=b3769592-d2c2-4287-9f55-76989eaed47b 1

In previous versions of Visual Studio, a tester had to resort to many different tool vendors for his testing equipment. The release of Microsoft Visual Studio 2005 Team System will mark an important milestone in testing land since it marks the recognition of the tester as a first class citizen in Visual Studio. It will provide testers with tools that support testing throughout the entire software development and maintenance lifecycles. Does this mean that every tool a tester ever dreamt of or even really needs is in Team System? No, but it’s a great start. In this post I’ll focus on the test levels that are defined in the “V” model and the Visual Studio 2005 and Team System features that support them. The “V” model has become an industry wide standard for visualizing the levels of tests. Figure 1 is an illustration of the “V” model.



I regularly notice that there is a lot of confusion on the what, how and when wile discussing these levels. Before we can start to define the different testing levels it’s probably wise to define what a unit and a component is:

Unit:
A unit is the smallest compilable component. It does not include any communicating components and it’s generally created by one programmer.
Component:
A unit is a component. The integration of one or more components is a component. The reason for "one or more" as contrasted to "Two or more" is to allow for components that call themselves recursively.

On the right-leg of the “V” model you’ll find these levels:
Unit Testing:
During unit-testing the developer should always make sure the unit is tested in isolation, and that it is the only possible point of failure. In unit testing communicating components and called components should be replaced with stubs, simulators, or trusted components. Calling components should be replaced with drivers or trusted super-components.
Component Testing:
During component testing the same scenarios are tested as during unit testing but all stubs and simulators are replaced with the real thing.
Integration Testing:
Integration testing identifies problems that occur when components are combined. Component A and B are two components for which A calls B. Figure 2 illustrates integration testing for Components A and B:
Test Suite A contains the component level tests of component A.
Test Suite B consits the component level tests of component B.
Tab are the tests in A’s suite that cause A to call B.
Tsab are the tests in B's suite for which it would be possible to replace the code that is written to test component B by a call from Component A as input for the tests.
When you combine the test suites Tsab and Tab you will have a set of component tests that you can use after you modify Component B. When you modify Component B or A, you will be able to verify that will still function correctly together.


System Testing:
In system testing the tester will verify if the developed system or subsystems still meet the requirements that were set in the functional and quality specifications.
Acceptance Testing:
In acceptance testing the user and system manager will verify if the developed system still meets the requirements that were set in the functional and quality specifications. This level of testing is done in an environment that simulates the operational environment in the greatest possible extent.
Release Testing:
Prior to a public release of a program you must ensure that all bugs that were intended to be fixed were actually fixed. In release testing following aspects will be verified:

A mixture of previously failed-and-fixed tests and tests that have always passed;

Virus checking of the final installation package. Too many cases of distribution of viruses have been reported to not take this additional precaution.
A comparison of all features actually working reliably with prepared documentation. It is crucial that the documentation reflects all design decisions made during development and testing.

There are many variations on these definitions and the “V” model, but the key point is that the abovementioned testing levels are formally defined. A wise man once said: “Even when laws have been written down, they ought not always to remain unaltered.” Despite the fact that we are not talking about laws here, you can always leave a comment when you have another understanding of these definitions.
Testing Levels http://steven.wilssens.net/PermaLink.aspx?guid=b3769592-d2c2-4287-9f55-76989eaed47b http://steven.wilssens.net/TestingLevels.aspx Sun, 07 Aug 2005 15:43:44 GMT <p> <table id=Table1 cellspacing=0 cellpadding=0 width="100%" border=0> <tbody> <tr> <td height=113> <p> <font face=Tahoma color=#000000>In previous versions of Visual Studio, a tester had to resort to many different tool vendors for his testing equipment. The release of Microsoft Visual Studio 2005 Team System will mark an important milestone in testing land since it marks the recognition of the tester as a first class citizen in Visual Studio. It will provide testers with tools that support testing throughout the entire software development and maintenance lifecycles. Does this mean that every tool a tester ever dreamt of or even really needs is in Team System? No, but it’s a great start. In this post I’ll focus on the test levels that are defined in the “V” model and the Visual Studio 2005 and Team System features that support them. The “V” model has become an industry wide standard for visualizing the levels of tests. Figure 1 is an illustration of the “V” model. </font> </p> </td> </tr> <tr> <td align=middle> <p> <br> <font face=Tahoma color=#000000><img src="/content/binary/V_Model.gif" border=0> <br> </font> </p> </td> </tr> <tr> <td> <p> <font face=Tahoma color=#000000>I regularly notice that there is a lot of confusion on the what, how and when wile discussing these levels. Before we can start to define the different testing levels it’s probably wise to define what a unit and a component is:<br> </font> <table id=Table2 cellspacing=0 cellpadding=0 width="100%" border=0> <tbody> <tr> <td valign=top width=17> <font face=Tahoma color=#000000>• </font></td> <td> <font face=Tahoma><font color=#000000><strong>Unit:</strong> <br> A unit is the smallest compilable component. It does not include any communicating components and it’s generally created by one programmer. </font></font></td> </tr> <tr> <td valign=top width=17> <font face=Tahoma color=#000000>• </font></td> <td> <font face=Tahoma><font color=#000000><strong>Component:<br> </strong>A unit is a component. The integration of one or more components is a component. The reason for "one or more" as contrasted to "Two or more" is to allow for components that call themselves recursively.<br> </font></font></td> </tr> </tbody> </table> <br> <font face=Tahoma color=#000000>On the right-leg of the “V” model you’ll find these levels:<br> </font> <table cellspacing=0 cellpadding=0 width="100%" border=0> <tbody> <tr> <td valign=top width=19> <font face=Tahoma color=#000000>• </font></td> <td> <font face=Tahoma><font color=#000000><strong>Unit Testing:<br> </strong>During unit-testing the developer should always make sure the unit is tested in isolation, and that it is the only possible point of failure. In unit testing communicating components and called components should be replaced with stubs, simulators, or trusted components. Calling components should be replaced with drivers or trusted super-components.</font></font></td> </tr> <tr> <td valign=top width=19> <font face=Tahoma color=#000000>• </font></td> <td> <font face=Tahoma><font color=#000000><strong>Component Testing:<br> </strong>During component testing the same scenarios are tested as during unit testing but all stubs and simulators are replaced with the real thing.</font></font></td> </tr> <tr> <td valign=top width=19> <font face=Tahoma color=#000000>• </font></td> <td> <table id=Table3 cellspacing=0 cellpadding=0 width="100%" border=0> <tbody> <tr> <td> <font face=Tahoma><font color=#000000><strong>Integration Testing:</strong> <br> Integration testing identifies problems that occur when components are combined. Component A&nbsp;and B are two components for which A calls B.&nbsp;Figure 2&nbsp;illustrates integration testing for Components A and B: </font></font></td> </tr> <tr> <td> <table id=Table4 cellspacing=0 cellpadding=0 width="100%" border=0> <tbody> <tr> <td valign=top width=26> <font face=Tahoma color=#000000>• </font></td> <td> <font face=Tahoma color=#000000>Test Suite A contains the component level tests of component A.</font></td> </tr> <tr> <td valign=top width=26> <font face=Tahoma color=#000000>• </font></td> <td> <font face=Tahoma color=#000000>Test Suite B consits the component level tests of component B. </font></td> </tr> <tr> <td valign=top width=26> <font face=Tahoma color=#000000>• </font></td> <td> <font face=Tahoma color=#000000>Tab are the tests in A’s suite that cause A to call B. </font></td> </tr> <tr> <td valign=top width=26> <font face=Tahoma color=#000000>• </font></td> <td> <font face=Tahoma color=#000000>Tsab are the tests in B's suite for which it would be possible to replace the code that is written to test component B by a call from Component A as input for the tests.</font></td> </tr> </tbody> </table> <font face=Tahoma color=#000000>When you combine the test suites Tsab and Tab you will have a set of component tests that you can use after you modify Component B. When you modify Component B or A, you will be able to verify that will still function correctly together. </font></td> </tr> <tr> <td align=middle> <br> <font face=Tahoma color=#000000><img src="/content/binary/Integration_Testing.gif" border=0> <br> </font></td> </tr> </tbody> </table> </td> </tr> <tr> <td valign=top width=21> <font face=Tahoma color=#000000>• </font></td> <td> <font face=Tahoma><font color=#000000><strong>System Testing:</strong> <br> In system testing the tester will verify if the developed system or subsystems still meet the requirements that were set in the functional and quality specifications. </font></font></td> </tr> <tr> <td valign=top width=21> <font face=Tahoma color=#000000>•</font></td> <td> <font face=Tahoma><font color=#000000><strong>Acceptance Testing:</strong> <br> In acceptance testing the user and system manager will verify if the developed system still meets the requirements that were set in the functional and quality specifications. This level of testing is done in an environment that simulates the operational environment in the greatest possible extent. </font></font></td> </tr> <tr> <td valign=top width=21> <font face=Tahoma color=#000000>•</font></td> <td> <font face=Tahoma><font color=#000000><strong>Release Testing:<br> </strong>Prior to a public release of a program you must ensure that all bugs that were intended to be fixed were actually fixed. In release testing following&nbsp;aspects will be verified: <br> </font></font> <table cellspacing=0 cellpadding=0 width="100%" border=0> <tbody> <tr> <td valign=top width=20> <font face=Tahoma color=#000000>• </font></td> <td> <p> <font face=Tahoma color=#000000>A mixture of previously failed-and-fixed tests and tests that have always passed;</font> </p> </td> </tr> <tr> <td valign=top width=20> <font face=Tahoma color=#000000>• </font></td> <td> <font face=Tahoma color=#000000>Virus checking of the final installation package. Too many cases of distribution of viruses have been reported to not take this additional precaution.</font></td> </tr> <tr> <td valign=top width=20> <font face=Tahoma color=#000000>• </font></td> <td> <font face=Tahoma color=#000000>A comparison of all features actually working reliably with prepared documentation. It is crucial that the documentation reflects all design decisions made during development and testing.</font></td> </tr> </tbody> </table> </td> </tr> </tbody> </table> </p> </td> </tr> <tr> <td> <br> <font face=Tahoma color=#000000>There are many variations on these definitions and the “V” model, but the key point is that the abovementioned testing levels are formally defined. A wise man once said: “Even when laws have been written down, they ought not always to remain unaltered.” Despite the fact that we are not talking about laws here, you can always leave a comment when you have another understanding of these definitions.</font></td> </tr> <tr> <td> <font face=Tahoma color=#000000></font></td> </tr> </tbody> </table> </p> <img width="0" height="0" src="/aggbug_id_b3769592_d2c2_4287_9f55_76989eaed47b.ashx"> http://steven.wilssens.net/CommentView.aspx?guid=b3769592-d2c2-4287-9f55-76989eaed47b Team System
http://steven.wilssens.net/Trackback.aspx?guid=b7fceb49-13fe-4216-a59e-0eb36c195ab7 http://steven.wilssens.net/pingback.aspx http://steven.wilssens.net/PermaLink.aspx?guid=b7fceb49-13fe-4216-a59e-0eb36c195ab7 http://steven.wilssens.net/CommentView.aspx?guid=b7fceb49-13fe-4216-a59e-0eb36c195ab7 http://steven.wilssens.net/SyndicationService.asmx/GetEntryCommentsRss?guid=b7fceb49-13fe-4216-a59e-0eb36c195ab7 2

In a previous post I stated the goals of successful configuration management and as you undoubtedly realized they are not easily accomplished in the field.  Now I'll try to give you an insight on how Team System helps you to tame this untamable beast.

A good SCM process makes it possible for developers to work together on a project in an efficient manner, both as individuals and as members of a team.  A development team must constantly manage requirements, tasks, source code, bugs and reports.  Gathering each of these item types in the same tool strengthens the communication pathways of teams and software.

Based on the goals mentioned in the previous post on SCM I'll try to indicate how Team System helps you to accomplish them:

·   Configuration identification:   This is often reffered as the process of recognizing the baseline applicability to a set of configuration items. It refers both not only to source, but all documents that contribute to the baseline.  Examples are:
·   All code files
·   Compilers
·   Compile / build scripts
·   Installation and configuration files
·   Inspection lists
·   Design documents
·   Test reports
·   Manuals
·   System configurations (e.g. version of compiler used)
Team System provides this capability through the concept of Work Item Tracking. A work item can define any unit of information that is part of the software development lifecycle. It can be any of the abovementioned Configuration Items. A powerful feature of Team System is that you can link work items to other artifacts, this allows your developers and manager to track which changes are related to which requirements, bugs.

·   Configuration Control:   Refers to the policy, rules, procedures, information, activities, roles, authorization levels, and states relating to the creation, updates, approvals, tracking and archiving of items involved with the implementation of a change request.
With Team System policies can be created and enabled inside Visual Studio that will enforce following standard check-in conditions, as well as others:
·   Clean Build: The project must compile without errors before check-in.
·   Statis Analyses:  Static analyses must be run before check-in
·   Testing Policy: Smoke-tests, unit-tests must be run before check-in
·   Work Items: On ore more work items must be associated with the check in.
You can also configure Team System to trak additional check in notes.  The standard notes in MSF Agile are: Security Reviewer, Code Reviewer and Performance Reviewer.  As with the most part of Team System, this is again fully custumizable.
Roles and authorization levels are covered by Team System Security.  By locking down privileged operations to only a few members, you can ensure that the roles within your team are always enforced.  You can for example specify which team members can administer, start or resume a build and so much more.

·   Status accounting: Recording and reporting the status of components and change requests and gathering vital statistics about components in the product.
Team System is hosted on SQL Server 2005 and its built-in reporting capabilities. As many as 50 pre-built reports are expected to ship with the release of Team System. These will include reports on: Project health, code churn, test pass, test coverage, active bugs,... These reports are directly available from the Reporting Services report manager portal or can be viewed on the project portal.

·   Configuration verification and audit: Verify that a product’s requirements have been met and the product design that meets those requirements has been accurately documented before a product configuration is released.Before acceptance into the live environment, new Releases, builds, equipment and standards should be verified against the contracted or specified requirements.
This is where the Dynamic Systems Initiative (DSI) comes into play.  DSI is a way to design for deployment or to put it in another way to design for operations. Key features of DSI are:
·   The visualization of systems and services
·   tracking of each system or service to properly describe it to another system or service.
It will in other words allow solution architect's to validate their design against an infrastructure architects's datacenter design and visa versa.  The first Microsoft implementation of DSI will be called the System Definition Model (SDM).  SDM describes your application and its deployment environment in layers.  The following layers are defined:
·   Application
·   Application Hosting
·   Logical Machines and Network Topology
·   Hardware
Microsoft will furter expand on their Dynamic Systems Initiative and will utilize the SDM model in Systems Managment Server(SMS) and Microsoft Operations Manager(MOM).

·   Build management:   Manage the processes and tools that are used to create a repeatable and automatic build.
Team System's Team Build provides an out-of-the-box solution to meet following requirements:
·   Get source code files for the build from the source code repository
·   Run static code analysis
·   Compile sources
·   Run unit tests
·   Save code churn, code coverage and other build information
·   Copy the binaries to a predefined location
·   Generate reports
The build automation tool in Team System provides you with an out-of-the box solution to meet these requirements.  The wizard helps you create an automated build script. Since the execution engine of Team Build is MSBuild, you can customize the process and accomplish any number of custom tasks.

·  

Process management:   Enforces consistent processes and promotes user accountability across the application life cycle, resulting in communication and productivity improvements enterprise-wide.
Team System will include two Microsoft Solution Framework(MSF) methodologies:  

·   MSF for Agile Software Development
·   MSF for CMMI improvement
While in MSF Agile it is more important to respond to change than to follow a plan, it is my understanding that MSF for CMMI process improvement is the only MSF methodology that fully provides process management support.  It is an excellent process to use on your project if your company is looking to achieve a measured, baseline competency in software development.  In short it will bring the process management side of the application lifecycle to your company and project.

·   Teamwork:   Controlling the work and interactions between multiple developers on a product.
One of the great advantages of the fact that Team System is such a highly integrated environment, is that it can instantly improve the communication on your team. All members of a team need to be in sync, watching their managers and need to work together to get their assignments done in time. Managers can always consult what the state of the project is, how much code churn is in the nightly builds, when the project has reached zero bugs,... Your team must constantly manage the same requirements, tasks, source, code bugs and reports. Because of the ways these are integrated in Team System it will automatically strengthen the communication pathways of your team and software.

I hope that by now you will agree that Team System is the new do-it all tool in the SCM's toolbox.  Team System is not a methodology or process but it integrates very well with the MSF methodology. Team System integrates most of the current tools that a Software Configuration Manager has dreamt about.  Microsoft will provide third party tool providers and yourself with an SDK that allows you to take advantage of common functionality that Team System provides.  Well, I cannot imagine a SCM that is not eagerly anticipating the re lease of Visual Studio 2005 Team System, but only time will tell.

SCM and Team System, a marriage made in heaven? http://steven.wilssens.net/PermaLink.aspx?guid=b7fceb49-13fe-4216-a59e-0eb36c195ab7 http://steven.wilssens.net/SCMAndTeamSystemAMarriageMadeInHeaven.aspx Mon, 11 Jul 2005 20:47:44 GMT <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 120%"> <span style="FONT-SIZE: 10pt; LINE-HEIGHT: 120%; FONT-FAMILY: Tahoma"><font color=#000000>In a previous post I stated the goals of successful configuration management and as you undoubtedly realized they are not easily accomplished in the field.&nbsp; Now I'll try to give you an insight on how Team System helps you to tame this untamable beast.</font></span> </p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 120%"> <span style="FONT-SIZE: 10pt; LINE-HEIGHT: 120%; FONT-FAMILY: Tahoma"><font color=#000000>A good SCM process makes it possible for developers to work together on a project in an efficient manner, both as individuals and as members of a team.&nbsp; A development team must constantly manage requirements, tasks, source code, bugs and reports.&nbsp; Gathering each of these item types in the same tool strengthens the communication pathways of teams and software.</font></span> </p> <p> <span style="FONT-SIZE: 10pt; LINE-HEIGHT: 120%; FONT-FAMILY: Tahoma"><font color=#000000>Based on the goals mentioned in the previous post on SCM I'll try to indicate how Team System helps you to accomplish them:</font></span> </p> <p> <table id=Table1 style="FONT-SIZE: 10pt; WIDTH: 100%; FONT-FAMILY: Tahoma"> <tbody> <tr> <td style="WIDTH: 3px" valign=top align=right> <font color=#000000><span>·</span><span style="FONT-WEIGHT: normal; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-VARIANT: normal"> &nbsp; </span></font></td> <td style="WIDTH: 100%"> <span></span><em><font color=#000000><strong>Configuration identification:</strong></font></em><span style="LINE-HEIGHT: 120%"><span><em><font color=#000000>&nbsp; This is often reffered as the process of recognizing the baseline applicability to a set of configuration items. It refers both not only to source, but all documents that contribute to the baseline.&nbsp; Examples are: <br> </font></em></span> <table id=Table2 style="FONT-SIZE: 10pt; WIDTH: 100%; FONT-STYLE: italic; FONT-FAMILY: Tahoma"> <tbody> <tr> <td style="WIDTH: 3px"> <font color=#000000></font></td> <td style="FONT-SIZE: 10pt; WIDTH: 100%"> <span><font color=#000000>· <span>&nbsp; </span><span>All code files</span></font></span></td> </tr> <tr style="FONT-FAMILY: Tahoma"> <td style="WIDTH: 3px"> <font color=#000000></font></td> <td style="FONT-SIZE: 10pt; WIDTH: 100%"> <span><font color=#000000>· <span>&nbsp; </span><span>Compilers</span></font></span></td> </tr> <tr style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"> <td style="WIDTH: 3px"> <font color=#000000></font></td> <td style="WIDTH: 100%"> <font color=#000000><span>· <span>&nbsp; </span></span><span>Compile / build scripts</span></font></td> </tr> <tr style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"> <td style="WIDTH: 3px; HEIGHT: 18px"> <font color=#000000></font></td> <td style="WIDTH: 100%; HEIGHT: 18px"> <font color=#000000><span>· <span>&nbsp; </span></span><span>Installation and configuration files</span></font></td> </tr> <tr style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"> <td style="WIDTH: 3px"> <font color=#000000></font></td> <td style="WIDTH: 100%"> <font color=#000000><span>· <span>&nbsp; </span></span><span>Inspection lists</span></font></td> </tr> <tr style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"> <td style="WIDTH: 3px"> <font color=#000000></font></td> <td style="WIDTH: 100%"> <font color=#000000><span>· <span>&nbsp; </span></span><span>Design documents</span></font></td> </tr> <tr style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"> <td style="WIDTH: 3px"> <font color=#000000></font></td> <td style="WIDTH: 100%"> <font color=#000000><span>· <span>&nbsp; </span></span><span>Test reports</span></font></td> </tr> <tr style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"> <td style="WIDTH: 3px"> <font color=#000000></font></td> <td style="WIDTH: 100%"> <font color=#000000>· <span>&nbsp; </span><span>Manuals</span></font></td> </tr> <tr style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"> <td style="WIDTH: 3px"> <font color=#000000></font></td> <td style="WIDTH: 100%"> <font color=#000000>· <span>&nbsp; </span><span>System configurations (e.g. version of compiler used)</span></font></td> </tr> </tbody> </table> </span><span><font color=#000000>Team System provides this capability through the concept of Work Item Tracking. A work item can define any unit of information that is part of the software development lifecycle. It can be any of the abovementioned Configuration Items. A powerful feature of Team System is that you can link work items to other artifacts, this allows your developers and manager to track which changes are related to which requirements, bugs.<br> <br> </font></span></td> </tr> <tr style="FONT-SIZE: 12pt; FONT-FAMILY: Times New Roman"> <td style="WIDTH: 3px; HEIGHT: 34px" valign=top align=right> <font color=#000000><font face=Tahoma><font size=2><span>·</span><span style="FONT-WEIGHT: normal; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-VARIANT: normal"> &nbsp; </span></font></font></font></td> <td style="WIDTH: 100%; HEIGHT: 34px"> <span></span><span style="FONT-WEIGHT: normal; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-VARIANT: normal"></span><span><em><font face=Tahoma color=#000000 size=2><strong>Configuration Control:</strong></font></em><span><font color=#000000><font face=Tahoma><font size=2><em>&nbsp; Refers to the policy, rules, procedures, information, activities, roles, authorization levels, and states relating to the creation, updates, approvals, tracking and archiving of items involved with the implementation of a change request. <br> </em>With Team System policies can be created and enabled inside Visual Studio that will enforce following standard check-in conditions, as well as others:<br> </font></font></font></span> <table id=Table3 style="FONT-SIZE: 10pt; WIDTH: 100%; FONT-FAMILY: Tahoma"> <tbody> <tr> <td style="WIDTH: 3px"> <font color=#000000></font></td> <td style="FONT-SIZE: 10pt; WIDTH: 100%"> <span><font color=#000000>· <span>&nbsp; </span><span>Clean Build: The project must compile without errors before check-in.</span></font></span></td> </tr> <tr style="FONT-FAMILY: Tahoma"> <td style="WIDTH: 3px"> <font color=#000000></font></td> <td style="FONT-SIZE: 10pt; WIDTH: 100%"> <span><font color=#000000>· <span>&nbsp; </span><span>Statis Analyses:&nbsp; Static analyses must be run before check-in</span></font></span></td> </tr> <tr style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"> <td style="WIDTH: 3px"> <font color=#000000></font></td> <td style="WIDTH: 100%"> <font color=#000000><span>· <span>&nbsp; </span></span><span>Testing Policy: Smoke-tests, unit-tests must be run before check-in</span></font></td> </tr> <tr style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"> <td style="WIDTH: 3px"> <font color=#000000></font></td> <td style="WIDTH: 100%"> <font color=#000000><span>· <span>&nbsp; </span></span><span>Work Items: On ore more work items must be associated with the check in.</span></font></td> </tr> </tbody> </table> </span><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font color=#000000>You can also configure Team System to trak additional check in notes.&nbsp; The standard notes in MSF Agile are: Security Reviewer, Code Reviewer and Performance Reviewer.&nbsp; As with the most part of Team System, this is again fully custumizable.<br> Roles and authorization levels are covered by Team System Security.&nbsp; By locking down privileged operations to only a few members, you can ensure that the roles within your team are always enforced.&nbsp; You can for example specify which team members can administer, start or resume a build and so much more.<br> <br> </font></span></td> </tr> <tr style="FONT-SIZE: 12pt; FONT-FAMILY: Times New Roman"> <td style="WIDTH: 3px; HEIGHT: 21px" valign=top align=right> <font color=#000000><font face=Tahoma><font size=2><span>·</span><span style="FONT-WEIGHT: normal; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-VARIANT: normal"> &nbsp; </span></font></font></font></td> <td style="WIDTH: 100%; HEIGHT: 21px"> <span><span><font color=#000000><font face=Tahoma><font size=2><em><strong>Status accounting:</strong> Recording and reporting the status of components and change requests and gathering vital statistics about components in the product. <br> </em>Team System is hosted on SQL Server 2005 and its built-in reporting capabilities. As many as 50 pre-built reports are expected to ship with the release of Team System. These will include reports on: Project health, code churn, test pass, test coverage, active bugs,... These reports are directly available from the Reporting Services report manager portal or can be viewed on the project portal. <br> <br> </font></font></font></span></span></td> </tr> <tr style="FONT-SIZE: 12pt; FONT-FAMILY: Times New Roman"> <td style="WIDTH: 3px; HEIGHT: 21px" valign=top align=right> <font color=#000000><font face=Tahoma><font size=2><span>·</span><span style="FONT-WEIGHT: normal; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-VARIANT: normal"> &nbsp; </span></font></font></font></td> <td style="WIDTH: 100%; HEIGHT: 21px"> <span></span><span style="FONT-WEIGHT: normal; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-VARIANT: normal"></span><span><span><font color=#000000><font face=Tahoma><font size=2><em><strong>Configuration verification and audit:</strong> Verify that a product’s requirements have been met and the product design that meets those requirements has been accurately documented before a product configuration is released.Before acceptance into the live environment, new Releases, builds, equipment and standards should be verified against the contracted or specified requirements. <br> </em>This is where the Dynamic Systems Initiative (DSI) comes into play.&nbsp; DSI is a way to design for deployment or to put it in another way to design for operations. Key features of DSI are:<br> </font></font></font> <table id=Table4 style="FONT-SIZE: 10pt; WIDTH: 100%; FONT-FAMILY: Tahoma"> <tbody> <tr> <td style="WIDTH: 3px"> <font color=#000000></font></td> <td style="FONT-SIZE: 10pt; WIDTH: 100%"> <span><font color=#000000>· <span>&nbsp; </span><span>The visualization of systems and services</span></font></span></td> </tr> <tr style="FONT-FAMILY: Tahoma"> <td style="WIDTH: 3px"> <font color=#000000></font></td> <td style="FONT-SIZE: 10pt; WIDTH: 100%"> <span><font color=#000000>· <span>&nbsp; </span><span>tracking of each system or service to properly describe it to another system or service.</span></font></span></td> </tr> </tbody> </table> </span></span><font face=Tahoma color=#000000 size=2>It will in other words allow solution architect's to validate their design against an infrastructure architects's datacenter design and visa versa.&nbsp; The first Microsoft implementation of DSI will be called the System Definition Model (SDM).&nbsp; SDM describes your application and its deployment environment in layers.&nbsp; The following layers are defined:<br> </font> <table id=Table5 style="FONT-SIZE: 10pt; WIDTH: 100%; FONT-FAMILY: Tahoma"> <tbody> <tr> <td style="WIDTH: 3px"> <font color=#000000></font></td> <td style="FONT-SIZE: 10pt; WIDTH: 100%"> <span><font color=#000000>· <span>&nbsp; </span><span>Application</span></font></span></td> </tr> <tr style="FONT-FAMILY: Tahoma"> <td style="WIDTH: 3px"> <font color=#000000></font></td> <td style="FONT-SIZE: 10pt; WIDTH: 100%"> <span><font color=#000000>· <span>&nbsp; </span><span>Application Hosting</span></font></span></td> </tr> <tr style="FONT-FAMILY: Tahoma"> <td style="WIDTH: 3px"> <font color=#000000></font></td> <td style="FONT-SIZE: 10pt; WIDTH: 100%"> <font color=#000000>· <span>&nbsp; </span><span>Logical Machines and Network Topology</span></font></td> </tr> <tr style="FONT-FAMILY: Tahoma"> <td style="WIDTH: 3px"> <font color=#000000></font></td> <td style="FONT-SIZE: 10pt; WIDTH: 100%"> <font color=#000000>· <span>&nbsp; </span><span>Hardware</span></font></td> </tr> </tbody> </table> <font face=Tahoma color=#000000 size=2>Microsoft will furter expand on their Dynamic Systems Initiative and will utilize the SDM model in Systems Managment Server(SMS) and Microsoft Operations Manager(MOM).<br> <br> </font></td> </tr> <tr style="FONT-SIZE: 12pt; FONT-FAMILY: Times New Roman"> <td style="WIDTH: 3px; HEIGHT: 21px" valign=top align=right> <font color=#000000><font face=Tahoma><font size=2><span>·</span><span style="FONT-WEIGHT: normal; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-VARIANT: normal"> &nbsp; </span></font></font></font></td> <td style="WIDTH: 100%; HEIGHT: 21px"> <span></span><em><font face=Tahoma color=#000000 size=2><strong>Build management:</strong></font></em><span style="LINE-HEIGHT: 120%"><span><font color=#000000><font face=Tahoma><font size=2><em><strong>&nbsp;</strong> Manage the processes and tools that are used to create a repeatable and automatic build.<br> </em>Team System's Team Build provides an out-of-the-box solution to meet following requirements:<br> </font></font></font></span> <table id=Table6 style="FONT-SIZE: 10pt; WIDTH: 100%; FONT-FAMILY: Tahoma"> <tbody> <tr> <td style="WIDTH: 3px"> <font color=#000000></font></td> <td style="FONT-SIZE: 10pt; WIDTH: 100%"> <span><font color=#000000>· <span>&nbsp; </span><span>Get source code files for the build from the source code repository</span></font></span></td> </tr> <tr style="FONT-FAMILY: Tahoma"> <td style="WIDTH: 3px"> <font color=#000000></font></td> <td style="FONT-SIZE: 10pt; WIDTH: 100%"> <span><font color=#000000>· <span>&nbsp; </span><span>Run static code analysis</span></font></span></td> </tr> <tr style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"> <td style="WIDTH: 3px"> <font color=#000000></font></td> <td style="WIDTH: 100%"> <font color=#000000><span>· <span>&nbsp; </span></span><span>Compile sources</span></font></td> </tr> <tr style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"> <td style="WIDTH: 3px"> <font color=#000000></font></td> <td style="WIDTH: 100%"> <font color=#000000><span>· <span>&nbsp; </span></span><span>Run unit tests</span></font></td> </tr> <tr style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"> <td style="WIDTH: 3px"> <font color=#000000></font></td> <td style="WIDTH: 100%"> <font color=#000000><span>· <span>&nbsp; </span></span><span>Save code churn, code coverage and other build information</span></font></td> </tr> <tr style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"> <td style="WIDTH: 3px"> <font color=#000000></font></td> <td style="WIDTH: 100%"> <font color=#000000><span>· <span>&nbsp; </span></span><span>Copy the binaries to a predefined location</span></font></td> </tr> <tr style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"> <td style="WIDTH: 3px"> <font color=#000000></font></td> <td style="WIDTH: 100%"> <font color=#000000><span>· <span>&nbsp; </span></span><span>Generate reports</span></font></td> </tr> </tbody> </table> </span><span><font face=Tahoma color=#000000 size=2>The build automation tool in Team System provides you with an out-of-the box solution to meet these requirements.&nbsp; The wizard helps you create an automated build script. Since the execution engine of Team Build is MSBuild, you can customize the process and accomplish any number of custom tasks.<br> <br> </font></span></td> </tr> <tr> <td style="WIDTH: 3px; HEIGHT: 21px" valign=top align=right> <font color=#000000><span><strong>·</strong></span><span style="FONT-WEIGHT: normal; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-VARIANT: normal"> &nbsp; </span></font></td> <td style="WIDTH: 100%; HEIGHT: 21px"> <p> <span></span><em><font color=#000000><strong>Process management:</strong></font></em><span style="LINE-HEIGHT: 120%"><font color=#000000><em>&nbsp; Enforces consistent processes and promotes user accountability across the application life cycle, resulting in communication and productivity improvements enterprise-wide. <br> </em></font></span><span style="LINE-HEIGHT: 120%"><font color=#000000>Team System will include two Microsoft Solution Framework(MSF) methodologies: &nbsp;<br> </p> > <table id=Table7 style="FONT-SIZE: 10pt; WIDTH: 100%; FONT-FAMILY: Tahoma"> <tbody> <tr> <td style="WIDTH: 3px"> <font color=#000000></font></td> <td style="FONT-SIZE: 10pt; WIDTH: 100%"> <span><font color=#000000>· <span>&nbsp; </span><span>MSF for Agile Software Development</span></font></span></td> </tr> <tr style="FONT-FAMILY: Tahoma"> <td style="WIDTH: 3px"> <font color=#000000></font></td> <td style="FONT-SIZE: 10pt; WIDTH: 100%"> <span><font color=#000000>· <span>&nbsp; </span><span>MSF for CMMI improvement</span></font></span></td> </tr> </tbody> </table> ><font color=#000000>While in MSF Agile it is more important to respond to change than to follow a plan, it is my understanding that MSF for CMMI process improvement is the only MSF methodology that fully provides process management support.&nbsp; It is an excellent process to use on your project if your company is looking to achieve a measured, baseline competency in software development.&nbsp; In short it will bring the process management side of the application lifecycle to your company and project.<br> <br> </font></td> </tr> <tr style="FONT-SIZE: 12pt; FONT-FAMILY: Times New Roman"> <td style="WIDTH: 3px; HEIGHT: 21px" valign=top align=right> <font color=#000000><font face=Tahoma><font size=2><span>·</span><span style="FONT-WEIGHT: normal; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-VARIANT: normal"> &nbsp; </span></font></font></font></td> <td style="WIDTH: 100%; HEIGHT: 21px"> <em><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font color=#000000><strong>Teamwork:</strong></font></span></em><span><font color=#000000><span style="FONT-FAMILY: Tahoma"><span style="FONT-SIZE: 10pt"><em><strong>&nbsp;</strong> Controlling the work and interactions between multiple developers on a product.<br> </em>One of the great advantages of the fact that Team System is such a highly integrated environment, is that it can instantly improve the communication on your team. All members of a team need to be in sync, watching their managers and need to work together to get their assignments done in time. Managers can always consult what the state of the project is, how much code churn is in the nightly builds, when the project has reached zero bugs,... Your team must constantly manage the same requirements, tasks, source, code bugs and reports. Because of the ways these are integrated in Team System it will automatically strengthen the communication pathways of your team and software.</span></span><font face=Tahoma size=2> <br> </font></font></span></td> </tr> </tbody> </table> </p> <p> <font color=#000000><span style="LINE-HEIGHT: 120%"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">I hope that by now you will agree that Team System is the new do-it all tool in the SCM's toolbox.&nbsp; Team System is not a methodology or process but it integrates very well with the MSF methodology. Team System integrates most of the current tools that a Software Configuration Manager has dreamt about.&nbsp; Microsoft will provide third party tool providers and yourself with an SDK that allows you to take advantage of common functionality that Team System provides.&nbsp; Well, I cannot imagine a SCM that is not eagerly anticipating the re</span></span><span style="LINE-HEIGHT: 120%"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">lease of Visual Studio 2005 Team System, but only time will tell.</span></span></font> </p> <img width="0" height="0" src="/aggbug_id_b7fceb49_13fe_4216_a59e_0eb36c195ab7.ashx"> http://steven.wilssens.net/CommentView.aspx?guid=b7fceb49-13fe-4216-a59e-0eb36c195ab7 SCM