Unlike many other process frameworks, MSF for Agile Software Development is based on scenarios and context-driven actions. This makes a great deal of sense if you think about it, because most development processes have universally recognized tasks and activities — for example, releasing a product or closing a bug. It enables you to create guidance while remaining very flexible in the development of your processes.
MSF for Agile Software Development is primarily designed for an agile development team that doesn't need to focus on the CMMI maturity levels. Here are a few key characteristics of this process:
Open communication between team members. Freely sharing information within the team is a marker of project success. The work item infrastructure, SQL Reporting Services, and the Team Model all work together to open channels within your team.
Shared vision. Everyone on your team has to have the same vision of the project. Team System's project management tools and the open Team Model help achieve this goal.
Agility and adaptation. The capability to document every possible event that might occur within a software development project would result in volumes of documentation. Adaptation uses the mindsets and principles as a basis for dealing with unlikely or infrequent events.
Focus on the customer. Communicating with the customer is key to achieving the business goals in any software project. The Business Analyst role is designed to facilitate this focus.
People come first. Tools and process will only get you so far. The most important factor in any project is the people involved — your team members. Team System increases the productivity of your team by organizing your process in a central Team Portal, tracking workflow using work items, and providing an easy work environment by facilitating process through tool-process integration. If you want a project to succeed, the best thing you can do is create an empowering environment for your team.
End-to-end quality. Quality can be achieved in Team System using the iterative process and artifacts such as the Quality of Service Requirements and tests to maintain the highest levels of security and performance. You can also enforce quality by setting tool-driven quality gates in your development process. Quality gates are policies that ensure that your code meets a certain standard (mostly through extensive testing) before it can be checked into the source tree.
Frequent deployment. The best software products are designed out of a need to maintain the highest level of quality. Highly iterative processes and frequent testing will help in reaching that goal. The product should be used internally and fit the customer's requirements. Tools such as the Unit Test Framework and Team Build can drive your team to reach a high caliber of quality.
Customize MSF to your needs. As explained earlier, MSF is designed to be a base framework. There is no doubt that guidance is required for any successful project, but MSF gives you the option to integrate as much or as little as you want.
Value. The important factor that needs to follow through the implementation of software is value. Iterate often, communicate, and work on those features that are important for high return on investment.
Figure 21-2 shows the main page of the MSF for Agile Software Development process guidance.
Within your project, you can access the process guidance from the help menu (in Microsoft Excel or Microsoft Project) or from within Team Explorer.
The Agile "movement" started around 2001. This movement consisted of an outspoken group of professional developers that met at a workshop in Snowbird, Utah, to discuss new software development methodologies. At the time, developers were bogged down with formal processes and the need to extensively document their work. Projects were doomed to fail before they began because key features or issues were not identified at the start of the process, and there was no way to change them midprocess.
Many evolutionary processes were in development in the 1990s that focused on small teams, close interaction between programmers and business analysts, quick iterative programming cycles, and a move away from requirements.
The proponents of these new development methodologies came up with the term "Agile" and composed the Manifesto for Agile Software Development (you can read it in its entirety at http://www.agilemanifesto.org).
One of the key concepts behind the Agile movement is the idea that people are more important than process. The agile alliance was created from the emerging work of several Agile software development processes, including Extreme Programming (XP) and SCRUM.
For general information, articles, books, and other resources relating to Agile development, check online at http://www.agilealliance.org.