INTRODUCTION

IN JUNE 1999, MICROSOFT STARTED TO RE-EVALUATE HOW Visual Studio was being used as part of the software development process. Microsoft was continuing to serve the needs of an individual programmer through the highly productive "code-focused rapid-application-development" features of Visual Studio, but wasn't doing much to help programmers work together as a team. And what about software architects — how should they be working with the programming team? And testers? Project managers?

Many teams had begun to set up their own solutions using a mixture of third-party, in-house, and vendor-provided tools to address such challenges as version control, bug tracking, and team communications. But this mishmash of tools can be tricky to set up and maintain, and even more difficult to integrate. Microsoft sought to address this challenge by providing an integrated set of tools designed to address the needs of the entire software development team. Thus, Visual Studio Team System was born, and was first released with the Visual Studio 2005 product line.

Team System was built from a foundation of tools and technologies that Microsoft had been using internally for many years to build some of the most complex software projects ever undertaken. Team System appealed not only to programmers, but to all members of the development team — architects, application developers, database developers, testers, and project managers. Team System was built to address the entire software development lifecycle, more broadly known as application lifecycle management.

Three years later, Visual Studio 2008 Team System evolved from the previous version to include even more tools and functionality for all members of the project team to use.

THE NAME CHANGE

Observant readers will notice that nowhere in the title of this book do the words "Team System" appear. And, other than in the brief history you just finished reading, you won't see the words "Team System" listed anywhere else in this book. So, what happened to "Team System"?

Microsoft did some research and found that by creating two Visual Studio brand names, customers felt confused over the differences between the products. "Visual Studio" had been positioned as the basic tool for developers to use, while "Visual Studio Team System" was positioned as a set of tools for software development teams. However, almost all professional developers work on teams, and, hence, the term "Team System" was somewhat meaningless. So, the decision was made to drop the "Team System" name, and consolidate everything around a united Visual Studio brand family.

There are other somewhat subtle reasons for this change as well. However, the long and short of it is that, in the 2010 product lineup, the "Team System" brand no longer exists, but the products and technologies are still there (and better than ever).

VISUAL STUDIO 2010 PRODUCT LINEUP

Table I-1 outlines the new product lineup for Visual Studio 2010.

Table 1. Visual Studio 2010 Product Lineup

PRODUCT NAME

DESCRIPTION

Microsoft Visual Studio 2010 Ultimate with MSDN

The comprehensive suite of application lifecycle management tools for software teams to help ensure quality results from design to deployment.

Microsoft Visual Studio 2010 Premium with MSDN

A complete toolset to help developers deliver scalable, high-quality applications.

Microsoft Visual Studio 2010 Professional with MSDN

The essential tool for basic development tasks to assist developers in implementing their ideas easily.

Microsoft Visual Studio Test Professional 2010 with MSDN

The primary tool for manual and generalist testers who need to define and manage test cases, execute test runs, and file bugs. The Test Professional product includes Microsoft Test Manager, which is introduced in Chapter 14.

Microsoft Visual Studio Team Foundation Server 2010

The server component for team development, version control, work item tracking, build automation, and reporting.

Microsoft Visual Studio Lab Management 2010

The tools to support virtual labs, and enable better developer and tester collaboration when paired with other Visual Studio tools.

Visual Studio 2010 Premium contains all the functionality of Visual Studio 2010 Professional, and Visual Studio 2010 Ultimate contains all the functionality of Visual Studio 2010 Premium. Visual Studio 2010 Ultimate also includes all of the functionality available in Visual Studio Test Professional 2010.

Table I-2 provides a detailed look at the functionality contained within each Visual Studio 2010 edition:

Table 2. Visual Studio 2010 Editions

VISUAL STUDIO EDITION

FUNCTIONALITY

Microsoft Visual Studio 2010 Ultimate

IntelliTrace

 

Unified Modeling Language (UML)

 

Architecture Explorer

 

Logical class designer

 

Test case management

 

Manual testing

 

Test record and playback

 

Layer diagrams

 

Web performance testing

 

Load testing

Microsoft Visual Studio 2010 Premium

Coded user interface (UI) testing

 

Performance profiling

 

Code coverage

 

Database change management

 

Database unit testing

 

Test impact analysis

 

Static code analysis

 

Code metrics

 

Database deployment

 

Test data generation

Microsoft Visual Studio 2010 Professional

Silverlight development

 

Web development

 

Windows Presentation Foundation (WPF) development

Multi-core development

 

Cloud development

 

Windows Forms development

 

Office development

 

Customizable IDE

