Chapter 11 – Project Management Explained
Team Development with Visual Studio Team Foundation Server
Retired Content |
---|
This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This page may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist. |
J.D. Meier, Jason Taylor, Prashant Bansode, Alex Mackman, and Kevin Jones
Microsoft Corporation
September 2007
Applies To
- Microsoft® Visual Studio® 2005 Team Foundation Server (TFS)
- Microsoft Visual Studio Team System
Objectives
- Learn what functionality Microsoft® Visual Studio® Team System (VSTS) provides for project managers.
- Choose a strategy for team project creation.
- Create and manage projects with Visual Studio Team System
Overview
This chapter introduces you to the project management features provided by Visual Studio Team System and how they help you to overcome many of the common problems and challenges associated with managing software development projects.
Visual Studio Team System and Team Foundation Server (TFS) provide tools, templates and reports to help you monitor and support your software development processes. As a result team communication is made easier, handoffs required between team members are automated, work items such as tasks are more easily assigned and tracked, and metrics that indicate project health and progress are more easily monitored.
How to Use This Chapter
Use this chapter to learn about the specific features of TFS and VSTS that are specifically relevant to project managers.
- Read the “Project Management Summary” and “Traditional Project Management Issues” sections to understand the problems that TFS project management is attempting to solve.
- Read the “Strategies for Team Projects” section to identify your strategy for team project creation and organization.
- Use the remaining sections to better understand process templates, work items, and other project management features.
Project Management Summary
Planning a project generally consists of some variation of the following steps:
- Generating a vision statement. This step involves creating view of the desired end result of your project, shared by all project stakeholders.
- Generating scenarios. This step includes determining the initial set of usage scenarios for the software. This involves using customer inputs. It also involves validating the scenarios to make sure that they are of value to your customer.
- Generating set of features to support those scenarios. This step includes breaking the scenarios down into specific items of value to your customers, so that you can talk to the customers about their expectations regarding these items.
- Generating a set of work items. This step involves breaking the scenarios and features down into specific tasks. Put another way, when the work items are completed, the relevant feature or scenario is implemented.
- Breaking tasks into areas. This step involves breaking tasks down into areas. These areas could either be functional or based on how specific team is organized.
- Scheduling the work. This step could involve scheduling all the work up front, or breaking the work into iterations.
Traditional Project Management Issues
Most project managers today use a variety of different tools to manage the software development process and these tools usually have little if any integration with the tools used by software developers to do their job. This lack of integration and cohesion across tools and teams leads to significant challenges for the project manager. Typical issues include:
- Dealing with disparate information sources. Project management tools are usually used in isolation, leading to separate sources of information that are not easily integrated. Also, it is usually difficult to integrate the data maintained by project management tools with the data maintained by other team members such as bugs tracked within a separate bug tracking system, in order to generate meaningful metrics.
- Difficultly capturing project-related metrics. Obtaining project related metrics is critical to tracking status, making well-informed decisions and answering fundamental questions such as “Will the project be delivered on time and to budget?” To answer these key questions, project managers typically rely on data obtained from Microsoft Office Project or the bug-tracking system used by the development and test teams. Consolidating data from these disparate systems is difficult, time-consuming and error-prone. Most of the metrics generated by tools are not stored or accessed in a uniform manner. Creating reports is usually an intensive manual effort that requires much copying and pasting of information between different tools.
- Difficultly ensuring that requirements are met. There is often a gap between the work planed for the development team and customer requirements and key non-functional requirements identified for your system. There is another gap between scheduled work and actual work. Vital information gets lost in these gaps which results in requirements not being met.
- Managing processes and process changes. Communicating the processes that your team should follow can be a challenging task. Implementing changes to address systematic problems without impacting team productivity can be even more difficult.
- Lack of auditable communication and task tracking. Collaboration and team cohesion are normally addressed by holding team meetings and by allocating task lists to developers to help them focus on the right priorities. Tracking the progress of individual tasks can be challenging. Also, project managers often spend a lot of valuable time gathering status information from different plans and lists. Team members also spend time completing status reports and updating a variety of different documents and forms.
- Quality assurance. Predicting the number and severity of bugs in the software you are producing is difficult and as a result schedule estimates and costs are usually “best guesses”. These estimates traditionally take into account contingency measures, the amount of which usually depends on how confident the project manager is about the current health of the project.
VSTS is designed to help address many of these traditional problems faced by project managers. It does so by providing a set of integrated tools to help teams improve their software development activities and to help project managers better support the software development processes.
Project Management Features in Team Foundation Server
The key project management features provided by Visual Studio Team System include:
- Process management. Team Foundation Server process management includes Microsoft Solution Framework (MSF) process guidance as well as process templates that set up new team projects with work item types, reports, a project SharePoint portal, and source control settings.
- Security and permissions. New projects contain default groups and permissions that map to common development team roles.
- Centralized work item management. Work items including bugs, risks, tasks, scenarios and quality of service (QoS) requirements are centrally recorded, managed, and maintained in the TFS work item database. Centralizing their storage makes it easy for all team members to view and access them.
- Microsoft Office Excel® and Microsoft Office Project integration. By using the Office Excel and Office Project integration features, project managers can continue to access the work item repository and schedule information by using tools they already know.
- Metrics and reporting. TFS provides a reporting service which transforms operational data such as work items, build results, and test results into metrics stored within TFS data warehouse. Predefined reports allow you to query a variety of project health and quality metrics.
- Project portals. For every team project, TFS creates an associated project portal that uses Microsoft Windows SharePoint® Services. You use the portal to manage project-related documentation, and to quickly view key reports and assess project’s current status.
Benefits
The project management features of TFS provide the following benefits:
- Centralized management
- High traceability
- Integrated project planning and scheduling
- Improved process control
- Improved team communication and cohesiveness
- Accurate progress reporting
Creating and Managing Projects with Team Foundation Server
The following steps summarize the general approach for creating team projects in Team Foundation Server:
- Choose a process template. You can either use a default template out of the box or you can customize your own.
- Create a team project. Your team project will be based on your process template.
- Add appropriate groups and members to your team project.
- Decide on your iteration cycle duration for the project. This includes creating iterations in your team project.
- Capture your scenarios as work items in TFS.
- Determine which scenarios need to be completed for each iteration.
- Define the quality of service (QoS) requirements. Link the quality of service requirements to your scenarios.
- Break your scenarios down into stories to provide manageable work items for developers. Obtain estimates from the developers for each work item.
- Create a project schedule. Create a project schedule (by using Microsoft Project) and adds it to the Team Project.
- Define acceptance criteria. Define acceptance criteria for the work items (correlated to the QoS requirements).
- Define reporting requirements. Define your project’s key performance indicators and identify reporting requirements.
For more information on creating and managing a team project see, “How To: Manage Projects in Visual Studio Team Foundation Server”
Strategies for Team Projects
You need at least one team project to start working with TFS. When a project manager creates a new team project, an associated team project Web site is created containing document libraries with document templates and stock reports. A work item database is created for tracking all effort on the project, and a methodology template is installed that determines rules, policies, security groups, and queries for all work efforts. Additionally, a source code branch is created for source control.
The structure you choose for your team project should be guided by your requirements and might change as your software development process evolves. There are three common strategies for creating new team projects. You might use one of these strategies or a combination of several. The three common strategies are:
- Team Project per application
- Team Project per release
- Team Project per team
Team Project per Application
This is the most common strategy for creating team projects. This approach is useful for both large and small applications, as well as multiple releases of applications being developed in parallel. With this approach, you create one project for each application under development.
Team Project per Release
This approach is useful for large teams who are working on long-running projects. After every major release, you create a new project and have a clean start. With this approach you don’t have to worry about carrying the previous release’s baggage forward, including work items. Also, this approach provides you with the opportunity either to improve the process templates or use new ones based on your newly acquired experience and learning.
Team Project per Team
This approach is useful for large projects that span multiple teams, where central control and activity monitoring is important. With this approach, you create a project for each team. This approach closely aligns a team with the workflows defined in TFS work item types and provides a unit of reporting that spans the entire team.
Process Management
With VSTS, the software development lifecycle has been made an integral part of the tooling to support software project development efforts. By integrating the lifecycle processes into VSTS, the process and handoffs for development team interaction are fully supported by the tooling and can be automated in many areas.
Process Templates
VSTS uses process templates to define the set of instructions and artifacts like process guidance documents, document templates, default work items etc, for setting up a new project. A process template is a self-contained set of instructions that provide development teams with the methodology for a software development initiative. A process template contains the following elements:
- Process guidance. This is supplied for each template and provides contextual information, help, and direction for team members who need assistance following or understanding a particular activity. Process guidance is integrated into the Visual Studio Help System.
- Document templates. These templates enable team members to create new documents such as specifications, risks assessment and project plans in a consistent manner.
- Work items and workflow. Work items have their own set of fields and rules that determine the workflow of the work item and how team members can assign and perform work.
- Security groups. These groups are used to define who can control and manipulate reports, work products such as source code and documentation, and work items. Project managers can administer security groups without needing to be Windows administrators.
- Check-in policies. These policies can be used to enforce rules and quality gates for all code checked into source control. For example, you can enforce that checked-in code meets specific criteria, such as conforming to your corporate coding standards, or passing unit tests. For more information about how to create and configure custom check-in policies, see “How To: Create Custom Check-in Policies in Visual Studio Team Foundation Server.”
- Reports. These are used to monitor the ongoing performance and status of the project. VSTS ships with many predefined reports including code quality reports, schedule progress reports, test effectiveness reports and many others. You can create your own report and customize existing reports.
MSF for Agile Software Development and MSF for CMMI Process Improvement Process Templates
The following two process templates are available out-of-the box.
- MSF for Agile Software Development. This lightweight process template for small, agile, or informal software projects is based on scenarios and context driven actions and is project and people centric.
- MSF for CMMI® Process Improvement. This process template is designed for more mature software projects. It extends MSF for Agile Software Development process template by providing support for auditing, verification, and formal processes. It relies on process and conformance to process and is organization centric.
If the provided templates do not match your specific process requirements and methodology closely enough, you can add new process templates to the system, and you can customize the supplied templates to fit the needs of your organization. For more information about customizing existing templates, see “How To: Customize a Process Template in Visual Studio Team Foundation Server.”
Security and Permissions
When you create a project in TFS, four default groups are created for that project regardless of your choice of process template. By default, each of these groups has a set of permissions defined for it that govern what members of those groups are authorized to do:
- Project Administrator
- Contributor
- Reader
- Build Services.
You can create security groups for your team project to better meet the security requirements of your organization. Creating a security group is an efficient way to grant a specific set of permissions to a group of users on your team project. Make sure that you allow only the minimum permissions necessary for the group, and add only those users or groups who must belong to this new team project group
After you have created a team project group, you must add the new group, give the group the appropriate permissions, and add members to the group. By default, a team project group is created without any permission granted.
Work Item Management
Work items are used as units of work for communication and collaboration between the team. Your selected process template provides an initial set of work item types and project managers then create and manage additional work items that need to be completed on a development project. A work item might define a task, risk, scenario, bug, or quality of service (QoS) requirement. You can link work items together to provide better traceability. For example, you could associate a specific work item task with the related scenario or QoS requirement to which that work item relates.
The process template provides the definitions for the work item types, including the set of fields defined for each work item type. Therefore selection of the process template is important, because it can't be modified during the project. If required, you should customize the process template to include any additional work item types other than those provided by the base templates.
A number of pre-defined work-items are generated in both the MSF for Agile Software Development and MSF for CMMI Process Improvement process templates when you create a new team project. These work items can be used to jumpstart your use of the process, as they contain tasks that are necessary to complete in order to begin the software development process.
MSF for Agile Software Development Process Template
The work item types provided by this process template include:
- Scenario – Used to represent a user interaction with the application system. It records the specific steps necessary to reach a goal. When writing scenarios, be sure to be specific as there may be many possible paths.
- Task – Used to represent a unit of work that needs to be performed. Each role has its own requirements for a task. For example, a developer uses development tasks to assign work.
- Quality of Service Requirement – Used to document the system characteristics such as performance, load, availability, stress, accessibility, and serviceability
- Bug – Used to communicate a potential problem in the system.
- Risk – Used to identify and manage the inherent risks of a project.
MSF for CMMI® Process Improvement Process Template
The work item types provided by this process template include:
- Requirement – Used to capture the requirements defined during the requirements gathering phase.
- Change Request – Used to capture any change requests subsequent to the gathering of requirements.
- Issue – Used to capture issues to be tracked in the projects.
- Task – Used to represent a unit of work that needs to be performed. Each role has its own requirements for a task. For example, a developer uses development tasks to assign work.
- Review – Used to represent the review work units with in the projects, like code review, design review etc.
- Bug – Used to communicate a potential problem in the system.
- Risk – Used to identify and manage the inherent risks of a project.
Microsoft Project Integration
Installing VSTS or the Team Explorer application provides extensions for Microsoft Project. For large projects that involve a large number of resources, you can use Microsoft Office Project, to manipulate schedule data within TFS.
For example, you can use Microsoft Project to manage and plan, assign, balance and track work, and then publish the updates back to the work item database when they are ready to be used by other team members.
For more information, see “Working with Work Items in Microsoft Project” at https://msdn.microsoft.com/en-us/library/ms244368(VS.80).aspx
Microsoft Excel Integration
Installing VSTS or the Team Explorer application provides extensions for Microsoft Excel. For projects that involve a very large number of work items, you can use the Excel integration feature to create work items in an Excel spreadsheet and upload it to the work item database for use by other team members.
For more information, see “Working with Work Item Lists in Microsoft Excel” at https://msdn.microsoft.com/en-us/library/ms181694(VS.80).aspx
Progress and Reporting
The reports provided with TFS help you quickly assess the status of your team project, the quality of the software under development, and the progress made toward project completion. These reports are generated from data maintained within the TFS data warehouse, and they summarize metrics derived from work items, source control, test results, and builds.
For example, you can use reports to find out how fast your team is working from week-to-week, based on a team’s actual activities. The goal of the TFS reporting system is to provide integrated data from across VSTS components, to enable project managers and team members to understand the state of the software development project, and take appropriate action to ensure its success.
The process template you use to create your team project determines which reports are available by default, but you can also add your own custom reports. The content and use of each report created by the process template is explained in the process guidance for that template. Team Foundation Server is built on Microsoft SQL Server™ 2005 and uses SQL Server to store all data related to work items, quality attributes, testing, test results, and build results. TFS then uses SQL Server Analysis Services to aggregate and analyze the data and drive the reports. The reports that are created by the process template, or by individual team members by using Microsoft Office Excel or Visual Studio 2005 Report Designer, are made available through SQL Server 2005 Reporting Services and the team SharePoint portal site.
For more information about customizing reports, see “How To: Create a Custom Report for Visual Studio Team Foundation Server.”
Summary
Team Foundation Server provides project management features such as centralized work item management, process management, security and permissions management, project metrics, and reporting to improve your ability to manage development projects in Visual Studio.
The software-development lifecycle has been made an integral part of the tooling to support software project development efforts. TFS provides the MSF Agile and MSF CMMI process templates, which support two very different development methodologies. You can modify the supplied process templates or create one from scratch in order to meet your team’s development process needs.
Additional Resources
- For more information on software project management using VSTS, see “Visual Studio 2005 Team System: Software Project Management” at https://msdn.microsoft.com/en-us/library/aa302181.aspx
- For more information on using Microsoft Office Excel for project-management tasks, see “Working with Work Item Lists in Microsoft Excel” at https://msdn.microsoft.com/en-us/library/ms181694(VS.80).aspx
- For more information on using Microsoft Office Project for project-management tasks, see “Working with Work Items in Microsoft Project” at https://msdn.microsoft.com/en-us/library/ms244368(VS.80).aspx