Collaborative coding

This article was originally published in VSJ, which is now part of Developer Fusion.
Developing applications involves much more than just cutting code. Production of a modern application will typically involve business sponsors, analysts, application and solution architects, testers and project managers, as well as developers. Up to now, Microsoft has had no cohesive offering for facilitating interaction between these different groups, but this is about to change with the release of Microsoft Visual Studio 2005 Team System (VSTS).

A quick look at the block diagram for VSTS reveals the pervasive reach of this technology (see Figure 1).

Figure 1
Figure 1: Block diagram of Visual Studio 2005 Team System

At the heart of VSTS is Visual Studio 2005 Team Foundation Server (VSTF). This uses web service and n-tier architecture to provide the repository for all artefacts of a project, including the provision of reporting services, source control, work item tracking, test and build results and project documentation. VSTF is built using a combination of Windows Server 2003, SharePoint and IIS, and SQL Server 2005, all of which enables it to scale up to handle enterprise-sized development teams.

On the client side, there are three different versions of the Visual Studio 2005 Team Edition products, targeted at architects, developers and testers. A fourth, overarching, Team Suite product is available for individuals who obviously wear far too many hats on a project. There’s also a separate client access licence for VSTF so that project managers, who typically use Microsoft Excel or Microsoft Project for controlling tasks, can access the repository without having to use Visual Studio.

It’s all about the process

Organisations typically follow an established methodology for controlling the development process. VSTS ships with templates for controlling projects using Microsoft Solutions Framework (MSF), in both Agile and Formal flavours, including guidance documents on how to get the best out of MSF (see Figure 2).

Figure 2
Figure 2: The project portal

However, a critical feature of VSTS is that Microsoft doesn’t force you to follow a specific methodology: you can apply your own project templates through VSTS’ very extensible architecture. Whichever methodology you follow, the starting point of any development work in VSTS is the creation of a Team Project. At this point, the appropriate process template will be used to create the initial tasks, and the initial product documents will be generated. At the same time, the source control repository and project portal site will be created.

Team working

As its very name suggests, VSTS is designed to support working as a team. The use of a SharePoint portal site alleviates many of the day-to-day chores of facilitating communications within a project. Progress reports, design documents, bug counts, code churn statistics and all of the other essentials for successful information dissemination are presented through this single portal in real time. Projects are driven by tasks, or work items in VSTS terminology. The integration with Visual Studio 2005 is impressive, with users able to pick up and respond to their work items from within the IDE. Typical work items include implementing features, bugs, creation of project documentation and so forth. Each work item can have considerable collateral added to it, including hyperlinks to other items or even attached files. This last feature is particularly potent during development and testing, allowing (for example) testers to attach performance monitoring graphs, stack traces and screen shots to help the developer track down problems.

As you’d expect with an extensible system, custom work items can be added to the system to suit your needs.

Designing for deployment

In most organisations, there is a considerable separation between development and operations. This can lead to innumerable problems when it comes to deploying applications, as developers are often unaware of constraints that will be imposed on the applications until they come to deploy them. Microsoft is working very hard to overcome this problem, and has launched the Dynamic Systems Initiative (DSI) to help organisations manage IT across the entire lifecycle of design, deployment and operation.

The first deliverable in DSI actually ships with VSTS. It consists of a trio of designers that facilitate communication between the IT professionals who run the data centre and the infrastructure and solution architects.

The Logical Data Centre Designer (LDD) allows an IT professional to specify the (logical) structure of the Data Centre. It can be used to model the Web, application and database servers and, most importantly, the constraints applied to those servers.

The architects then use the Application and System designers to design the applications, and can generate test deployments that can be used to validate that their design can actually be deployed into the Data Centre.

An incredibly powerful feature of VSTS is that, once the deployment has been validated, VSTS can generate the projects for the developers to code, including such items as configuration settings for web applications. This entire design approach prevents the majority of configuration related issues that affect application development and deployment, bridging the communications between development and operations. This is certainly one of the most potent features of the entire VSTS system.

Quiet: developers at work

With the architecture in place, it’s time for the developers to get to work, and many developers are going to find the new Visual Studio 2005 Team Edition for Software Developers product a joy to work with. Not only do they have the power of the normal Visual Studio 2005 tools for creating Windows Forms 2.0 or ASP.NET 2.0 applications, but they also gain class designers, powerful re-factoring tools, unit testing and a flexible source control system built in. This seamless integration within VSTF means that developers will rarely need to leave the IDE. Innovative source control techniques, such as the ability to shelve code so that it can be submitted for peer review or to enable a developer to continue work from home, means that code can be securely held without affecting the daily build cycle.

Another of the key features of the source control system is the ability to enforce check-in policy. This goes far beyond the normal “you must provide a comment for the change” approach, allowing management to ensure that code is unit tested with a high level of code coverage before it makes it into the production source tree.

Testing

Testing is a complex area of product development. Whether you work under a formal or agile methodology, testing should be a first-class citizen in your application development cycle; consequently VSTS provides rich support for many different types of test. Developers will be pleased with the integrated unit testing facilities, which in conjunction with the designers and code re-factoring tools certainly help them follow test-driven development approaches (see Figure 3).

Figure 3
Figure 3: Integrated unit testing

The range of test types supported includes load testing, manual testing and unit testing, with this latter type benefiting from code coverage analysis tools. A dedicated SKU for testers, including test authoring and test management tooling ensures that testers can provide feedback to development using the integrated bug recording features.

Daily builds: the project’s heartbeat

Implementing a daily build cycle is an excellent way of monitoring a project’s progress. VSTS facilitates this through the use of a dedicated build server. This can be configured to download code from the source control engine to run builds. Of course, the build server can also run the unit tests in conjunction with code coverage analysis, with the results being fed straight back to VSTF for inclusion on the project portal via the reporting service.

Extensibility

Most organisations have their own processes and procedures for developing applications, which can make rolling out a product like VSTS very difficult. Microsoft has carefully ensured that VSTS is extensible in all the right places, including custom process templates, work item types, and tests; in fact, a number of 3rd party extensions have also been announced for VSTS.

This all means that you can adjust VSTS to fit the way you work, rather than have to change your process to meet the requirements of an inflexible tool (which VSTS is certainly not). You might find, though, that working with VSTS itself will help you to improve your processes just through the excellent communication and project tracking that comes in the box as standard.

Conclusion

Microsoft Visual Studio 2005 Team System is far more than just a project management or source control system: it’s an integrated, end-to-end, extensible suite of tools designed to support hundreds of users through the process of developing and deploying a large-scale application.

For many large organisations grappling with the challenges that they face in building and deploying complex .NET applications, Visual Studio 2005 Team System is likely to represent one of the most significant products that Microsoft has ever released.


David Wheeler is a principal technologist at QA, where he specialises in application development and design using Microsoft .NET technology. He is a regular speaker at Bearpark’s annual DevWeek conference in London – the 9th annual event takes place on 20–24 February 2006.

You might also like...

Comments

About the author

Dave Wheeler United Kingdom

Dave Wheeler is a freelance instructor and consultant who specialises in .NET application development. He’s a moderator on Microsoft’s ASP.NET and Silverlight forums and is a regular speaker at ...

Interested in writing for us? Find out more.

Contribute

Why not write for us? Or you could submit an event or a user group in your area. Alternatively just tell us what you think!

Our tools

We've got automatic conversion tools to convert C# to VB.NET, VB.NET to C#. Also you can compress javascript and compress css and generate sql connection strings.

“Before software should be reusable, it should be usable.” - Ralph Johnson