Microsoft Visual Studio Team System Day
I attended the Microsoft Visual Studio Team System Day in Milano today. They did not put the slides in the goody bag but you can check out the slides from Visual Studio 2005 Team System at DevConnections as they are virtually identical.
I had a rough idea what would be in Team System but I did not imagine how many features they are putting in it. My administrative summary : Team System gives you the core features of Rational Rose for managing the life cycle of a project at a fraction of the cost. I will not cover all the features presented today but mention some of the ones that I like the most.
When you start a new project, you define the "model" you want to use. The bits I saw only supported the "Agile" project model but there will be several project models available by the time it ships late this summer. What really impressed me with the product is that it is highly customizable. So, if you are an Extreme Programming fan you can create your own model by editing the XML files that define the model. You can also tune the built in models to get the behavior you want, for example:
- All check ins must be tied to a work item
- All code must have an unit test
- All code must have passed code coverage testing before being checked in.
Microsoft has finally understood one thing: as enterprise applications get more complex you have to get the systems architects and development architects working together. I share office with the systems architect on my project and I believe it is crucial to developing scalable and robust enterprise solutions. There are obvious benefits like preventing me from design a system that cannot be deployed in production, but there are also more subtle but very important benefits by working closely together with the systems architect. I am a lot more lot more sensitive to IT issues as the IT guys come to our office when there are problems. Knowing what problems they face help me design better systems (so they don't break my balls in the future :-)
Team System allows the software architect to design logical services like "Payment Web Service" and specify the requirements of the service like: requires .NET 1.1, must talk to the DB, etc. It is possible to "drill in" and specify the actual interfaces. Change the interface and the code gets updated and vice versa (cool!). The IT architect works on a logical data system like "hardened front end web server", "database server" etc and the architects can decide where the components should be deployed. The neat feature is that Team System alerts you when you try to "deploy" a component that needs DB access on a DMZ server that does not have data base access.
Rating: Neat but you can accomplish the same with Visio if you work with a skilled IT architect.
Development / Testing
These items speak for themselves, and if you are not impressed you are not a developer
- Static Code analysis
- Code profiling
- Color coded Code Coverage
- Integrated Unit Testing
- Load Testing:
- Graphical configuration by default but you can choose to generate .NET code which you can modify any way you want
- Load test anything: recorded scripts or the unit tests already implemented by the developer
- Simplified performance analysis: choose the server "role" (web, db, …) and the tool shows you:
- Relevant performance counters
- Warnings if they are outside normal range
Rating: Anything that helps me write better code is a plus.
Microsoft did the right choice and threw out Visual Source Safe with the trash. The new version control system is Web Service based which finally makes it possible to work from a remote location with a decent performance. It also means that there will be (3rd party) clients for the most important operating systems. In addition to the tight Visual Studio integration there is also a light web client.
They add one simple feature that is incredibly useful: shelving. I don't know how many times I have been working on a piece of code when something more important comes up that touches the same project. Different people deal with it in different ways; backup to .zip, branch etc. The new version control system allows you to put the code on "the shelf". It does -not- show up in the "official" branch of the code so nobody gets your unfinished code by mistake. Later, when you have finished the urgent issue, you can take the code down from the shelf, check it in or share it with other people on the project.
Other neat features
- Parallel development
- Changes encapsulated as a change set
- Easy roll back/forth
- e-mail/Instant Messenger notification
Rating: Finally a real version control system!
Management, Work Items and Reporting
The Work Items are at the core of the process. A Work Item can be a new feature requested by marketing, a bug found during a code review or anything that requires "work". The important thing is that the work items are tightly integrated with the whole process. The developers sees the work items allocated to them inside the Visual Studio GUI and associate them with check ins in the version control system. The PMs can finally get an up to date project status by checking the project items.
There are no new tools to learn: the work items can be modified by Visual Studio or accessed and edited from familiar tools like Microsoft Excel and Microsoft Project. There should no more be such a thing as an out of date project plan. The new Work Item system makes it easy to find out what a person is working on an and find out who is working on a particular feature.
Not only does Team System come with its own reports; it comes with its own portal. It uses the SharePoint services (no license required) and SQL Reporting to give anybody instant access to the status of the project. Everything that has some sort of metric associated with it ends up in the portal: code coverage statistics, version control statistics, performance testing results, open bugs etc. One powerful tool for monitoring the status and health of a project.
Rating: The project management bit is not my cup of tea but I like the fact that the Work Items is at the core of the Team System and that all metrics end up in a central Data Warehouse.
This rocks. The build system has several must have features:
- Builds are reproducible. The system gets the latest version of the code and all configuration settings and makes a build with a specific number so the build can be repeated at any time with the same result.
- Work Items are automatically update with build number. This means that it is snap to find out which issues are fixed in a build or to find which build an issue was fixed in.
- Builds can be scheduled or run on demand
- Loads of reporting and error handling options.
Rating: I want it now! I hope it is scriptable so we can extend the build process to include other environments like Java.
A very interesting introduction to Team System although a couple of demos has the BillG effect (Virtual PC blue screened at one point). I left the meeting with a feeling that the whole system is well integrated and highly configurable. There are features that will not make it into Visual Studio 2005 like deployment to servers but they are working on that and other cool features for version 2.
Get the latest news from Team Foundation blog