Sunday, May 11, 2008

Why Team System?

I'm a HUGE fan of Visual Studio Team System. I think the software development industry is in major need of a more structured and disciplined approach. Developers have long enjoyed the freedom afforded them by the nascent technology. Hackers were crucial in the early days of the computer revolution. These lone rangers were the innovators researching the technology before business even understood how they would use it.
However, now the tide is turning. The majority of custom application development done today is commissioned in order to answer a market need. Line-of-business applications are assembled by many people working together in a variety of roles. As the size of development projects has grown, so has the need for improving process and tools. In the past, these things were arguably overhead that slowed down the innovation.
I think it's imperative our industry embraces this trend. I want to push innovation as much as the next futurist. However, business people and general consumers look at software as a necessary evil to get things done or something they are forced to use due to company policy. While underground R & D and hacker innovation was enough in the past, today's larger efforts require the support of businesses and end-users.
I think Microsoft Visual Studio Team System seeks to address this need. Giving development teams the platform for process and the tools they will need to improve communication for distributed development, mitigate risks to promote project success, and reduce the cost of development and maintenance.
Visual Studio Team System is made up of several SKUs. The sheer number of features in the total product is as intimidating as the price tag. If you haven't looked into the various parts, here is breakdown of what I like about each one:
Team Foundation Server 2008
By far the most critical piece of VSTS, the server component replaces your crappy source control software (you are using source code control, aren't you?) with a truly enterprise-ready system. How do I know your source control system is 'crappy'? You are most likely either using SourceSafe or some open source system and getting exactly what you paid for.
Additionally, the metrics capturable in the Team Foundation Server data warehouse will give you quantitative metrics exposing exactly what's going on in your projects. This includes work item and bug tracking as well as tracking the quality of your code and automated builds.
(Note: This product works well in a Java-based environment as well!)
Test Edition 2008
The most likely product to change your current development process and improve the quality of your projects. Test Edition adds to the automated unit test capabilities in Visual Studio Professional Edition by giving you the ability to incorporate manual tests, recorded web tests, and load testing into your project. The most useful feature is code coverage (also available in Development Edition). Even if your application passes all of the tests written for it, that statistic likely means nothing if the code covered by those tests is 25%. Test runners simply publish their test results to a build and optionally include code coverage metrics produced by any combination of manual or automated tests.
Database Edition 2008
For a variety of reasons (good and bad), software applications still include a lot of business logic in the database (i.e. stored procedures, triggers, etc.). Traditionally, this code was either not kept in source control or code units were manually scripted out and saved to a shared location (often email!). By integrating with Microsoft SQL Server (support for other databases to come), this code is kept in Team Foundation Server with the rest of your source code. This script management isn't limited to your logic either. All of your database objects (i.e. tables, views, constraints, etc.) can be kept in TFS as well. This allows you to store "the truth" in TFS rather than on your production server, which often ends up out of sync with your development environments.
Another useful feature of Database Edition is test data generation. The tool can read your imported schema and generate massive amounts of test data with a simple click. Like the schema scripts above, this test data can then be repeatedly deployed as needed.
Development Edition 2008
While nowhere near as significant as the above features, Development Edition includes the aforementioned code coverage, code analysis, and code profiling. Code analysis is basically an integrated FxCop to help developers maintain some basic level of code quality. Code profiling is useful in those situations where performance is critical. Bottlenecks can be located quickly.
Test Load Agent 2008
Listed at the bottom of this list only because of its niche usage. It's actually very handy to simulate 1000's of users in a remote test environment. Additionally, the price is very competitive.
Architect Edition 2008
This is the least valuable of all of the products. (Although all that will change with the release of "Rosario".) Architect Edition will only find value in the larger enterprises where so-called "Ivory Tower Architects" work only in a strategic fashion never really dealing with lower-level details. It basically supports very high-level blueprints of applications for use during conceptual planning and initial design.

No comments: