Delivering the MSF Agile Mindset
I’m Randy Miller (also known as Granville Miller) and I am the Program Manager for MSF Agile, which is shipping with Visual Studio 2005 Team System. MSF Agile is the newest addition to the Microsoft Solutions Framework (MSF). It is a scenario-driven, context-based, agile software development process that utilizes many of the ideas embodied in Team System. This process incorporates proven practices developed at Microsoft around requirements, design, security, performance, and testing. These practices can help develop more robust applications, but they become less effective without the MSF Agile mindset.
Getting the Right Tools
Since MSF Agile is part of Visual Studio Team System, many of the elements necessary to adopt the agile mindset are baked into the tooling. One of the important elements of an agile software development process is complementary activities. These activities work together to produce a better result than each one could by itself. The goal of complementary activities is for one to provide feedback on the other.
Consider the activity of unit testing. Unit testing is an important part of allowing us to be able to make changes without fear of breaking other functionality. We run the unit tests before and after we make changes. However, how do we know if we have written enough unit tests? If we do not write enough unit tests, we may falsely believe that our changes do not break something when indeed they do. The confidence level that we need is determined by the impact of something breaking.
For mission or safety critical projects, for example, this impact could be quite dramatic. We need to be absolutely sure that if we change something, it will not break something else. To reach this level of assurance, unit testing is combined with code coverage in Visual Studio Team System. The code coverage threshold, one of many possible test thresholds, determines the percentage of the code that needs to be covered by unit tests. For mission or safety critical applications, this threshold would probably be quite high.
Another area where tooling helps us become more agile is through the division and assignment of work. Work items (such as a scenario, quality of service requirement, task, bug, and risk) track the work on a project as it is being completed. When the work is completed, iteration plans in Microsoft Excel or Microsoft Project allow the project manager to focus on something other than, “Are you done yet?” MSF Agile provides guidance for the extended development team, the business analyst, architect, developer, and tester.
Automated load and stress testing tools complement the quality of service work items that specify security, performance, load, and stress requirements. Scenarios depict the system as a set of stories. Models depict the solution and infrastructure architect. These models are synchronized or verified against the code or deployment environment respectively. The process shows you how to do iterative development in Microsoft Excel or Microsoft Project. Detailed activities guide the way to a more productive agile experience.

Figure 1: Choose the MSF Agile process when creating a new team project
MSF Agile is not just the default process that ships with Visual Studio. The relationship between tooling and process goes much deeper than a book or website that is included in the box. This process guides people using the software development environment and the environment enacts the process. When you create a project and select to use MSF Agile, you immediately adopt the methodology across all pieces of your team project, including:
- Work item types and their workflow
Check-in policies (These have to be configured manually)
- Sharepoint document templates
- Security settings
- Process guidance
- Queries and reports
Each member of the project has access to the project backlog stored in the work item database. Reports provide rapid information on the project’s velocity and remaining work. This environment was built to support the entire software development team on an agile software development project.
Reporting
Complementary activities are a way that people can provide feedback. The idea is that downstream activities help us to get better at the earlier activities. We may get feedback from other people or from our own learning in the subsequent activities. Either way, the feedback is provided through human interaction. On the next iteration, we can apply that learning to become better at building the software. This is one of the principles of MSF Agile.
Tooling can also provide helpful feedback. We use reports in MSF Agile projects to show remaining work, velocity, trend analysis of bugs, and progress toward our test thresholds (such as percentage of code unit tested). These reports move our understanding of the dynamics of the project from intuition to concrete understanding. They allow us to assess the progress of the project toward completion, our eventual goal.

Figure 2: Visual Studio Team System reports on the remaining work
The key to an agile software process is to provide a small number of reports that capture the dynamics of the project. A large number of reports may provide too much or conflicting information and thus be more noise than information. Good project managers track and act upon a small number of project indicators rather than a view that provides every detail of a project. This gives them better decision making leverage.
Reports don’t always paint the rosy picture that we would like them to. If a report provides bad news such as the project is going to take longer than expected, it is better to find this out early in the project rather than later. We must adjust our functionality or schedule. We may have to clear project roadblocks. The most important thing is to understand the difference between guiding and meddling. Perhaps this is the most important part of the Microsoft culture that MSF Agile strives to incorporate.
Key Points
Getting the right tools is the key to becoming more productive on any type of project. Visual Studio Team System integrates the work of the business analyst, project manager, architect, developer, and tester to provide an end-to-end, collaborative development platform for the entire development team. MSF Agile is an agile software development process that utilizes complementary activities and this advanced tooling to make your team as productive as possible.