This book focuses on the functionality contained in Visual Studio 2010 Premium and Visual Studio 2010 Ultimate.

MODERN SOFTWARE DEVELOPMENT CHALLENGES

Software developers share common challenges, regardless of the size of their teams. Businesses require a high degree of accountability — software must be developed in the least amount of time, with no room for failure.

Some of these challenges include the following:

  • Integration problems — Most tools commonly used by software development teams come from third-party vendors. Integrating with those tools can pose a major challenge — in many cases, it requires duplicating or copying data into multiple systems. Each application has a learning curve, and transmitting information from one application to another (incompatible) application can be frustrating and time-consuming.

  • Geographically distributed teams — Many development and management tools don't scale for geographically distributed teams. Getting accurate reporting can be difficult, and there is often poor support for communication and collaborative tools. As a result, requirements and specifications can be mapped incorrectly, causing delays and introducing errors. Global teams require solid design, process, and software configuration management all integrated into one package. There aren't many software packages that can deliver all these features, and those that do exist tend to be incredibly expensive.

  • Segmentation of roles — Specialization can be a huge problem on a team. Experts can assume that other departments are aware of information that doesn't end up in the status reports, but may greatly affect the project as a whole. Interdepartmental communication is a huge and prevalent challenge.

  • Bad reporting — This is an offshoot of the segmentation problem. In most cases, reports must be generated manually by each team, which results in a lack of productivity. There aren't any effective tools that can aggregate all the data from multiple sources. As a result, the project lead lacks the essential data to make effective decisions.

  • Lack of process guidance — Ad hoc programming styles simply don't scale. If you introduce an off-cycle change to the code, it can cascade into a serious problem requiring hours and days of work. Today's software has a high level of dependencies. Unfortunately, most tools don't incorporate or enforce process guidance. This can result in an impedance mismatch between tools and process.

  • Testing as a second-class citizen — Shorter cycles and lack of testing can introduce code defects late in the process. Manual testers are almost completely unaddressed by software development tools vendors. Consequently, poor collaboration between developers and testers often results in wasted back-and-forth effort and software defects.

  • Communication problems — Most companies use a variety of communication methods (such as email, instant messaging, memos, and sticky notes) to send information to team members. You can easily lose a piece of paper, or delete an important email message, if you are not careful. There aren't many centralized systems for managing team communications. Frequent and time-consuming status meetings are required to keep the team on track, and many manual processes are introduced (such as sending email, as well as cutting and pasting reports). Fundamentally, the problem is that there is no communication between the tools and the project leads.

Companies introduce methodologies and practices to simplify and organize the software design process, but these methodologies must be balanced. The goal is to make the process predictable, because in a predictable environment, methodologies keep projects on track. Conversely, methodologies add tasks to the process (such as generating reports). If your developers spend too much time doing these tasks, they'll be less productive, and your company won't be able to react competitively.

ENTER VISUAL STUDIO 2010

Application lifecycle management is the concept of managing your software development project throughout all phases of its life. Building upon Visual Studio 2005 Team System and Visual Studio 2008 Team System, the application lifecycle management capabilities of Visual Studio 2010 were designed to mitigate or eliminate many of these challenges.

There are three founding principles behind the application lifecycle management capabilities of Visual Studio 2010: productivity, integration, and extensibility.

Productivity is increased in the following ways:

  • Collaboration — Team Foundation Server centralizes all team collaboration. Bugs, requirements, tasks, test cases, source code, and builds are all managed via Team Foundation Server 2010. All reporting is also centralized, which makes it easy for project leads to track the overall progress of the project, regardless of where the metrics are coming from.

  • Manage complexity — Software development projects are more complex than ever, and getting more complex year by year. Team Foundation Server helps to manage this complexity by centrally tracking your entire software development process, ensuring that the entire team can see the state and workflow of the project at any given time. Additionally, tools such as the architecture tools provided in Visual Studio 2010 Ultimate can help reduce the complexity of applications by providing designs that can be used to visually reverse-engineer existing code bases.

Integration is improved in the following ways:

  • Integrated tools — These facilitate communication between departments. More importantly, they remove information gaps. With the Visual Studio 2010 family of products, integration isn't an afterthought — it's a core design consideration for the toolset.

  • Visibility — Visual Studio 2010 and Team Foundation Server increase the visibility of a project. Project leads can easily view metrics related to the project, and can proactively address problems by identifying patterns and trends.

