Professional Visual Studio 2005 Team System (Programmer to Programmer)

MSF is built around the concept that process should enable you, rather than hinder you. If you implement too little process, you have to take great steps to stay on track. The inroads you make on a project will fully depend on the organizational skills of your team. The infrastructure will not support or enforce your process. Too much process inhibits productivity and velocity. MSF is the marriage of process and agility. The following sections take a look at the components that enable process within Team System.

Process template components

MSF comes with many principal template components to support a software development process including work products and work item queries.

Work products

Work products are the tangible assets that support the framework. They include documents, spreadsheets, binaries, and specifications necessary to support the process flow. These work products are usually included in process templates and are included in a new project when a process is selected.

Queries

Work item queries are important for gathering and supporting information about your activities and the activities of your team. They include some of the following:

Iterative process

The Microsoft Solutions Framework can handle quick multi-iterations to help you refine your code, wring out any bugs, and create better software. MSF includes a four-step cycle that enables you to incrementally develop and stabilize your application. Each iteration focuses on a different feature or bug fix. Smaller iterations are recommended for accurate project timelines. Here is an overview of the four iterative steps:

Figure 21-5 illustrates the MSF iterative process in a nutshell. Team System supports quick iterations with continuous improvement. These iterations may overlap at times and the iterative process may be modified to fit your custom process. Iterations are supported in the product using the Areas and Iterations classification features (covered in Chapter 19). Using project management tools such as Team Explorer and Microsoft Project, you can organize your work items by iteration and map out the amount of time the iteration should take. On top of that, you can modify the process template to define default iterations as soon as a project is created. These are some of the ways Team System functionally support an iterative process.

Cycles

Cycles represent the process of building a software project and its associated tasks and activities. Cycles are another way of describing phases in a software development project that are not neccesarily sequential. Some of the most common cycles include the following:

Figure 21-5

Smaller iterations enable you to quickly build features and reduce estimation errors, and they provide an effective feedback loop. Each iteration cycle should result in a solid feature in your product.

Cycles and iterations are loosely coupled. For example, a check-in may occur several time a day during a particular iteration of a project. Cycles represent a cross-section view of the MSF specifications. For more information about this view, please refer to the default process guidance documentation.

Personas

Personas are used to describe groups of users or customers. Instead of dealing with abstractions, you can tailor software to the needs, skills, abilities, and lifestyle of a fictional person. Personas should not be constructed in a vacuum; you must try to gather metrics to determine your audience and build a profile based on your gathered data. Personas are not a substitute for customer interaction. They are merely a way of communicating with customers.

Note

