We have divided this book into four logical sections. These sections cover both tasks within the entire software development life cycle and the operational implementation of Team System in real world scenarios. The sections in the book include:
Deployment and Administration- The first step in deploying any product is the planning stage. The first five chapters walk through the process of deploying and configuring Team System within your development environment and help you make that transition as seamless as possible.
Project Creation- Once Team System is in place, you'll need to create the team project that will support the process of developing software. In the three chapters in this section, you learn how to customize a process to your needs and put it into play.
Extensibility and Customization- Default projects in Team System will not always fit your needs. You will sometimes need to change or modify components to better fit the way you are used to working. The extensibility and customization portion of the book shows you how to make Team System work for you.
Management: How is a project supposed to be handled in Team System? The product documentation may provide you with the right direction; however this book is designed to take it further. We look at nontechnological concepts, such as team communication, which are of the highest order of importance in a working development team. We'll show you things that the manual simply can't show you, and frame it within real-world scenarios.
Figure IN-2 shows a conceptual view of how each section fits into the big picture of both the operational and the software development lifecycles. The graph isn't completely accurate, because in many cases you will be implementing tasks throughout each lifecycle. For example, you will be continuously implementing and maintaining your servers using backup and recovery strategies. You will be using extensibility and customization to continuously improve your process. For example, you will be constantly implementing custom policies, custom reports and other extensibility hooks to help your team avoid repeating past mistakes, and to automate tasks that are taking your team a long time to accomplish. Realistically, you would want to constantly roll out your improvements into new process templates whenever a new project is envisioned.
If you are a server administrator or an IT professional, this section will greatly interest you. We cover topics such as planning, migrating tools and processes, configuring the build engine, and setting up security and a disaster recovery plan.
Chapter 1: Planning a Team System Deployment- In this chapter, you get an overview of Team Foundation Server-including a look at the architecture, components, and a brief overview of Team System as a complete product. The next task that is covered is the process of compiling the data for your project. For example, what are the requirements of the projects? Next is deployment planning, including capacity planning, paying close attention to the network architecture and topologies, deployment models, and even virtualization. We also look at security and test planning. Once a deployment plan has been conceived, it's important to determine whether your current hardware infrastructure supports Team System. You will find out everything you need to know, including what hardware is unsupported. Next we look at software requirements including required service packs and software components. What if you are already using tools to perform tasks such as source control or testing? (This is probably the case for a lot of software development teams.) You will learn how to migrate your current source control, work item tracking, reporting, build engine, and testing tools. In the migration portion of the book, we provide you with decision flowcharts to help you in the process of figuring out the best migration approach to take according to best practices. The final part of the chapter looks at licensing models and provides you with avenues to obtain copies of Team System. These topics are of particular interest to IT professionals.
Chapter 2: Advanced Installation and Tools Migration- When installing Team System, how do you handle the difficult situations and how do you migrate existing tools to the new platform? The standard documentation doesn't necessarily provide that information, which is the reason it's found in this book. The first part of the chapter defines the different IT roles within your organization and the elements found in your network infrastructure. We then look at the different installation options including the multiserver installations and the single-server installation. When looking at these installation options in detail, you'll find out the best practices to set up the application tier (AT), the data tier (DT), and the client tier (CT). Next is virtualization-you'll get an overview of the virtualization technologies available that work with Team System and the appropriate use and settings including how to work virtual servers within your existing network. The next topic is Team Explorer, the plugin that allows Visual Studio 2005 to connect to, and administer Team Foundation Server. You will get in-depth information about Team Explorer and details on how to effectively connect it to Team Foundation Server. You also learn other options for controlling the server. Finally, we review the migration path of your existing tools to Team System, including source control and work item tracking.
Chapter 3: Configuring Team Foundation Build- The build engine is at the core of any software development project. In many processes (especially Agile methodologies), the build will provide the key indicator of whether the project is on track. You'll get an overview of the Team Foundation Build architecture and the components of the build process (including types, reports, and execution). Next, we look at common build scenarios including common builds, nightly builds, weekly builds, and continuous integration (CI)-probably one of the most requested build configurations for the product. The chapter also includes a section on setting up the build server including information that will help you understand how builds are managed, how to set up build servers, setting up a common build site, and configuring security roles and permissions. This leads up nicely to the next chapter, which deals with the ever-important matter of security.
Chapter 4: Setting Up Security- One of the challenges in implementing security is that it is never simple. In Team System, you have to worry about role security, project security, server security-in fact, every component in Team System has a security feature built-in. If you are planning to deploy Team System in a real-world environment, these are important considerations! The chapter opens up with an overview of the Team Foundation Server security model. This includes a look at how Team Foundation Server manages groups, how global roles are defined, and permissions that are set for all groups. Next, you learn about security within certain components of Team System including Windows SharePoint Services, SQL Server Reporting Services, and other important parts of the server. Roles play an important part in the administration of security and get a lot of coverage. Some of the topics you will discover include creating and adding users to the system using Team System's graphical user interface and command-line tools. You then learn how to manage all the security roles on the server. Once the groups and roles have been defined, you will find out how to secure Team Foundation Server and common access security issues (and more importantly, the ways you can work around them). The chapter rounds up with security best practices, properly patching and updating your server (and other components), and logging and auditing to help you keep on top of your system security.
Chapter 5: Team Foundation Server Backup and Recovery- Security is all-important, but equally important is setting up a disaster recovery strategy. A hardware issue or user error may inadvertently cause data loss. Data (especially assets such as source code) is the lifeblood of a software development company. Losing data not only means losing time but also money. In this chapter, you learn how to troubleshoot problem situations by reviewing log files and learning about the various sources of support for help. Next, we review common installation errors-this overview will help you get around common problems experienced by users. The chapter also examines common administration problems and how they can affect your system. We then learn about disaster recovery in detail (including how it relates to Team System). Topics include server interdependencies, built-in backup tools, third-party tools, and the steps in writing an effective disaster recovery plan. Finally, we dig deeper in each of the components of Team System (SQL Server 2005, Team Foundation Server, and the client tools) and we learn how to not only recover from a disaster but also take proactive steps to avoid the disaster in the first place!
Once the proper planning and the Team System infrastructure have been put into place, the next step is to create a software development project. The project creation part of the book covers topics such as process template customization, the details in creating a Team System project, and finally configuration of that project. This portion of the book will be of special interest to project managers. Developers may also be interested in the process of customizing templates for project creation.
Chapter 6: Incorporating Your Process Using Microsoft Solutions Framework- This chapter looks at the Microsoft Solutions Framework and other processes available within Team System. First, you get an overview of the two process templates available in the product (MSF for Agile Software Development and MSF for CMMI Process Improvement). Next, you learn how to customize these preexisting templates to fit your particular process development needs by editing XML files or using third-party tools. A good portion of the chapter looks at the anatomy of a custom process template-specifically, we look at the Conchango implementation of Scrum within Team System. The last part of the chapter tells how to compile and create documentation (which can be viewed by all members of your team using the project site) and how to integrate your new methodologies into Team Foundation Server.
Chapter 7: Project Creation and Team Building- In the past, Visual Studio was a tool used by teams of developers but there was no integrated tool to allow you to work with developers, testers, and architects as a team. This chapter starts out by defining the differences between a team project and a Visual Studio 2005 project. Next, we walk through the process of creating a new team project including specifying settings, and a process template for your project. In the creation of a project, you may encounter common mistakes including permission errors and other problems. We teach you how to deal with them. Finally we look at the roles in your software development team, how they compare to MSF, and how to implement a project based on the roles.
Chapter 8: Managing Schemas Using Team Edition for Database Professionals- Once you have set up your team project, the next step is setting up your application infrastructure including your data tier. Team Edition for Database Professionals provides the tools to administer and develop data driven software applications. In this chapter, you learn about this Team Edition, including how to back up your database and work on it offline, how to develop a database using unit tests and the refactoring tools, how to use the build functionality within Team Edition for Database Professionals, and how to compare and release your database against a production system. Finally, we show you how to create a custom data generator.
Team System is an interesting product unlike any that has been developed by Microsoft. It is actually not designed to run right out of the box-software development teams should customize the tool to fit their needs before it is deployed. You'll see a lot of evidence for this in the wide breadth of customization and extensibility support within Team Foundation Server. This section will be of particular interest to project managers (who will want the customizations implemented) and developers who will actually perform the customizations in many cases.
Chapter 9: Creating Custom Development Tools- You will find in some cases that Team System requires add-ins to fit your particular development environment. This chapter shows you how to extend and customize Team System (and Visual Studio 2005). The first part of the chapter defines the difference between extensibility and customization and shows examples supporting these two concepts. Next, we look at the Team Foundation Object Model and see how it allows you to create custom applications that interact with many components within Team Foundation Server. Next, we look at the services on Team Foundation Server that are accessible-the collection of these services is called the Team Foundation Core Services (TFCS). You learn about registration, notifications, linking, and user groups, and common structure capabilities on the server. Next, we look at eventing with a concrete case study of how you can autogenerate a work item when a scenario is submitted. Finally, we look at Visual Studio 2005 programmability, including macros, and present the resources available through the Visual Studio Industry Partner (VSIP) program.
Chapter 10: Extending the Windows SharePoint Team Portal- The project portal provides you with a centralized area to manage and view the project details; however, the Team System documentation provides very little information on how to extend the portal. In this chapter, you get an overview of the portal components (including WSS files, site definitions, and elements) and a detailed technical review. Next, we get our hands dirty to create and customize Web Parts that integrate with Team System. (Specifically, we'll add a work item browser to the Team Portal.) You'll learn the entire process from creation to deployment. The chapter also provides information on how to customize your portal using a browser and Microsoft FrontPage, and then how to deploy your portal within a process template.
Chapter 11: Administering and Customizing Work Items- In terms of workflow, work items are an important feature of Team System. This chapter starts out by giving you a good look at common work item concepts including the object model (OM) and the application program interface (API). After reading the chapter, you'll be intimately aware of the components of work items and how these components fit in the grand scheme of things. Next we examine the default work item types available in Team System's default process templates. You also learn about the tools that are available to manipulate work items, including Visual Studio 2005 and WITImport/WITExport. What is the proper way of working with and deploying work items? The chapter covers topics such as properly naming work items in play, and adding support for features such as alerts, source control integration, and work item history. The second part of the chapter shows you how to customize your work items. You learn a little more about work item internals and the tools and resources available in the Extensibility toolkit. You will find out how to import and export work items, customize existing work items, test your work items, create queries, and much more. The chapter wraps up with a look at the future direction of work items in the next version of Team System.
Chapter 12: Setting Up Team Foundation Version Control- Microsoft designed Team Foundation Version Control is a brand new source control system. In this chapter, you learn how to configure the source control features using the Team System user interface. You also learn how to integrate and navigate version control using the Source Control Explorer. We look at important features such as changesets, check-in policies, branching and merging, and shelving. Finally, the chapter examines how to migrate projects residing in Microsoft Visual SourceSafe and other third-party tools to Team System's version control solution.
Once you have deployed Team System, created a project, and customized it to your needs you then need project managers to put the software development project into play. The chapters in this section deal with the all important day-to-day management details such as communication (including setting up an infrastructure for large distributed teams), monitoring project metrics (and identifying problems), and then the all-important process of wrapping up a project, which includes performing a postmortem that will bring up information which will benefit your future projects.
Chapter 13:Managing Your Team Projects- In this chapter, you learn how to work with your team members. You may be wondering how this fits in with Team System, especially with Team Foundation System. Some of the topics we tackle include setting up status meetings and managing time and milestones. Team System offers many possibilities for setting up and administering these important tasks. In particular, we look at the core project management tasks including communication, metrics, and the steps to take to wrap up software development projects. The next chapters build on this and cover in detail all the responsibilities and tools available to the project manager. Finally, we look at test case management, specifically, how to incorporate tests from Team Edition for Software Developers and Team Edition for Software Testers into your check-in and build processes.
Chapter 14: Effective Team Communication- This chapter covers the challenges of communicating as a team and examines the current communication methods in use (including e-mail, telephone, and file shares). We provide you with best practices on improving communication using Team Foundation Server and cross-platform communication. The chapter provides a case study on implementing alerts via Instant Messenger (IM). Finally, we look at other communication tools such as TeamLook and Groove 2007.
Chapter 15: Working with Geographically Distributed Teams- Working with a team distributed across many countries and continents can be a challenge on a logistical and operational level. This chapter helps you set up Team System to simplify the administration tasks and set up an infrastructure that will scale on that level. The first part of the chapter shows you how you can identify the challenges within your particular company and how to set up communication channels across great distances. The next part of the chapter examines the tools available in Team System to simplify working with geographically distributed teams. In particular, a lot of attention is placed on the Team Foundation Server proxy, including installation steps and configuration, and the distributed load testing tools. Finally, we examine some of the ways you can enable foreign language support and internationalization within Team Foundation Server.
Chapter 16: Monitoring Your Team Project Metrics Using SQL Server Reporting Services- One of the key ways you can judge the health of a project is by using the metrics available through the Team Reporting feature in Team System. First, you get an overview of SQL Server 2005 internals, specifically the architecture of SQL Server Reporting Services. Once you understand the architecture, you get an overview of how to administer the database server. Some of the topics covered include the structure of the data warehouse cube, fact and history tables, schemas, and data regions. One of the key architectural components of the reporting service is the online analytical processing (OLAP) component. You get a view of the architectures, data warehouse cubes, and parameters. The Microsoft Solutions Framework (MSF) provides a good guide to let you know what reports should be looked at and how to interpret them. Next, you learn how to access the reports on Team Foundation Server. Next, you learn the allimportant topic of how to customize your project reports using Report Designer, Report Builder, and Microsoft Excel to get the project data you need. Finally, you learn how to manage the data warehouse and set security permissions on reports including Team Foundation report site permissions and rolebased security.
Chapter 17: Completing Software Projects- What do you do when your project has been completed? This chapter shows you how to export and save your project and settings. After your project has been completed, you may opt to do a project and server postmortem. This process may yield new optimizations for your development process. As a result, you may develop a new set of best practices. These optimizations can then be integrated into your project template, including changes in your work items and documentation. How do you delete a project (or port over a project to another server)? This chapter shows you how to delete a project using DeleteTeamProject and uninstalling Team System as a whole. Finally, we examine new future directions for Team Foundation Server and Team System.