Thursday, October 30, 2008

Now we are really talking... VSTS 2010 promises major improvements in software quality! (Part 3)

Back again with the last installment in this blog post going through the big changes in VSTS 2010. Let's get on with the show. I know that I already covered most of the changes in the test deparment in the first part but after watching the session about Team Lab I figured that it was worth a few more rows you can find the session here.

Project Management

There are so many new features here that I wish I had a year ago when starting to adopt the project management parts of TFS at our company (which has been a bumpy ride). The fact that we are getting heirachical work items has been known for a while now but the demos shown at PDC still made me abit warm inside :) ...

It all boils down to the linking stuff where we now have support for both parent/child and predessor/successor relationships we can even create our own if we like, this also means that we have full support for Microsoft Project plans now.

The work item queries have gotten some new stuff as well. A small but nifty feature is the query folders where we can start to group stuff and put permissions on those groups this will make it easier to find the queries for our team members and not get lost in all the noise in the query list.

But a far more important change here is the fact that we can now query based on links and we can put conditions on both the right and left hand sides of the link as well as the link itself. This will enable queries such as give me all work items that still have no test cases assigned to them to give one example. We have some new filtering possiblities such as in group and even though it's not in the latest CTP we will eventually get the possibility to filter based on other fields and not just on constants as today, an example of this could be give me alll tasks where completed time ís greater than estimated time.

We have some new controls for usage within the proccess templates such as a really cool links control that can display and manage links on your work items and also we get rich text support (altough the only thing that get me going here is the fact that we get url support automatically when typing).

We have gotten some major improvements in the integration with Excel 2007, we now have a ribbon control for accessing our team features and the workbooks we produce containing TFS data will support conditional formating that actual sticks when refreshing the TFS data, we even get to include our own columns with data in the spreadsheet if we want. Another cool Excel feature is the fact that we can handle heirarchical structures as well.

We also have a new Excel workbook that ships with the product that helps out with the day to day stuff needed in an project (it's aimed at agile project management but has a lot of value for any one planning project resources) such as information about the iteration backlog and capacity planning of the assigned resources we quickly can see how the load is balanced between our co-workers in the project. A burndown chart is also included here there are more features in this workbook but I'll cover them later in a more detailed post once I have gotten around to play with the bits abit.

Something that is really really cool though is the support for basing a Excel report on a WIT query that you can play around with to your hearts content. Now we don't have to involve a developer to get a report done (altough we developers are still valuable when it comes to more complex reports...)

The project dashboard/portal has been totally revamp but this is not included in the CTP bits.

Lab Management

Is a new SKU in the Team System family which focuses on providing a way to manage your test servers in an efficient fashion provided that you run them using virtualization.

The product will consist of agents on the lab machines and a controller service running probably on the application tier. The user interface is hosted in the brand new WPF based client for test management codenamed "Cameo".

Basically what this drills down to is a virtual machine manager of sorts that has been integrated into the workflow of the ALM process. We can create libraries of virtual machine and then create test labs based on these images that can easily be handled when testing and reporting bugs in conjution with actually using the same environments for bug reproduction.

Once we have an lab inplace we can star with the really cool stuff. When we report a bug from "Cameo" we have the possiblity to include a link of the lab environment in the bug report based on a snapshot that we create in conjuction with reporting the bug. The developer then loads up the bug in VSTS and clicks on a link to the environment which will bring up some options. We can either revert to the snapshot (this will affect the state of the lab for the testers as well) or we can connect as is. In the final product we are to see another option that will enble us to create a copy of the lab that we as a developer can reproduce and debug without actually disturbing the testers (this will be achived with some sort of network fencing technique that will allow for multiple machines with the same name and ip to run simultaneously).

Altough it look very nice the product has a really step pre-requite list and requires a lot of commitment (you will need to have someone being in charge of lab management):

System Center Operations Manager
System Center Virtual Machine Manager
Windows 2008 running Hyper-V or VMWare ESX Server
Also it will require vast ammounts of storage space due to the ammount of snapshot and copies that will be generated.

I am a bit dissapointed that Microsoft hasn't yet included some sort of deployment engine yet but I expect that we are going to see this in the future as well since this will really complete the package. In the presentations at the PDC we only get some new activites for restoring and snapshooting the lab environment the rest is left to xcopy deployment which just doesn't cut it in the real world.

You can expect future post regarding this product form me since it lays close at heart in our efforts at my company with how we are automating our lab management.

Wednesday, October 29, 2008

Now we are really talking... VSTS 2010 promises major improvements in software quality! (Part 2)

Supercalifragilisticexpialidocious... I just got back home from watching the musical Mary Poppins at the local opera with my teenage kids. It was a real treat, the performances where outstanding and the play itself leaves you with a really good vibe that anything is possible if you just set your mind to it.

Anyways previously this day I spent my time divided equally between following the PDC online and taking the middle son to the doctor and feeding the whole family :) ... I manage to watch two talks on VSTS 2010 the one on TFS by Brian Harry and one on agile development using TFS by Lori Lamkin and boy are we in for a treat. Yesterday I blogged about the news in the Testing and Architecture areas, today it's time for build automation, parallel development and project management.

Build Automation

Going from TFS 2005 to TFS 2008 we go a more or less rewritten build automation system and it seems that this is happening again, what is happening this time is that the build script is now a windows workflow which allows us to do all sorts of stuff such as parallel activities and much much more. Apart from the fact we get a graphical view of the actual build script and all the strengths brought to the table with workflow I'm abit worried how this will affect people like myself who have invested heavily in the msbuild based build projects (I'll get back to this topic in future postings when I have had more time to play around with the bits).

Another cool new feature is the build agent controllers that lets you pool build agents so that you do not have to dedicate a particular machine to a build project but you rather have a bunch of them serving you ondemand. A very cool feature here is the ability to tag the agents and then perform conditional evaluations based on these tags in your build agent selection process.

Also if you are a fan of continuous intergration you are going to love the feature called gated checkins which lets you configure a build trigger to occur prior to actually commiting the changeset to version control and if the build breaks the changes will be prevented from making it into the currently stable branch. You could compare them to optimistic and pessimistic locking strategies CI being optimistic and GC being pessimistic.

Prior to VSTS 2010 we have had to endure a rather messy build report altough it was complete and detailed it was a pain to work with, we have now gotten a completely rewritten report that include features such as a minimap with errors and warnings highlighted to quickly travese the vast ammount of data in the log. The summary section quickly gives you the details on any errors and warnings no more digging through the log files for that. The histogram over the last few build at the top is also really neat it gives you a quick input on what state the build has been in and how long you should expect to be waiting for completion.

Finally we have a new buddy report to the Build Quality Indicator which is called Build Success Overtime this gives us a nice heathmap over the build status for the last month this report could be really usefully as an information radiator upon a flatscreen in a project room I think.

Parallel Development

When working with branching and merging in TFS there has been some challenges in knowing the exact state on things which has lead to the fact that people are vary of using forward / reverse integration patterns for enabling a good environment for parallel development.

Now we have gotten a whole slew of new features to remedy this fact. First we have rollback incorporated into the gui and we have conflict during the merge process the conflict resolution is no longer model, you will instead find it incorporated into the pending changes window this will save tons of time when tracking down problems in merge conflicts.

A branch has gotten some elevated properties in the source controll explorer now it is not just a folder anymore. We have a specific icon to visually indicate that it is of the type branch and then we a some properties such as the possibility to create an description and an assign an owner.

The anotate feature which is great now even got greater, now we will not just se that a merge brought a change into the file in our branch but we will rather get the exact changeset information that the changes originated from even though they where not performed in our current branch. This is great stuff!

The final feature I want to point out I actually intended to write and implementation for myself (I still have the code for it so I might decide to dust it off and package it up for use in TFS 2008) although the fancy graphics would have been some what challenged in comparision to what we will get in VSTS 2010. The feature I'm blabbing about is the new branch visualization available through the show history and track changeset actions. Now you will get an hierarchical view of the changesets and their relationships including the full path information directly in the query results. And the track changeset will give you the possibility to visualize both from a timeline and organisational view of the changeset. The timeline view will show you which branches has incorporated a changeset and when and the organisational view will let you see the parent/child relationship along with the direction that the changes has travelled between the branches.

An super nice feature in these new branch visualisations is the fact that if a changeset is missing from a particular branch we can simply drag and drop it onto the branch we want to incorporate it in and viola it will trigger a merge.

...Phew... this post is starting to get a bit longish and I am starting to get tired so I'll continue with the project management stuff tomorrow take care until then!

Tuesday, October 28, 2008