Kim Goodwin (who works for Alan Cooper's firm Cooper Interactive Design) is the originator of personas. Alan Cooper made personas famous in his book The Inmates are Running the Asylum (Sams, 2004). You can read an article on the origins of personas on his personal website at http://www.cooper.com.

"Bob" is an example of a simple persona:

"Jill" is another example of a persona:

Note

Personas are used widely at Microsoft. For example, "Mort Gaines" is the personification of a hobbyist VB developer, as opposed to Elvis (a C# developer) and Einstein (a C++ developer). You can find photos and profile information about Mort on presentation materials such as Microsoft PowerPoint slides and internal posters.

Governance, tracks, and activities

Governance measures value based on budget and scheduling. MSF for Agile Software Development has five tracks (not to be confused with the Track view) relating to work cycles and iterations. The five general questions (or checkpoints) you should be asking yourself are as follows:

These checkpoints are defined from within MSF. To measure these governance checkpoints, you must evaluate whether the project is on target from both a business and operational perspective at all stages of the software life cycle. The CMMI for Process Improvement incorporates the following five tracks of the software development lifecycle:

Using tracks, you can organize activities to address matters of governance. Different tracks can overlap with each other. They don't have to describe specific tasks — they are meant to be conceptual "buckets" to organize how you approach your process. Each track corresponds to a governance checkpoint.

Activities describe a collection rather than an ordering of tasks undertaken to perform a single action. There are defined activities for each role, and they may overlap with other roles. You can track an activity using work items or create work products to support them. Within most tracks, you'll find a variety of activities, including:

The Develop Documentation and Verify a Product Requirement activities are examples of activities that provide a level of verification and accountability in the process. Tracks enable you to judge whether your process is on "track" — are we properly envisioning the project? Do we have a clear idea of what the software will do? What exactly are we building? By following the tracks and incorporating the right activities per track, we can avoid being led astray.

Note

Both MSF for Agile Software Development and MSF for CMMI Process Improvement have consistent views, including disciplines, qualities of service, cycles, and tracks. The chapter provided a very cursory examination of the tracks for MSF for Agile Software Development. If you look closely at the Agile documentation, you'll notice that the information presented under Governance and Tracks is identical. For more information, please refer to the process guidance documentation.

Work item types

Team Foundation Server uses work items to track assignments and work. MSF for Agile Software Development contains five work items: bugs, risk, tasks, scenarios, and quality of service requirements. Figure 21-6 shows a view of the Work Items window.

Note

SCRUM (one of the Agile methods) popularized a key innovation called the Product Backlog to track work progress. Product Backlog loosely inspired the Work Item Tracking functionality in Team System. In MSF, the product backlog is contained in two work products. The scenario list is the list of scenarios waiting to be implemented. The quality of service requirement list contains a list of quality of service requirements.

Figure 21-6

Please refer to Chapter 19 for more detailed information on the work item schema and how to customize work items within a team project.

Bug

A bug is a work item used to track and monitor problems within a software product. In order to be effective, a bug must be well documented, including the steps to reproduce the issue. A clear description of the bug is key to the process of "bug bashing" and will result in a higher-quality product. From the work item, the impact of the bug should be easily and clearly recognized. In MSF for Agile Software Development, bugs have four defined states:

Figure 21-7 shows a state diagram illustrating how a bug might transition in a practical scenario.

Figure 21-7

Quality of service (QOS) requirement

Quality of service is central to the MSF for Agile Software Development process. The mindset should be reflected from all roles represented on the project team and all tracks of the software design process. (See the "Mindsets," "Tracks," and "Roles" sections near the end of this chapter for more details.)

In particular, quality of service focuses on user experience, security, and performance. You can measure these factors using functional testing (stress and load testing, performance testing). Quality of service requirements set a high quality bar for your application. These requirements contain four default states:

For example, a load test might have to be performed for every build of a web application. This requirement might be enforced constantly throughout the development of an application. Once the load tests have been designed, they may be transitioned to "Resolved." Once the load tests have been performed and have passed testing, you can "Close" and complete the requirement.

Scenario

Scenarios take the place of use cases in MSF for Agile Software Development. They are built to determine a set of goals for each defined persona you establish in your project. Scenarios are used because they represent smaller pieces of functionality, a requirement to keep the iterations small. You must then figure out how to prioritize the list by looking at the outcomes. Will the customer be dissatisfied? If so, how much? Scenarios may take into consideration quality of service requirements.

Important

Scenarios should be written jointly with the customer wherever possible.

For each goal, create a list of successful and unsuccessful scenarios. In other words, try to figure out how the persona will reach the goal. These scenarios will be recorded as work items in Team System and will serve to help you anticipate problems and bottlenecks.

The scenario work item has four states:

Risk

A risk is a new work item type introduced in Team System (risk is not usually measured in the Agile development process). It can be defined as an outcome that can adversely affect a project. Each role within a development team should submit risks as work items, including as much information as possible to identify and mitigate it. It is important that you establish an open environment within your team to enable all members of your team to submit risk documentation.

A risk can be technical or organizational in nature. As you will learn, risk mitigation will help lower special cause variation within your project. The risk work item has three states:

Note

Risk can be found in the Identify Risk and Create Architectural Prototype workstreams.

Task

Tasks are created within a project to assign and complete work. Tasks can be specific to each role, such as development tasks and test tasks. When you create a task work item, it will be formatted (fields will be added and omitted) depending on the corresponding role. A task work item has three states:

Reports

Reports provide you with valuable metrics to measure the success and health of a software development project. In Team System, reporting is tightly integrated with the Team Foundation version control repository, the work item database, Team Foundation Build, and the test components of Visual Studio 2005. In MSF, reports provide snapshots of your project progress within each iteration; a progress meter on quality metrics; and a means to track and measure the effectiveness of each role within your software development team. For more information about reporting, please refer to Chapter 19 and the MSF for Agile Software Development documentation.

Категории