Introduction to Visual Studio Team System


In Chapter 1, we looked at some of the results of the Chaos Report (2004) produced by the Standish Group, which shockingly confirmed how poor the industry is as a whole at producing software. Chapter 1 also reflected upon the most common shortcomings of software development teams in addition to some of the key ingredients that can be enforced to help secure the success of a project. Even after these key ingredients have been addressed, which include having an experienced project manager on the team and the reliance on extensive user involvement and executive support, project teams will still be left with a mixture of tools that they must use to support their software development processes. When you think about it, software development teams have always had good tools to help them do their job. What seemed to be lacking is cohesion between those tools-both functionally and with regards to the data they produce. Many software development tool vendors, such as IBM Rational, Mercury, and Borland have attempted to address this gap by providing suites of tools that cover virtually all aspects of the software development life cycle; however, the problem of integrating tools from a changing landscape of tool vendors still poses significant challenges that most organizations do not tackle, leaving project teams with silos of tools that don’t work well together and valuable project information that isn’t integrated.

Capturing relevant project-related metrics has also traditionally been difficult for many project managers. As a project manager, you would typically rely upon the data given to you by the tools you use, such as Microsoft Office Project or the defect-tracking system used by the developers. Taking the time to consolidate information from all of these disparate systems in a way that provides ongoing meaning and relevance is a difficult and time-consuming endeavor, and for this reason, it is not performed consistently throughout the life of a project or even at all. Even when enough metrics are gathered, such as work completed per week, outstanding bugs, defect rates, and cost/time buffer consumption, making sense of this information as it applies to the successful management of the project is still quite difficult. Project managers must be able to understand whether the metrics that are being gathered result in descriptive (what you have done) or prescriptive (what you should do) perspectives or help to answer daily questions such as, “Will your project be done on time?” and “Will your project go over budget?”

Communication and team cohesion are extremely important elements of successful software engineering projects. One of the roles of a software project manager is to facilitate team cohesion and collaboration by any means. This may mean regular status meetings, detailed task lists that are sent to team members daily, or other activities that force the team to synchronize and focus on the job at hand. Of course, many software development methodologies, especially those based on Agile principles (see http://www.agilemanifesto.org/), put a great deal of emphasis on team collaboration; one of the most popular methodologies of this sort is Scrum. Many of these methodologies also stress the usage of some form of tool to help track information that will ultimately be used to drive team effort and focus. For example, Scrum emphasizes the concept of a sprint backlog to track tasks, their assignments, status, and in some cases, effort expended. Sprint backlogs are created during sprint planning meetings in such a way that each task should be able to be completed in about 4 to 16 hours. Within the sprint methodology, the sprint backlog is highly visible and provides a clear picture of the work that the team plans to accomplish during a development cycle called a sprint. Project managers will find that effective team tracking and communication tools, such as a sprint backlog, are even more important with geographically dispersed teams or very large projects that require team segmentation.

Continuing the discussion of task tracking, it is also important for project managers to track other aspects of a project such as risks, issues, requirements, and change requests. Many organizations have different tools for tracking each of these, ranging from simple Microsoft Office Excel spreadsheets to expensive off-the-shelf products. In many cases, it is up to the project manager to bring together all aspects of a project from all of their respective sources to build a complete picture of the state and health of a project.

Project managers are also the governors of the process and are selected to guide the software engineering effort. Project managers, with the help and feedback of their team, must be able to choose the correct process for the constraints that they face because you can never expect one process methodology to be used in every situation. After the project manager selects a methodology, the project manager must find a way to explain the process to the team and to help enforce rules and procedures that need to be followed. Far too often, the process that governs the project does not get continually reinforced, resulting in projects getting out of control. A clear sign of a project that has gotten away from the discipline prescribed by an underlying process methodology is the “never-ending status meeting syndrome,” in which the team holds a seemingly continual array of status and planning meetings in hopes of getting the project focused and issues resolved. The problem with the never-ending status meeting syndrome project is that it is very hard for people to actually do any work if they are continually in status meetings.

An important aspect of any process is its attention to activities that help drive increased quality in the resulting product. By ensuring that the project team performs tasks related to the quality of the product, you will effectively minimize the size of one of the most dangerous project areas of uncertainty: bugs. In fact, there is no way to predict the number and impact of defects you will have in your software. Because of this, your estimates of your schedule and costs can be only rough approximations at best. Most project managers compensate for uncertainty by adding buffers to time and effort estimates; the bigger the uncertainty, the bigger the buffer. Quality assurance activities, such as developer-level unit testing, regular automated builds, early prototyping, and early-and-often user involvement can all be estimated up front with a fair degree of certainty. As a result, if the team acts upon these quality-related tasks, the impact of the uncertainty of software defects will be minimized, thereby decreasing variation and providing better conditions for success.

With all of this in mind, we have yet to see a tool that can truly help the software project manager deal with the complexity of a project team while at the same time provide flexibility with regard to process and control. This is where Microsoft Visual Studio Team System helps to solve some of the traditional problems faced by project managers by providing a set of tools for helping teams develop software better. In fact, Visual Studio Team System is much more than just a set of tools; it provides a platform and extensible architecture for software development tools that are provided by Microsoft and the entire software tool vendor community, including vendors such as Borland, Compuware, Mercury, and AVIcode, to name a few. Visual Studio Team System was built to enable software teams to focus more on the interaction between team members and the tools they use rather than the tools themselves. Visual Studio Team System also provides project managers with a unique and integrated viewpoint by helping to bring together disseminated tools and data jointly under one environment. Visual Studio Team System also helps to enforce process while at the same time ensuring flexibility across any software development methodology.

Feature Summary

Visual Studio Team System is a set of services and tools that integrate with Visual Studio in a way that can enhance the productivity of developers, testers, architects, and project managers. In this section, we explore the features of Visual Studio Team System at a level designed to give you a perspective of the entire scope of the product.

As you saw in Figure 1-1 in Chapter 1, Visual Studio Team System has two primary components: the client-side components, which extend Visual Studio 2005 Professional Edition, and a brand-new server component called Visual Studio 2005 Team Foundation Server. In fact, Microsoft segments the client-side tools into four SKUs named Visual Studio 2005 Team Edition for Software Architects, Visual Studio 2005 Team Edition for Software Developers, Visual Studio 2005 Team Edition for Software Testers, and Visual Studio 2005 for Database Professionals. Customers can buy each client SKU individually or all of the SKUs together in a package called Visual Studio 2005 Team Suite. Each of the client-side SKUs provide additional functionality to that provided out of the box with Visual Studio 2005 Professional Edition and are intended to be specific to a particular role on a project. Visual Studio Team Edition for Software Architects, for example, provides additional tools for software architects who design Service Oriented Architecture (SOA)–based software applications. Visual Studio Team Edition for Software Developers provides additional tools to help developers write better code and tools to help detect and isolate problems when they occur. Visual Studio Team Edition for Software Testers provides an excellent array of quality assurance tools that software testers can use to help test and validate software.

Team Foundation Server is the component of Visual Studio Team System that project managers will likely spend the most time using. Team Foundation Server provides additional developmentfocused features such as a new source control engine and an automated build framework; it also provides tools such as work tracking and a consolidated data warehouse and reporting framework. We will explore these features more closely in the following sections.

Work Item Tracking

One of the key features of Team Foundation Server is Work Item Tracking. Work items are units of work that are used to identify, manage, and track virtually any piece of work in a project. You can consider a work item to be “something that needs to get done,” which you might represent in a tool such as Office Project or Office Excel. Examples of work items include Bugs, Tasks, Risks, Quality of service requirements, and even Change requests. Work items have fields that are used to capture information such as title, description, and work assignments, as shown in Figure 2-1. Work items also specify a workflow that team members must adhere to as they create and modify work items. For example, the Requirement work item type specifies the following states: Proposed, Active, Resolved, and Closed. The Requirement work item also specifies a set of rules that determine what is needed to achieve those states, as depicted in Figure 2-2. The workflow specified within work items is extremely important to process governance because it is in this stage that Visual Studio Team System helps to enforce your process methodology.

image from book
Figure 2-1: The Task work item

image from book
Figure 2-2: The Requirement work item type specifies four states.

When you create a new Team Project, Visual Studio Team System will also prepopulate the project with default work items, which are specified in the process template you used to create the project (we will discuss process templates in more detail later in this chapter). This is very useful when you would like to have similar work performed for all projects of a similar type. For example, you may want every project to have a vision and scope document created. The MSF for CMMI Process Improvement process template comes with a number of default work items for newly created projects, one of which is the Create Vision Statement Task work item.

Another extremely important aspect of work items is that they can be associated with project documents, source code files, automated build results, test results, or even other work items. The ability to associate work items with virtually any other piece of information within Visual Studio Team System provides an important foundation for traceability and Visual Studio Team System’s underlying data warehouse and reporting capabilities.

Work items are specified by something called a process template, which is essentially a stencil that is used to design new projects within Visual Studio Team System. Process templates and the work items that they specify are completely customizable allowing you to add fields, modify workflow, and even change the display form layout. We will be making further reference to process templates later in this chapter because they are an important mechanism for specifying the behavior of Visual Studio Team System.

Source Code Control

Another service in Visual Studio Team System is Team Foundation Version Control (TFVC), which provides an enterprise-scale repository for source code and other file-based documents of the project. The TFVC service is optimized for both in-house and distributed development teams, so network traffic is optimized, and geographically dispersed teams can work together easily. To further support distributed teams, Visual Studio Team System also provides a Team Foundation Proxy Server, which is responsible for caching source code files in remote offices to help optimize the process of fetching files from the central repository. The TFVC service supports advanced source code branching and merging operations. TFVC also supports the new concept of source code management called shelving, which a developer can use to temporarily store changes in source code to help facilitate source code reviews or to easily retain current changes while reverting to an earlier state for defect fixes. The TFVC service also supports check-in policies that can be used to enforce quality standards during the code check-in process. For example, policies can be set to require work items and check-in notes to be associated with the check-in operation or to require code coverage and testing to be complete. Other policies can be set to require source code to adhere to coding conventions as specified by the project.

Automated Build

Team Build is another core service in Visual Studio Team System. It is responsible for the automated compilation of source code, execution of automated tests, performance of source code analysis, and production of build statistics that record quality metrics. Team Build can automatically generate new defect work items when tests fail or automatically resolve existing defects when their tests pass. Creating a daily build is now a simple wizard-driven operation that makes it possible to create many different types of automated builds for different needs. For example, your project team may require a daily build in which the source code is compiled and the results deposited into a drop location every night. Your team might also want to specify various other builds that perform specific operations such as performance and load testing, execution of automated tests, or even complex deployment steps.

Metrics and Reporting

Metrics and reporting are likely a project manager’s most favored features of Visual Studio Team System. Team Foundation Server ships with extensive reporting services at its core as, illustrated in Figure 2-3. This service transforms operational data, such as work items, automated build results, and test results, into metrics stored within Team Foundation Server’s data warehouse. Dozens of reports are included that detail and summarize a Team Project, including reports that provide status, health and defect reports, and other quality metrics. In essence, Visual Studio Team System facilitates the software development processes and provides you with valuable built-in reports that can help you manage and track your projects.

image from book
Figure 2-3: Visual Studio Team System reporting is extensible, allowing you to create your own reports or even access the data warehouse directly from Microsoft Excel.

Project Portals

For every Team Project, Visual Studio Team System creates an associated project portal, which is built on Microsoft Windows SharePoint Services. This portal facilitates the maintenance of the documents produced by the project team and acts as a launching pad for project reports and other associated project components. Windows SharePoint Services provides document libraries to store virtually any type of document. When you create a new Team Project, Visual Studio Team System will prepopulate the document libraries contained within the portal with documents that are relevant to the project, which are all specified in the process template used to create the Team Project. Document libraries provide the ability to store metadata information about each document. They also have collaborative functionality such as version history and document check-in and check-out, which prevents other users from viewing partial changes to documents and prevents them from making changes to documents while they are checked out.

The project portal is also a launching pad for project reports, providing easy access to the plethora of reports that are provided by Visual Studio Team System out of the box. In fact, the project portals that are created for each Team Project contain reporting Web parts that embed project reporting directly on the project portal pages, as demonstrated in Figure 2-4. This provides a one-stop shop for business analysts and project sponsors who want to get information about the project quickly.

image from book
Figure 2-4: The project portal

Office Excel and Office Project Integration

Project managers can use familiar tools such as Office Project or Office Excel to manage their project lists; however, because of the integration with the Visual Studio Team System Work Item service, those lists are now part of the Visual Studio Team System project and are centrally maintained and available for other members to see and update as needed. In fact, the Visual Studio Team System work item repository is fully accessible through Office Project and Office Excel, providing two-way synchronization between work item data and the information stored within the Microsoft Office products. As a project manager, you will be able to use the common features of the product to not only enter and update work item information, but also to analyze and track important project information.

Other roles on your development team will benefit from the integrated toolsets in Visual Studio Team System. These toolsets include Visual Studio Team Edition for Software Architects, Visual Studio Team Edition for Software Developers, and Visual Studio Team Edition for Software Testers.

Tools for Software Architects

Software architects now have access to a new generation of tools that help them create models that accurately represent distributed applications and service-oriented architectures (SOA) by using components such as Web services, Microsoft BizTalk Server Web services, Web applications, Database services, Windows applications, and external Web services. Many of these model components can be used to generate Visual Studio projects. Changes made to applications generated from these models are represented in the model automatically, and correspondingly, changes in the model components are also reflected in the project code and configuration automatically. In this way, the dynamic models accurately represent the application at any point in the life of the project.

Another model type is the Logical Datacenter Diagram, which is used to specify the essential characteristics of a datacenter, especially those settings and constraints that affect the deployment of application components and systems. The Logical Datacenter Diagram can be maintained by the project’s architect or the operations managers who understand the communication paths and service endpoints of their datacenter best.

Further, a software architect can create a deployment diagram that maps the components of your software onto a specific logical datacenter and verify that the application’s settings and constraints are met by the datacenter’s services and endpoints. Architectural changes that may be required in order to have a successful deployment can be identified well before code is even written, and because application diagrams are dynamic, those deployments can be validated at any time during the life cycle of the project, ensuring that changes to the applications in a system will not cause deployment issues later.

The designers available in Team Edition for Software Architects are shown in Figure 2-5.

image from book
Figure 2-5: Designers in Visual Studio Team Edition for Software Architects

Tools for Software Developers

Developers will enjoy the integration of code quality tools into Visual Studio that will not only help them write higher quality code, but also help detect and track down problems throughout the development process. These include tools for unit testing and code coverage, code analysis, and code profiling. Unit tests allow developers to ensure that software components and their interfaces respond correctly and function according to the requirements of the system. Code coverage shows the developer the areas of code that have been tested and those that have not. Code analysis is a process that assesses code for compliance with various coding and design rules, such as naming conventions, potential security issues, adherence to standards, and common coding mistakes, in addition to custom rules that may be in place. There are also more sophisticated tools for C and C++ projects that can identify common coding errors that cause run-time problems that are difficult to isolate, and other tools that can trap those problems at run time and aid in diagnosis. Figure 2-6 shows some of the code analysis settings available in Team Edition for Software Developers.

image from book
Figure 2-6: Code Analysis settings in Visual Studio Team Edition for Software Developers

Developers commonly find it difficult to debug performance problems while the application is running. Visual Studio Team System includes new features such as code profiling tools, which allow a developer to identify those portions of code that are running, their frequency, and the duration of each call, to assist in diagnosing such problems. The profiling tools can work in two different ways: the sampling mode imposes minimal overhead on the running application and checks into your application at regular intervals, determining with statistical analysis the frequency and duration of code calls during the profiling session. The instrumental profiling mode adds start and end markers to the compiled code to accurately measure all calls and their duration; however, doing so adds the additional expense of performance overhead to the application as it runs.

Tools for Software Testers

Testers will use the testing framework in Visual Studio Team System to create, maintain, and execute tests of many kinds, including unit tests, Web tests, and load tests, and they will take advantage of the framework to include third-party testing tools or generic executables that perform specific tests. Team Edition for Software Testers even supports manual tests that document the steps in a Microsoft Office Word document for testers to reference manually. All test results can be tracked and maintained in the Visual Studio Team System repository, and they form the basis of a number of quality metrics that are shown on the project portal and common reports. Failed tests can create defect work items (either automatically or manually), and progress of those defects can be tracked throughout their life cycle. Communication of defects and resolutions between tester and developer can happen clearly, easily, and automatically.

As you can see, there are quite a number of new features in Visual Studio Team System designed to maximize the productivity of all team members, helping to impose a repeatable, predictable process for software development projects while minimizing the overhead of the process on the team.

Tools for Database Professionals

Most software development projects have team members who are responsible for developing against some type of database. Visual Studio Team Edition for Database Professionals contains tools that will enable the database developers on your team to be more productive and produce higher quality results. Visual Studio Team System for Database Professionals will allow database developers to fully integrate database projects in the source code management functionality provided by Team Foundation Server. Visual Studio Team System for Database Professionals provides features such as database object refactoring and renaming, database and schema comparison, and data generation. In addition, Visual Studio Team Edition for Database Professionals offers new tools that will enable database-focused members of your team to more easily write and run unit tests that target database objects such as stored procedures and database functions.




Managing Projects with Microsoft Visual Studio 2005 Team System
Managing Projects with Microsoft Visual Studio 2005 Team System
ISBN: 735622167
EAN: N/A
Year: 2007
Pages: 93

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net