Now we are really talking... VSTS 2010 promises major improvements in software quality! (Part 1)

It's been awhile since I last posted :) ... I had a silly notion about keeping blogging during my parental leave but it didn't really turn out that way. I have been spending the last 4 months with my kids and actually managed to read a bunch of non technical books which was very nice and relaxing.

Anyway let's get on with the real post, I figured that I'd start following the developments on VSTS 2010 again now when the newest CTP was released in conjuction with Microsoft PDC08 (the only drawback with being on parental leave gotta be the fact that I was unable to attend this conference).

I'm really excited about some of the new features in VSTS which are promising a really huge leap in the ability to produce high quality software if applied correctly. The current release is focusing heavly on the Architecture and Test Editions of the product.

ARCHITECTURE EDITON

I have never really bothered with this edition of VSTS before it has brought way to little to the table in my taste historically. But boy have I changed my mind about this I'm thrilled about the positbilitied with using the new Layer Diagram to perform validation of architecture compliance during the build process this is really nice. Also the layer diagram is something that most of us produces anyway so it's good to see that we can use it for something else than presentations of the conceptual architecture.

Also the architecture explorer which let's visualize dependencies between namespaces and classes looks very nice and will give us a nice way to investigate as well as produce documentation regarding the dependencies of our solutions. The visualizations looks very nice and they even carry semantics with them, for instance if there is a heavy dependency between two namespaces the line illustrating the link is thicker than is the dependency just concerns a class or two. The links lets you we information about the dependecy and navigate to the code that is causing the dependency by clicking and drilling down in the diagrams.

The fact that Microsoft has joined the OMG and finally included UML support in the product is also nice although what I'm really excited about here is the feature that let's put the cursor in a method and then say generate sequence diagram and viola VSTS will parse the code and produce a diagram for us. We can even filter the pasing by specifying the call depth and excluding namespace that we don't care about. I guessing that we can save alot of time we looking for bugs and trying to improve our codebase using this feature.

Finally if I understand this correctly we can produce these diagrams using the Architecture SKU and they will be read only in all the other SKU's which will make them really usefull in illustrating problem areas in the code.

TEST EDITION

The manual testing parts of VSTS has not really been up to speed with their competitors such as HP Quality Center, but in this release this is changing when we get a totally new application called Cameo that our testers can use to plan and perform their tests. The really neat thing about this is that we as developers will get a slew of new information in conjuction with the bug report. Microsoft is aiming at eliminating the No Repro effect (or as it's also known "hey it works on my machine"). Some of this information that we get is a video recording of the actual test run, system information concerning service packs and such and a historical debugger log (if you haven't looked at this you have to get a peak at it, you get a black box flight recording of what your application did before the failure which you can playback after the fact).

When we find and fix our bugs or simply make a change to our code we have a new feature called Test Impact Analysis which will analyse the changes in the background and produce a list of impacted tests so that you don't have to run all your tests for a small change this can improve productivity abit but I think it will really shine when you start to consider your changes and their impact on the test suite (provided that you have a fairly good coverage of your code), say for instance that you are changing a function and your test impact analysis goes of the chart and give you a list of thousands of test, you might want to consider getting a second oppinion on your change and bring in someone more senior on the change.

Another really nice feature that we get is the concept of coded UI tests which in it self is nothing new (and I'm guessing that we will have some v1 issues here also) but what is really exciting is the fact that the test code produced to drive our is regular .NET code so it can be C# or VB.NET finally we get ride of all those nasty script based tests (as far as I know this is unique in the marketplace). Another nice thing about the coded UI test is that they build upon the existing unit test framework which we already know and love (atleast I do) all in all it looks really nice.

... It's getting late and there are a ton of new features that I haven't talked about so I guess I'll have to get back to you later with that.

You can get the bits from the new Visual Studio 2010 and .NET Framework 4.0 CTP Feedback site or you can grab it using FDM following the instructions in Brain Kellers post A More Reliable and Faster Download Experience for VS2010/ VS08 VPC's

Some links getting you upto speed on the comming features:

Be sure to checkout Cameron Skinners presentation from PDC08 in LA which is available online

Radio TFS is currently running a series of podcast titled Road To Rosario which I recommend that you listen to
Road To Rosario - Architect
Road To Rosario - Test
Road To Rosario - Developer

Finally Channel9 had a special on Visual Studio Team System 2010 you can find more info about it here