Visual Studio 2005 Team System: Overview
To be successful, businesses today are faced with the need to build and maintain increasingly complex Information Technology (IT) solutions. Additionally, they have relied upon new technologies to expand business capabilities and develop entirely new business opportunities. While IT organizations once played a supporting role, they are now a key participant in most business strategies.
Naturally, businesses want to get the most for their investment in IT projects, which means IT organizations are under increasing pressure to do more with less. The push for greater cost efficiency is complicated by the need to instill predictability in IT projects. However, such measures usually result in cumbersome processes and monitoring overhead that merely shift the expense to a different problem. Gone are the days of opportunistic development and expansive IT budgets.
Complex applications require multi-disciplined teams to deliver them. As with any major undertaking attempted by a team, communication is a fundamental component of success. The new Visual Studio Team System expands on Microsoft's demonstrated ability to deliver highly productive tools by offering businesses tightly integrated and extensible life-cycle tools that increase the likelihood of success. This success relies on how well teams can communicate with one another to reduce the complexity of delivering solutions.
While the output of many IT solution projects is software, producing software is not the goal of the project. Instead, software is a means to an end to drive differentiated business value. To manage risk and drive the predictability of success, most IT organizations turn to implementing various tools and processes to support the SDLC. Most attempts to increase productivity in software development have not worked well. They have either been too burdensome to implement, counterproductive, or simply did not focus on the core problems afflicting team development.
- Communication: Large, mission-critical applications are built by teams that have a significant number of participants that never write code, including: business sponsors, project managers, architects and testers. Moreover, teams themselves have become more geographically distributed and specialized. The gaps that form between role boundaries provide opportunities for issues to get dropped or for plans to diverge unintentionally. For teams to be effective communication must flow readily and it must be integrated into all of their daily activities.
- Tool Bundling: In recent years, there has been considerable consolidation in the SDLC tools industry. However, simply bundling a collection of tools does not yield tool integration. It only creates a bundle of tools. As with role boundaries, gaps form between non-integrated tools that are not designed to facilitate the automatic flow of data between tools. This lack of integration necessitates manual intervention, which provides additional opportunities for issues to get dropped. Integration at the data layer allows for the automation of data flow across tools and common reporting.
- Ill-Fitting Process: Complicating the adoption of any process is that a paradox exists in that developers are both linchpin and weakest link in many life cycle processes. A process that does not fit the work style of the team members (and the development staff in particular) will encounter significant resistance. The challenge is to balance productivity and innovation with predictability and repeatable processes. When this balance does not exist, everyone struggles with the fact that the process is overhead and simply an impedance to getting work done. Many processes are very document-centric. As such, they require extra effort outside of the normal flow of daily activities to maintain. Whether a team uses an ad-hoc, agile, or formal process, every team can benefit from automating and integrating the software development process.
- Disappointing Return on Investment (ROI): The pain from the CIO's perspective is that a huge amount of the IT budget is going towards activities and tools that deliver a discouraging return on investment. Most attempts to adopt processes and SDLC tools are hampered by steep learning curves, lack of tool integration, high initial acquisition costs, ongoing maintenance, special skills acquisition, and the need for dedicated administrators. The resulting total cost of ownership surrounding SDLC tools is simply untenable. Consequently, the CIO has a hard time justifying their expense since it does not appear to deliver any appreciable value.
When Microsoft first released Visual Basic, it made Windows software development available to the masses by reducing its complexity. With Visual Basic 6.0, Microsoft enabled millions of developers to quickly develop client/server applications. Recently, with Visual Studio .NET, Microsoft provided developers with the tools and technology to easily develop distributed applications. With Visual Studio 2005 Team System, Microsoft is addressing the growing complexities of applications and the life cycle required to design, develop, and deploy them by providing the tools and guidance needed to enable predictable, repeatable results without trading off productivity and innovation.
- Communication: Visual Studio Team System focuses on enabling better communication by reducing the overhead of reporting and by opening new channels of communication between team members. For example:
- Simplified reporting is achieved by automating the collection of information from the tools that team members use. Data gathered from Visual Studio Team System is persisted in a data warehouse that enables reporting and visibility of project status to all members of the software development team and beyond.
- Project managers can translate customer requirements into work items for the development team and subsequently track the status of the work items to monitor project status.
- The Distributed System Designers translate application development and deployment requirements into a common language (SDM) that allows developers and operations to communicate.
- Integrated Tools: The success of Visual Studio has proven that developers prefer an integrated development environment with ready access to the tools they need. Visual Studio Team System builds on this success by incorporating the testing and performance tools that developers require into the development environment, such as unit testing, code analysis and performance profiling. This enables developers to improve the quality of their code earlier in the life cycle without disrupting the way they work today. By equipping developers with the tools they need to identify and address quality issues early, more product defects are identified and fixed when it is cheapest to do so.
- Simplified, Integrated Workflow and Process: With Visual Studio Team System, process is not just documentation. It also manifests itself as actual tool behavior changes. When you chose the process at project inception, you are also choosing the workflow and work products, which then drive how the system behaves. Support for the SDLC process is built-in, which makes for seamless workflow support. By integrating process into the tools team members use on a daily basis, Visual Studio Team System lowers the barrier to adopting process and enables the automatic collection of cross-functional project metrics without the overhead associated with manual reporting.
- Increased Return on Investment: It is with improvements in communication and productivity that business will realize increased ROI for their investment in SDLC tools and processes. Visual Studio Team System provides a cost effective solution to managing the software development life cycle through its use of widespread integration across all of the SDLC tools. By providing a cohesive toolset and building on existing knowledge, Visual Studio Team System provides an approachable environment that helps software development teams be productive without requiring mastery of unnecessarily complex concepts and rigid tools.
Visual Studio Team System increases team productivity and project predictability by integrating SDLC tools on the surface at the UI level, below the surface on the data level and in the project context on the process level.
- User Interface Integration: Seamless integration between tools is a key productivity enhancement. Visual Studio Team System provides a consistent user experience across the entire suite of SDLC tools. For developers, activities such as unit testing, work item tracking, code profiling, and code analysis are available from within their current environment.
- Data Integration: Visual Studio Team System eliminates the silos of data found in most SDLC tools offerings and enables an aggregated view of the project status by using a data warehouse that is common across the toolset. Teams manage projects according to the metrics they are able to collect. Today, that data is primarily limited to defect tracking. The data integration in Visual Studio Team System will revolutionize the way people manage project metrics by leveraging a wide variety of data from across the SDLC. Visual Studio Team System will collect accurate data not just for defect tracking, but for test results, code coverage, code churn, task progress, etc. through the natural workflow of the team. This data is presented in several standard reports that customers and internal Microsoft teams have found to be key metrics in managing project success. In addition, teams can create their own custom reports. Only when data is viewed in the large context of the project can teams accurately report the state of the project.
- Process Integration: In Visual Studio Team System, tool behavior is dictated by the process chosen at project inception. By integrating process with tools, Visual Studio Team System helps ensure nothing is lost between phases of the project or between various team roles. Team efficiency is gained by automating the transfer of work between team members. Companies that standardize on processes can correct systemic problems through process improvements without increased workload on the team. In addition, process integration that does not increase workload lowers the overhead commonly associated with adopting process in the SDLC.
While there are fundamental tools that should comprise any SDLC tool offering (e.g., architecture tools, testing tools, etc.), the SDLC has no fixed number of tools. When tools that support the SDLC are integrated, teams see the benefits in increased team efficiency and reduced complexity. Visual Studio Team System will provide the foundation on which all vendors can exchange information in a common, publicly understood format. This, in turn, will foster a vibrant ecosystem of partners who can build tools that are truly integrated and therefore reduce the complexity of building IT solutions, help facilitate communication and encourage collaboration among teams. To derive the maximum value of integration across UI, data, and process, you need extensibility. Extensibility enables interoperation.
Visual Studio Team System was designed on an extensibility model. The SDLC tools Microsoft provides utilize the same extensibility features that are available for third-parties to use. Extensibility occurs at the three levels of integration: UI, data, and process.
- User Interface Extensibility: Visual Studio Team System uses the existing Visual Studio Industry Partner (VSIP) program to plug complementary products and services into the Visual Studio Integrated Development Environment (IDE).
- Data Extensibility: Visual Studio Team System uses Visual Studio Team Foundation Core Services (TFCS) to integrate these tools with each other. TFCS provides a set of services that enables integration between tools without requiring a tight coupling between the tools. TFCS also provides for the collection of data from third-party tools into the same data warehouse used by Visual Studio Team System.
- Process Extensibility: Visual Studio Team System uses methodology templates to define the process that individual projects will follow. There is no universal process that will work for all organizations, or even all projects within an organization. To address this, Visual Studio Team System is a flexible toolset that works with both agile and formal processes. Microsoft's Global Solution Integrator partners will provide their own product consumable methodology templates; or, you can create your own. Process extensibility allows customization of work item types, check-in policies, custom reports and project management templates.
For more information, see Visual Studio 2005 Team System: Microsoft Solutions Framework and Visual Studio 2005 Team System: Extending the Suite.
Microsoft Visual Studio 2005 Team System provides tools to support the entire software development team:
- Architects: Visual Studio 2005 Team Architect Edition includes integrated and productive tools for visually constructing service-oriented solutions that are designed from the onset for their deployment environments. For more information, see Visual Studio 2005 Team System: Designing Distributed Systems for Deployment.
- Developers: Visual Studio 2005 Team Developer Edition equips developers with advanced static analysis, code profiling, code coverage, and unit testing tools that enable teams to design for quality, early and often throughout the life cycle. For more information, see Visual Studio 2005 Team System: Building Robust and Reliable Software.
- Testers: Visual Studio 2005 Team Test Edition builds on the developer offering to better equip testers with the tools they need to manage and run a wide assortment of tests, including unit tests, manual tests, web tests and advanced load testing tools that enable teams to verify the performance of applications prior to deployment. For more information, see Visual Studio 2005 Team System: Enabling Better Software through Better Testing.
- Project Managers: Visual Studio 2005 Team Foundation delivers a series of project management tools based on the software project managers already know: Microsoft Excel, Microsoft Project, and Windows SharePoint Services. With Microsoft Office integration, project managers no longer need to manually map data from these applications onto the data used by the engineering team. A project site provides a dashboard view of project status and drill-down capability to stakeholders. Rich reports open up the metrics collected throughout the natural workflow of the team. A customizable project process, based on industry-proven practices, drives the life cycle. For more information, see Visual Studio 2005 Team System: Software Project Management.
- Team Development: Visual Studio 2005 Team Foundation also provides team collaboration tools that enable organizations to effortlessly manage and track the progress and health of software projects. The Portfolio Explorer integrates these same project work products found on the project site into the Visual Studio IDE for effective team access. Visual Studio 2005 Team Foundation also provides an extensible work item tracking system and enterprise-class source code control. For more information, see Visual Studio 2005 Team System: Enterprise-Class Source Control and Work Item Tracking.
Figure 1. Visual Studio Team System
Complexity is the bane of modern business. It bleeds the bottom line, sacrifices the top line, and exerts pressure on everything in between. As their applications grow in complexity, software teams desperately need the same RAD principles of simplicity and flexibility to scale with them. Reducing complexity means enabling greater productivity, saving costs and pushing the bottom line lower, while saving time and offering more opportunity to increase the top line.
With Visual Studio Team System, organizations can:
- Reduce the complexity of delivering modern service-oriented solutions that are optimized for their operational environment.
- Facilitate collaboration among all members of a software team, including business analysts, project managers, architects, developers, testers, and operations managers.
- Customize and extend their own internal process frameworks or choose from over 450 supplemental products from over 190 partners.
For more information on the other members of Visual Studio Team System, see:
- Visual Studio 2005 Team System: Designing Distributed Systems for Deployment
- Visual Studio 2005 Team System: Building Robust and Reliable Software
- Visual Studio 2005 Team System: Software Project Management
- Visual Studio 2005 Team System: Enterprise-Class Source Control and Work Item Tracking
- Visual Studio 2005 Team System: Microsoft Solutions Framework
- Visual Studio 2005 Team System: Extending the Suite
- Visual Studio 2005 Team System: Enabling Better Software Through Better Testing