In June of 1999, Microsoft started to reevaluate how Visual Studio was being used as part of a software development process. Microsoft's Developer Division sustained the developer community at large for years, but did not adequately address all of the challenges of software development within a team environment. For example, what Microsoft tools were out there for architects before Team System? There really wasn't that much—the most notable tool is Microsoft Visio, which is used to design UML diagrams. There are also some other lesser known design tools in Visio. However, there isn't any solid twoway integration between Visio diagrams and code within Visual Studio. Another problem relates to the tools themselves. To effectively set up a software development shop, you have to purchase several third-party tools (or use open-source tools) to handle tasks such as version control and team communications. A mishmash of tools is even more difficult to integrate.
Here is a common scenario: You are compiling a list of tasks or requirements to send out to your team using products such as Microsoft Excel, Word, or Project. You then have to be able to communicate these tasks to the rest of your team and respond when they have completed the task or the status changes. To be able to achieve this, you have to do a lot of cutting and pasting. On top of that, the process is very deliberate—there is no automation or shortcuts. You also have to handle a lot of your communication by e-mail. The problem with e-mail is that your team members can lose messages; there may be a server outage that may prevent your messages from coming through, and so forth.
Before Team System, the only version control product Microsoft had to offer was Microsoft Visual SourceSafe. SourceSafe is an excellent tool for a single developer or a very small team, but it doesn't scale very well if you have a large number of developers working concurrently. In addition, it isn't really designed to be used over the Web.
Visual Studio's Enterprise Tools team launched a project code-named "Burton" to create a team product that would integrate well with Visual Studio and tackle the challenges of integration and scalability.
"Burton" is named after a very popular snowboard and clothing company based in Vermont. Many Microsoft employees enjoy skiing in their free time and as a result, many of the product code names are based on skiing-related locations and equipment. For example, Windows XP was code-named after Whistler Mountain in British Columbia.
In May of 2004, after five years of research, planning, and development, Microsoft announced and presented Visual Studio 2005 Team System to the public. Team System consists of experience and tools used internally at Microsoft for years, such as PREfast, Product Studio, and Source Depot. Rick LaPlante (the general manager for Team System) delivered a keynote presentation and an end-to-end demo that changed the way people looked at Visual Studio. The first major change in the Visual Studio product is the availability of tools targeted at all roles within an IT organization: architects, developers, testers, and project managers. Another big focus is on the software development life cycle (also known as the SDLC). Within the product, you can now use the Microsoft Solutions Framework, which not only provides a framework for developing software, but also includes process guidance and integration.
Fast forward to today: Team System is now in stores and you've picked up a copy of this book to learn more about it. Professional Visual Studio 2005 Team System will provide you with an end-to-end overview of the important features of the product. In the Wrox spirit, we have included a lot of practical information and hands-on walk-throughs to put Team System through its paces, regardless of your role within your organization.
One of the most important aspects of Team System is that it is designed to fit your needs and not the other way around. Unlike other Microsoft products such as Office, Team System isn't designed for out of-the-box use. You have to spend some time configuring it and applying your policies and best practices—in essence, tailoring it to the way you develop software. Why make changes if you have established a good development process and everything is working well? Alternatively, if your approach is more ad hoc, Team System will provide you with a good framework to work out a suitable and workable process.
We will make no bones about it—Team System is a huge product. Think of this book as your starting point into Team System. Like other Professional books by Wrox, we not only dive into the important features, but also the grittier details.
Team System is composed of several logical tiers. Figure 1 features a very high-level logical overview of Team System's architecture.
Following is a detailed explanation of each of the tiers included in Team System.
The client tier is composed of several role-based versions of Visual Studio 2005 and other tools that are designed to connect to the application and data tiers of Team System. Here is a description of the four Team System client products:
Visual Studio 2005 Team Suite incorporates the functionality of Visual Studio 2005 Team Edition for Software Architects, Visual Studio 2005 Team Edition for Software Developers, and Visual Studio 2005 Team Edition for Software Testers all bundled into one. This product is geared toward team members who want (or need) to take on several roles. The Team Suite product is also useful for installing on the Team Foundation Build server to incorporate the test capabilities of both the Developer and Tester versions of the product.
Visual Studio 2005 Team Edition for Software Architects includes tools to support the application and infrastructure architects during the initial design phase and ongoing development of a software project. It includes several designers, such as the Application Modeling, Infrastructure Modeling, and Deployment Modeling tools. This tool should not be confused with the Visual Studio .NET 2003 Enterprise Architect product. The older Enterprise Architect tool was considered the most complete version of Visual Studio .NET 2003. The "equivalent" tool for Team System is the Visual Studio 2005 Team Suite.
Visual Studio 2005 Team Edition for Software Developers has Static Code Analyzers for both managed and unmanaged code, Dynamic Code Analyzers (also commonly known as AppVerifier), Unit Testing, Coverage, and Code Profiling tools.
If you want to enforce static code analysis or dynamic code analysis on your build, you have to add these tests to a test task and make sure that the Team Edition for Software Developers version is installed on your build machine (or you can alternatively use Team Suite).
Visual Studio 2005 Team Edition for Software Testers has features such as Test Case Management, Performance and Load Testing, Unit Testing, Code Coverage, and Manual Testing. If you want to enable any of these tests in your builds, you have to install this version of Visual Studio 2005 on your build server (or Team Suite).
Once you are finished installing Visual Studio, you need to install the Team Explorer. Team Explorer is a client plug-in that will enable you to connect to Team Foundation Server, create projects, and administer all of the project details. Team Explorer can also be installed as a standalone tool. It has the same "look and feel" as Visual Studio, and it has a light memory footprint. Note that you can't write code within the standalone version of this tool (you still need Visual Studio to be able to do that). You can also use it for source control operations side by side with Visual Studio .NET and other development tools. It's also appropriate for project managers.
Although not officially part of Team System, Microsoft Office Professional 2003 (specifically Word and Excel), and Microsoft Project are used to interface with both the application tier and the data tier. Excel and Project can be used to manage work items and requirements; Word is used to create manual tests. Excel can be used to get a nice view of your project data by connecting directly to the data tier using pivot tables.
Chapters 1 through 17 cover most of the client-based tools. If you are interested in project management and reporting, you should definitely take a look at Chapter 19.
Team Foundation Server incorporates the application and data tiers. This server has many integrated and centralized functions, including project management capabilities (a SharePoint-based Team Project Portal site, work item tracking, and reporting), build automation, and a version control system. Team Foundation Server also provides support for fine-grained security, policies, and other administrative capabilities. Chapters 18–24 cover each feature in detail.
One of the topics we won't be covering in detail is the Team Foundation Core Services. The reason we are excluding this information is because the programmability features and API are very much in flux at the time of writing. For current documentation and samples, we highly recommend that you visit the Visual Studio Extensibility Center website at http://www.vsipdev.com.
Team System's data tier is based on Microsoft SQL Server 2005. This product was specifically selected to reduce the complexity of the application and speed up time to market. At this point, Team System is not compatible with third-party data sources and does not integrate with Enterprise Data Services (EDS). Team System's data tier is used to store all of Team System's data, such as source code, work items, reporting data, and project settings. You can find coverage on the data warehouse in Chapter 19. You can also find out about how to back up and recover your data store (and other data-related topics) in Chapter 24.