Extensibility is provided in the following ways:

  • Team Foundation Core Services API. — Most of the platform is exposed to the developer, providing many opportunities for extensibility and the creation of custom tools that integrate with Team Foundation Server.

  • IDE — The Visual Studio 2010 IDE itself is extensible, allowing third parties and end users to add everything from additional tool capabilities to even new language compilers to the development environment.

APPLICATION LIFECYCLE MANAGEMENT

To best demonstrate how Visual Studio 2010 can help in the process of application lifecycle management, let's run through a typical scenario with a fictional software development company called eMockSoft. eMockSoft has recently signed a partnership with a distributor to release its catalog of products. The distributor has requested a secure Web service to transmit inventory and pricing information to internal and external partner organizations.

Let's look at the scenario as it applies to application lifecycle management and the Visual Studio 2010 tools.

Requirements

The project manager meets with the sponsor to obtain requirements for the project. The requirements will inform the development team about what the project sponsor expects the software to deliver. The project manager can use a tool of choice (such as Visual Studio, Excel, or Microsoft Project) to store these requirements in Team Foundation Server. The project sponsor can validate and track these requirements using a SharePoint-based team project portal generated by Team Foundation Server. The team project portal surfaces reports and other artifacts stored in Team Foundation Server to a Web-based SharePoint site.

The infrastructure architect can now begin the system design.

System Design and Modeling

Based on the client specifications, the infrastructure architect can use the new UML tools in Visual Studio 2010 to define the external Web service. Meanwhile, the project manager can track the progress of the designs, including the diagrams that were generated. Based on the specifications, the project manager can then break work down into tasks (also stored in Team Foundation Server) to be assigned to developers on the team.

Code Generation

The developer receives work assignments and reviews the UML diagrams that were designed by the architect. The developer checks the specifications — this application requires a secure Web service using Web Services Enhancements (WSE) 3.0. The developer writes the necessary code, and does some preliminary testing, using static code analysis and unit testing tools built into Visual Studio 2010. Throughout the day, the developer checks the code and tests into Team Foundation Server 2010.

Testing

The tester checks the progress of the development team by monitoring the nightly builds and automated tests. Using Visual Studio Lab Management 2010, each nightly build triggers the automatic creation of a virtual machine that is ready each morning for the tester to begin testing with. The tester uses Visual Studio Test Professional 2010 to author, manage, and execute a suite of manual test cases each day to surface potential bugs for the development team. The tester files a bug in Team Foundation Server that is assigned to the developer to fix.

All bug reports are stored in Team Foundation Server, and provide team members and project sponsors with full visibility into the progress of the project.

Putting It into Context

This is a just simple example that examines just a few of the ways in which Visual Studio 2010 can assist with application lifecycle management. Throughout this book, you will discover other examples that can help your team become a more cohesive unit and ship better software.

WHO IS THIS BOOK FOR?

This book primarily targets teams of professionals in the field of commercial or enterprise software development — in other words, intermediate to advanced users. You are likely to find the book useful if you are any of the following:

  • A developer, tester, or architect who wants to learn how the Visual Studio 2010 family of products can help you perform your job

  • A project manager who must manage a software development project

This book is not designed for the absolute beginner. The focus is on practical application of the tools, code samples, and hands-on scenarios. The book's organization makes it easy to use as both a step-by-step guide and a reference for modeling, designing, testing, and coordinating enterprise solutions at every level.

Visual Studio 2010 is designed for software teams of all sizes. So, whether you have a team of 5 or 2,000 members, this book includes useful information for you related to Visual Studio 2010 and application lifecycle management. Unlike most Wrox books, this book targets all roles in the software development organization — architects, developers, testers, project leads, and management — not just developers.

WHAT DOES THIS BOOK COVER?

This book includes a complete overview of the application lifecycle management capabilities of Visual Studio 2010. The book is divided into five main parts, based around the different roles on the software development team:

Part I: Architect

This section of the book examines the tools available in Visual Studio 2010 related to the architect role. After a brief introduction to architecture concepts, the discussion dives into all the new UML tools available, including use case diagrams, activity diagrams, sequence diagrams, class diagrams, and component diagrams. You then learn about the Architecture Explorer and how it can be used to understand the architecture of your application. Finally, this section wraps up with a discussion of layer diagrams.

Part II: Developer

This section of the book covers all the topics of most interest to a developer who is creating an application with Visual Studio 2010. Unit testing, refactoring, static code analysis, and code coverage are all covered in detail. The capability to handle development, testing, and deployment of database applications is also covered, as are advanced application debugging techniques using the new IntelliTrace functionality.

Part III: Tester

