Yesterday, my husband told me about the new funky WPF client for TFS and a couple of minutes later a colleague of mine had installed it and we were testing it. The UI isn’t all self explaining but it looks promising. I hope I can test it better next week.
Here is the link if you want to try it out
From a project manager’s point of view
On 2009-06-25, I and a colleague listened to a seminar concerning news in Team Foundation Server (TFS) 2010. We are currently using TFS 2008 mainly for source code handling and tracking progress (using the work item tracking functionality) during projects. Here are my notes.
TFS 2010 include a new client, especially for testers, Test Essentials or Test & Lab Management. This will mean that to be able to work effectively as a test leader or tester, you don’t need a Visual Studio installation. It is today unclear how licensing will work with the new client.
The integration with Microsoft Office require Office 2007.
SQL 2008, SP1 is required.
You can run a VS 2010 client against TFS 2008 SP1 and using patches, a user can run VS 2008 against TFS 2010. This enables a step by step upgrading of the environment.
The installation of a new server is complicated and takes a lot of time. You can though make the installation first and make all configuration in a second step, This means that the person responsible for installation does not need all configuration variables to complete the installation.
The possibilities for load balancing has been increased which would enable us to runt TFS on multiple servers and also make use of several SQL Server.
Work item tracking
The most important change here is the possibility to not only link work items but actually specify how items are linked. You can for example:
- Specify a hierarchy. This would mean that we can specify which tests are included in a test plan or which tasks belong to a product backlog item.
- Predecessor/successor relationship. This would mean that we could specify that one task is dependant on the for filling of another task.
- Related items of a specific work item type. This would mean that we could specify requirements in the form of tests and we could then specify on a task Definition of Done in the form of which tests are to be passed to see the task as completed.
A smaller change is that you can group different work item types to ease the creation of reports and queries. Using our current development process, we have no need for this.
The reports are as before available in Reporting Services format but there is an increased number of Excel reports, which also use the data warehouse. This would make us less dependant of reporting services for our project management.
There is also a specific report called Agile Workbook. In this, a number of reports, focused on the product owner and scrum master roles has been gathered.
The concept of Gated Build is introduced and means that when a developer checks in, he can make a test build before an actual checkin. This would better hinder checkins which breaks the build.
The build scripts use Workflow 4, which enable a more graphical view of builds.
TFS Admin Console
A new client, targeting the administrator wanting control of his TFS and include the functionality which an administrator needs.
Test & Lab Management
This is a Windows client which does not require Visual Studio and target the needs of the tester. Here a tester can set up test manuscripts, run tests and report bugs. What was also really interesting was that while running tests, a tester can choose to record his steps and when filing a bug, he can automatically send a film or pictures of the situation. The recording can then also be used when verifying that a bug is fixed: the macro retakes all steps to the failing step, which makes the validation faster.
What also was interesting was the possibility to set up virtual environments for different test scenarios, for example different cultural settings and configurations. Since a test is run in a specific environment, we can keep better track of the environment in which the tests are run and not run. Also, when filing bugs, a snapshot of the environment at the time of the failure is possible.
Visual Studio for Architects
The seminar did not cover functionality in Visual Studio but notable is the inclusion of modeling in UML using Visual Studio. Use cases and processes can be directly modeled in Visual studio and linked to code and work items. Also, it is possible to automatically derive a model from a current system.
Since this is stored in the source control system, the models would be source controlled, which means that you can track changes of the system and even see which checkins have changed the model.
The visualization of a search result has been improved since you can view a tree view or a link of the items and their directly related items. You can also click and drag to move work items in the hierarchy, for example if you want to move tasks between sprints or product backlog items.
Queries can now be collected in folders and you can also make rights settings these folders to hinder users from accidently changing common queries.
You can in TFS see graphically how branching and merging has occurred and using a graphical tool merge.
The user interface in the web access has been improved and include a dashboard functionality to enable views which are specific for the different types of users.
I’ve already posted a bunch of posts on how I use and have used TFS as a support in our scrum projects. Elegant Code have now published an interesting presentation with some hands-on advice and comparisons. You can find the presentation here. Observe that the presentation is not for beginners. You need to understand the basics behind work item tracking and is in the mode of already using TFS but thinking about which work item template and which tools are appropriate.
A note to the presentation, though. Escrum won’t be updated in the future so even if you were considering transition to that template, you should probably rethink your decision. Myself, I’m using Conchango’s Scrum For Team system and EPIServer Scrum Dashboard.
Here more about the future of escrum by bharry.
I’m currently using a lot of Microsoft Project to keep my distributed stakeholders updated since the scrum dashboard just works for the current sprint and the 2008 web access isn’t very… accessible. The stakeholders can’t get the overview they need. So, I spend time on separate Microsoft Project files with the long term plans (as described in a previous post) and I keep the product backlog in TFS.
So, I was just thrilled by the images on BHarry’s blog, describing the new features for us non programmers. Finally, I can really invite my stakeholders to keep themselves updated on the level they need.
The dashboard looks awesome! Here are two examples:
For me as a product owner, I of course long for the hierarchical work items:
If I still want to show Gantt charts, I can (if all goes well) use the upgraded Project Integration, since it conserves the hierarchy. This is the main reason I don’t use the integration today.
I’m also very curious about the Sprint planning functions
So, what more can I say: JUST BRING IT ON!
Yes, I wasn’t supposed to do this just yet, but since the number 1 request after the last post was just how I use project during an agile Project, here goes.
1. Fix the settings
Tools—>Options is the first place to go. I start with the calendar settings setting a focus factor. In the example below, I use a 25 hour working week:
I then move on to the Schedule tab and change assignment unit to Decimal and Duration to Weeks. Default task type should be Fixed duration (without effort driven) or Fixed Work, depending of what you like but here I use Fixed Duration.
I move on to the Calculation tab and deselect Updating task status updates resource status:
I confirm with OK and move to Tools—>Change Working time.
This dialog box works differently in different versions of Microsoft Project. In one of my previous posts, I described it as it works in version up until 2003. In version 2007 you select the Work Weeks tab and click Details.
Select all working days, Set day(s) to these specific working times: and the time you specified in Tools—>Options.
Add other holidays and free time. In Project 2007 you add a new exception, specify dates and click Details. There you can specify that these times are non working. (I think the new dialog box in 2007 is really confusing so make sure that the days are really off. It should look something like this before you click OK:
Then I double click the time scale and set the Middle Tier:
And the Bottom Tier:
Then I select Format—>Grid lines and set Gantt rows and Bottom Tier column as dotted:
I insert the column Work and now I have a Gantt chart which looks something like this:
I set the Project Start under Project—>Project Information:
Confirm with OK.
If I just want to make a simple plan, I just enter the sprints and add the sprint length in Duration:
I then link the sprints to each other (for example by dragging the bars to the next sprint:
You then move on to the Resource sheet which you can find under the View menu.
Here you enter your resources and now you see why you changed the metric for units: instead of talking percentage you specify how many guys you have of each type. Of course you can enter names here instead. I do so when different resources are available during different parts of the project.
The result looks something like this. As you can see I can see how many man hours we can count on during each sprint and this gives you an idea of how velocity might fluctuate due to resource changes.
Now I can update status, take out reports, etc on a project level. For example using the Task Usage view:
Or the resource usage view:
Observe that you can right click the chart part of these views and add Baseline values and Actual values if you wish to view or update this.
But during the sprints then? Well, I use other tools then in the form of TFS and the Scrum dashboard based on Conchango Work item template. I have no need to track this double, so I don’t use the Project integration. Project is good for planning and follow up plans, not for keeping requirements or priorities,
If I’d used Project during the sprints, I would create a new project file for each sprint and insert hyperlinks between the files. Just so I focus on that sprint and don’t mix up the metrics.
And this is the full extent of my using Project in an agile project. The usage of the calendar functions makes it easy to calculate how much man hours we have available and since I use the Gantt chart form, it is easier to show the stuff for managers.
Yes, you still have the risk that “add a new resource late in the project” looks great in the calculations, but that is up to me to debate with the stakeholders. To make them understand the logic and the effects.
Yesterday, we took yet another step in our slow transition towards a more agile software development. As I’ve explained earlier, we use Team Foundation Server‘s work item tracking with the Scrum for Team System work item template and the Scrum Dashboard from EPIServer for daily updates. But with us I mean the developers, not the business people and not the acceptance testers.
But the other day, one of the business responsible started asking questions concerning who’s, and what’s and when’s in a project where I’m not exactly involved but where I function as an agile coach. First, I started looking myself, and then realized what I was doing. So, instead, I asked him to look for himself. Now, you agile warriors might argue that if we’d been using post-its he could have gone and looked for himself. But he works in Norway, so that is easier said than done when our developers are in Sweden.
I gave him a crash course in how he could use the scrum dashboard (read only rights) and he was very happy to see that he could now look for himself.
It was less than an hour when another person approached me, asking about the same question. This guy is both an orderer and a supplier of material. Since he’s our interaction responsible, developers are often dependent on him supplying them with sketches and suggestions. First I considered just giving him the same read-only rights but then I realized that he should also be considered part of the team. One of our team members had registered an impediment which stated that he was waiting for material from this guy. So, I gave him some read and write rights instead and told the guys that from now on they should assign him on tasks and impediments like they do with each other. This became a step towards integrating the business people into the development teams and processes.
I’m currently involved as an administrative resource (you could say something of a scrum master even if we don’t use scrum for this project) in a very short project which has many resources. The resources are divided into multiple teams with shared resources and many dependencies between the tasks of the different teams.
We decided on using Team Foundation Server with the Conchango Scrum For Team System Work item template and EPIServer’s Scrum Dashboard. We are as I mentioned not using scrum but are moving in that direction and by slowly introducing some of the artefacts and tools, I hope to build an understanding for what we want to accomplish. Most of the guys had never used the dashboard before but they loved it. We sit in an open space but with this big a crew, it is hard to get a picture of how things are going for the other teams. Hence, the dashboard and scrums of scrum.
It is really interesting to see how these simple tools work in an enterprise environment. Having only handled one scrum team at the time, this is almost amazing to watch. I can’t wait introducing scrum to these guys and girls.
Think about this if you’re using the EPIServer Scrum Dashboard
But, back to the subject. Since people are new to the tool and I want them to see WHY we’re using the tool, I’ve taken upon myself to fill the product backlog and help out creating the first tasks on the sprint backlog. With so many teams, you can imagine that this takes some time. And since I’m not familiar with all the terms and systems, I can hardly guess what they mean.
So, what I did was that I used the team explorer to create a product backlog item. Then I created related sprint backlog items by right clicking the product backlog item and selecting Create Linked–>Sprint backlog item. Then if the next product backlog item shared many attributes, I right clicked the first product backlog item and selected Create Copy–>Product Backlog item.
Let me put it mildly: don’t do that. What happens is that Create Copy also creates a link and when I then opened the Scrum Dashboard the sprint backlog items of the first product backlog item was instead drawn on the latter product backlog item.
So, instead I created all the product backlog items using Copy from, and then I added the sprint backlog items. I guess the same problem occurs if you do the same with work items of the work item type Bug.