One of the problems with process is that it is inherently disconnected from your day-to-day activities. Without Team System, you have to rely on a traditional process binder (or CD-ROM) in the hands of your project manager. Processes are usually stored in thick paper-based documents that you have to manually refer to when needed. If you are using third-party Enterprise Project Management (EPM) software to manage your project management, there is an inherent disconnect between your tools (Visual Studio) and your project management framework. Team System aims to remove that limitation by providing an unprecedented level of integration between all aspects of the software life cycle.
One of the major obstacles with adopting process-driven development is the lack of process integration with your environment and tools. Originally, tools and process did not go well together. The original intent of the Agile Manifesto was to bypass the deficiencies inherent in the development tools and move away from documentation because, frankly, it prevented developers from doing what they should be doing — coding software! Yet if you work within a corporate environment, you need the documentation and the predictability to effectively run your project — especially when governance requirements set a high bar of accountability. Where, then, is the middle ground?
Fortunately, the tools have improved considerably. Team System promotes agility by automating many of the tasks that a developer would have to implement or document by hand. For example, during the course of a project, a developer can document a bug with a few simple button-clicks and keystrokes. The bug is then transmitted to the Team Foundation Server, where the bug results are aggregated and organized as a report for the project manager. Compare this to a tedious manual form-filling process and you can immediately see the productivity gains. More important, as a project manager you can very quickly get a view of the project health and progress.
Why is MSF such an important and key piece of Team System? Well, if you consider that Microsoft drives some of the largest and most ambitious software projects on the planet, you can assume that Microsoft has a great deal of experience in organizing projects, identifying common tasks, and defining optimal workflow patterns.
Consider one of the important concepts in examining development processes within Team System: The Microsoft Solutions Framework provides process guidance templates integrated with Team System, and it also provides customization and tailoring features so that you can develop your own process, capturing best practices for your teams. From a practical standpoint, some companies will find value in Team System's "out-of-the-box" process templates. However, in most cases, the template will have to be modified to fit in all your requirements.
For example, MSF for Agile Software Development has been designed with six primary roles. However, if you don't need all of the roles, you can selectively take some out. Alternatively, you can add new roles within a process. The framework has been designed to scale well to almost any circumstance and it can be flexibly extended to fit your needs. Process and guidance are necessary parts of any software development life cycle.
Can Team System function without a process? Theoretically, yes, but why would you want to? Processes provide a number of benefits, including helping you organize your team and workflow, and document your best practices (so you can avoid repeating mistakes in the future). In addition, processes provide insight about how a project is succeeding (or failing). The last point is a key consideration: If you are running without a process, it is very difficult to know how well you are doing. In fact, it's almost impossible to evaluate your progress if you don't gather any empirical data. If your processes are mostly ad hoc or nonexistent, Team System will help bring order and organization to your projects — making project management a whole lot easier.
The Microsoft Solutions Framework contains a consistent meta-model for software development processes. This model is shared across both MSF for Agile Software Development and MSF for CMMI Process Improvement. This section describes the key concepts, structures, and activities in MSF (represented in the diagram shown in Figure 21-1).
The project is composed of your team of peers, tracks (the iterative process of envisioning, planning, building, stabilizing, and deploying software on a continuous basis), and the Team Project (which is the physical manifestation of your project components and tools).
The team is composed of a collection of roles (including architects, developers, testers, and project managers). Each role has a distinctive collection of activities that are grouped into workstreams. The team is unified by the features of Team Foundation Server (work item tracking, version control, the build environment) and the Team Portal.
The team members assume equal responsibility vis--vis the project, but the demands are based on what role the team member plays within the larger team. Work items can be defined as a subset of activities — the project manager has to break down the activities into component parts that are then assigned to members of the team in order to reach a common goal. Work products are documents and templates that assist in the completion of a task. For example, a project manager may map out an iteration plan using a Microsoft Project template available on the Team Portal. The work items generated using the spreadsheet can then be modified and synchronized with Team Foundation Server, providing other members with a just-in-time view of their workflow.
The Microsoft Solutions Framework only represents but one piece of the puzzle. The development framework is designed to interact with the Microsoft Operations Framework (MOF) to provide not only guidance in the development of software, but also the deployment and long-term maintenance of software development projects. In a nutshell, think of the MOF as the IT Professional piece of the puzzle once your software project has been deployed. The MOF specifications are available on the Microsoft TechNet website at: http://www.microsoft.com/technet/.
The Microsoft Solutions Framework 4.0 is currently available from two sources. If you intend to deeply customize the process, we recommend you download the target process from the MSDN website:
You can obtain the MSF process templates and guidance directly from Team Foundation Server. To download the files to your desktop, launch Team Foundation Server and select Team Team Foundation Server Settings Process Template Manager. Simply click on one of the templates and click Download. A dialog box will prompt you for a location for the files on your hard drive and the transfer will begin. The download function is designed to enable your developers to locally modify any process template to make it fit the needs of your software development team (for example, to create new roles, incorporate new work products, and set up custom default tasks). For more information about process template customization, please refer to Chapter 22.
MSF process guidance is also available on MSDN at http://www.microsoft.com/msf/ and is updated on a regular basis. Please note that the process templates and integrated feature set with tools are only available via Team Foundation Server.