Visual Studio 2010 has numerous tools available for testers to use, and this section covers all of them. The examination starts out with a look at Web performance and load testing. After that, the new manual testing functionality is discussed, as well as the capability to automate user interface tests. This section concludes with a look the new lab management capabilities of Visual Studio 2010, which allow you to make use of virtual machines to automatically spin up test environments that can be used to execute tests.

Part IV: Team Foundation Server

This section is all about the capabilities that Team Foundation Server provides. It discusses the new architecture of Team Foundation Server 2010, and then delves into the version control system and some best practices surrounding branching and merging using Team Foundation Server. Finally, there is an in-depth look at some of the new changes to the automated build process, Team Foundation Build.

Part V: Project/Process Management

The final section of the book deals with the Project and Process Management functionality of Visual Studio 2010 and Team Foundation Server. The new process templates that ship with the product are examined, along with the new backlog and capacity planning features. The reports that ship with Team Foundation Server also are examined. Finally, some of the more common process template customizations are shown.

CONVENTIONS

To help you get the most from the text and keep track of what's happening, we've used a number of conventions throughout the book.

Warning

Boxes like this one hold important, not-to-be forgotten information that is directly relevant to the surrounding text.

Note

Notes, tips, hints, and tricks are offset and placed in italics like this.

As for styles in the text:

  • We highlight new terms and important words when we introduce them.

  • We show keyboard strokes like this: Ctrl+A.

  • We show filenames, URLs, and code within the text like so: persistence.properties.

  • We present code in two different ways:

    We use a monofont type with no highlighting for most code examples.
    We use boldface to emphasize code that is of particularly importance in the
    present context.

SOURCE CODE

As you work through the examples in this book, you may choose either to type in all the code manually, or to use the source code files that accompany the book. All the source code used in this book is available for download at www.wrox.com. Once at the site, simply locate the book's title (either by using the Search box, or by using one of the title lists) and click the Download Code link on the book's detail page to obtain all the source code for the book.

Note

Because many books have similar titles, you may find it easiest to search by ISBN; this book's ISBN is 978-0-470-48426-5.

Once you download the code, just decompress it with your favorite compression tool. Alternately, you can go to the main Wrox code download page at www.wrox.com/dynamic/books/download.aspx to see the code available for this book and all other Wrox books.

ERRATA

We make every effort to ensure that there are no errors in the text or in the code. However, no one is perfect, and mistakes do occur. If you find an error in one of our books, such as a spelling mistake or a faulty piece of code, we would be very grateful for your feedback. By sending in errata, you may save another reader hours of frustration, and you will be helping us provide even higher quality information.

To find the errata page for this book, go to www.wrox.com and locate the title using the Search box or one of the title lists. Then, on the book details page, click the Book Errata link. On this page, you can view all errata that has been submitted for this book and posted by Wrox editors. A complete book list, including links to each book's errata, is also available at www.wrox.com/misc-pages/booklist.shtml.

Note

A complete book list including links to errata is also available at www.wrox.com/misc-pages/booklist.shtml.

If you don't spot "your" error on the Book Errata page, go to www.wrox.com/contact/techsupport.shtml and complete the form there to alert us about the error you have found. We'll check the information and, if appropriate, post a message to the book's errata page and fix the problem in subsequent editions of the book.

P2P.WROX.COM

For author and peer discussion, join the P2P forums at http://p2p.wrox.com. The forums are a Web-based system for you to post messages relating to Wrox books and related technologies, and to interact with other readers and technology users. The forums offer a subscription feature to email you topics of interest of your choosing when new posts are made to the forums. Wrox authors, editors, other industry experts, and your fellow readers are present on these forums.

At http://p2p.wrox.com, you will find several different forums that will help you not only as you read the book, but also as you develop your own applications. To join the forums, just follow these steps:

  1. Go to http://p2p.wrox.com and click the Register link.

  2. Read the terms of use and click Agree.

  3. Complete the required information to join, as well as any optional information you wish to provide, and click Submit.

  4. You will receive an email message with information describing how to verify you account and complete the joining process.

You can read messages in the forums without joining P2P, but in order to post your own messages, you must join.

Once you join, you can post new messages and respond to messages other users post. You can read messages at any time on the Web. If you would like to have new messages from a particular forum emailed to you, click the "Subscribe to this Forum" icon by the forum name in the forum listing.

For more information about how to use the Wrox P2P, be sure to read the P2P FAQs for answers to questions about how the forum software works, as well as many common questions specific to P2P and Wrox books. To read the FAQs, click the FAQ link on any P2P page.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset