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
- Sharepoint document templates
- Security settingsrocess 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.
About the author
Randy Miller
Blog:
Randy Miller, aka Granville Miller, is writer and architect of MSF Agile. As a software developer and architect, Randy has spent more than seventeen years in the industry, working at large companies such as Microsoft, IBM and Nortel as well as start-ups such as BroadBand Technologies, Make Systems, Access Network Management, and TogetherSoft. He is the co-author of Advanced Use Case Modeling and A Practical Guide to Extreme Programming. His interests include software development technology and agile software development processes. He is an OMG-Certified UML Professional with a UML 2.0 advanced certification.
|