Professional Application Lifecycle Management with Visual Studio® 2010

Published by
Wiley Publishing, Inc.
10475 Crosspoint Boulevard
Indianapolis, IN 46256
www.wiley.com

Copyright © 2010 by Wiley Publishing, Inc., Indianapolis, Indiana

Published simultaneously in Canada

ISBN: 978-0-470-48426-5

Manufactured in the United States of America

10 9 8 7 6 5 4 3 2 1

No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, except as permitted under Sections 107 or 108 of the 1976 United States Copyright Act, without either the prior written permission of the Publisher, or authorization through payment of the appropriate per-copy fee to the Copyright Clearance Center, 222 Rosewood Drive, Danvers, MA 01923, (978) 750-8400, fax (978) 646-8600. Requests to the Publisher for permission should be addressed to the Permissions Department, John Wiley & Sons, Inc., 111 River Street, Hoboken, NJ 07030, (201) 748-6011, fax (201) 748-6008, or online at http://www.wiley.com/go/permissions.

Limit of Liability/Disclaimer of Warranty: The publisher and the author make no representations or warranties with respect to the accuracy or completeness of the contents of this work and specifically disclaim all warranties, including without limitation warranties of fitness for a particular purpose. No warranty may be created or extended by sales or promotional materials. The advice and strategies contained herein may not be suitable for every situation. This work is sold with the understanding that the publisher is not engaged in rendering legal, accounting, or other professional services. If professional assistance is required, the services of a competent professional person should be sought. Neither the publisher nor the author shall be liable for damages arising herefrom. The fact that an organization or Web site is referred to in this work as a citation and/or a potential source of further information does not mean that the author or the publisher endorses the information the organization or Web site may provide or recommendations it may make. Further, readers should be aware that Internet Web sites listed in this work may have changed or disappeared between when this work was written and when it is read.

For general information on our other products and services please contact our Customer Care Department within the United States at (877) 762-2974, outside the United States at (317) 572-3993 or fax (317) 572-4002.

Wiley also publishes its books in a variety of electronic formats. Some content that appears in print may not be available in electronic books.

Library of Congress Control Number: 2010921244

Trademarks: Wiley, the Wiley logo, Wrox, the Wrox logo, Programmer to Programmer, and related trade dress are trademarks or registered trademarks of John Wiley & Sons, Inc. and/or its affiliates, in the United States and other countries, and may not be used without written permission. All other trademarks are the property of their respective owners. Wiley Publishing, Inc., is not associated with any product or vendor mentioned in this book.

This book is dedicated to my wife, Amye Gousset. Once again, I scratched the itch to write, and once again, she provided me all the love and support I needed to make it happen. Amye, I love you more and more each day.

— MICKEY GOUSSET

This book is dedicated to my parents, Ray and Sue Ellen Keller, who laid the foundation for me to embark upon a lifetime of learning and a love of technology. As a kid, they let me hijack the family computer to teach myself how to program, and as a young adult, they gave me the inspiration to explore my passions, and the freedom to learn from my failures. Mom and Dad, I love you.

— BRIAN KELLER

I dedicate this book to my best friend and my wife, Vidhya, and our wonderful children, Atul and Aditi. Thank you for everything.

— AJOY KRISHNAMOORTHY

To Catherine, William, and Jamie.

— MARTIN WOODWARD

ABOUT THE AUTHORS

MICKEY GOUSSET is a Senior Technical Developer for Infront Consulting Group, a consulting company focused on the Microsoft System Center family of products. He has been a Microsoft Team System MVP five years running, a certified professional in Team Foundation Server and SCOM 2007, and co-author (along with Jean-Luc David and Erik Gunvaldson) of the book Professional Team Foundation Server (Indianapolis: Wiley, 2006). Gousset runs “Team System Rocks!” (http://www.teamsystemrocks.com), a community site devoted to Visual Studio Team System and Visual Studio 2010, where he also blogs about Visual Studio and Team Foundation Server. He is also a co-host of the popular Team Foundation Server podcast, “Radio TFS” (http://www.radiotfs.com). He has spoken on Visual Studio and Team Foundation Server topics at various user groups, code camps, and conferences, including Microsoft Tech Ed Developer — North America 2008 and 2009. When not writing or working with computers, Mickey enjoys a range of hobbies, from playing on Xbox Live (“Gamer Tag: HereBDragons”) to participating in local community theater. Nothing beats his favorite pastime though — sitting on his couch with his lovely wife Amye, and their two Chihuahuas, Lucy and Linus.

BRIAN KELLER is a Senior Technical Evangelist for Microsoft, specializing in Visual Studio and application lifecycle management. Keller has been with Microsoft since 2002, and has presented at conferences all over the world, including TechEd, Professional Developers Conference (PDC), and MIX. Keller is also a regular personality on MSDN’s Channel 9 Web site, and is co-host of the popular show, “This Week on Channel 9.” Outside of work, he can usually be found enjoying the great outdoors while either rock climbing, backpacking, skiing, or surfing.

AJOY KRISHNAMOORTHY is a Senior Product Manager in the Microsoft Patterns and Practices group. In this role, he focuses on planning the areas of investments and business strategy for Patterns and Practices. Prior to this role, Krishnamoorthy worked as a Senior Product Manager for Microsoft Visual Studio Team System. He has more than ten years of consulting experience, playing variety of roles, including developer, architect, and technical project manager. Krishnamoorthy has written articles for online and printed magazines, and co-authored several books on ASP.NET. You can check out his blog at http://blogs.msdn.com/ajoyk. Krishnamoorthy has an MBA from Ohio State University. Any spare time is spent with his family, playing board/card games with friends, watching sports (especially when the Ohio State Buckeyes are playing), and learning to play “Tabla.”

MARTIN WOODWARD is currently the Program Manager for the Microsoft Visual Studio Team Foundation Server Cross-Platform Tools Team. Before joining Microsoft, Woodward was voted Team System MVP of the Year, and has spoken about Team Foundation Server at events internationally. Not only does Woodward bring a unique insight into the inner workings of the product he has experienced from more than a half-decade of real-world use at companies big and small, he is also always happy to share. When not working or speaking, Woodward can be found at his blog, http://www.woodwardweb.com.

CREDITS

EXECUTIVE EDITOR
Robert Elliott

DEVELOPMENT EDITOR
Kevin Shafer

TECHNICAL EDITORS
Siddharth Bhatia
Justin Marks
Peter Provost
Mario Rodriguez
Clark Sell
David Williamson

PRODUCTION EDITOR
Rebecca Anderson

COPY EDITOR
Christopher Jones

EDITORIAL DIRECTOR
Robyn B. Siesky

EDITORIAL MANAGER
Mary Beth Wakefield

ASSOCIATE DIRECTOR OF MARKETING
David Mayhew

PRODUCTION MANAGER
Tim Tate

VICE PRESIDENT AND EXECUTIVE GROUP PUBLISHER
Richard Swadley

VICE PRESIDENT AND EXECUTIVE PUBLISHER
Barry Pruett

ASSOCIATE PUBLISHER
Jim Minatel

PROJECT COORDINATOR, COVER
Lynsey Stanford

COVER DESIGNER
Michael E. Trent

COVER PHOTO
© Ben Blankenburg/istockphoto

PROOFREADERS
Scott Klemp, Maraya Cornell, Carrie Hunter, Word One

INDEXER
J & J Indexing

ACKNOWLEDGMENTS

FIRST OFF, I WANT TO THANK AJOY, BRIAN, AND MARTIN for taking this journey with me. You have been incredible people to work with, and have truly made this a great experience. I’d like to thank everyone at Wiley and Wrox, specifically Bob Elliot and Kevin Shafer, our editors. This book could not have happened without their help and constant attention to detail. We also had some amazing people doing technical edits on this book, including Clark Sell, Peter Provost, Siddharth Bhatia, Mario Rodriguez, Justin Marks, David Williamson, and I’m sure many other names that I’ve overlooked. To everyone who has helped to make this book the great product that it is, I thank you. Finally, a big thank you to my family for your understanding, love, and support during the late nights and long weekends when I disappeared into my office to write.

— MICKEY GOUSSET

THE EFFORTS OF SO MANY PEOPLE went into the realization of this book that it’s hard to know where to begin. Perhaps most fundamentally is the work of the engineering team within Microsoft’s developer division, who have an insatiable drive for shipping great software that helps other software development teams around the world realize their full potential. Visual Studio 2010 is an incredibly exciting release, and is the inspiration for this book. David Williamson was the primary technical reviewer for the chapters I contributed, and his thoughtful suggestions contributed greatly to the quality of this book. I also received help from Anutthara Bharadwaj, Daryush Laqab, Ed Glas, Euan Garden, Gautam Goenka, Habib Heydarian, Katrina Lyon-Smith, Mark Mydland, Michael Rigler, Tanuj Vohra, Ted Malone, Vinod Malhotra, and scores of others over the last year and a half. Finally, I would like to thank our publisher and my co-authors, who I am proud to share this accomplishment with.

— BRIAN KELLER

I OWE A BIG THANKS TO MY good friend Jean-Luc David for his persistence in getting me to work on this book. I was fortunate to have the chance to work with a talented team of fellow authors. Mickey, Brian and Martin, thank you, and I truly enjoyed working with you on this book.

Several members of the Visual Studio team offered their help, and I am thankful for that. I owe a lot of gratitude to Aaron Bjork, Siddharth Bhatia, John Socha-Leialoha, Sunder Raman, David Brokaw, Gokula Thilagar, Habib Heydarian, Justin Marks, and Brad Sullivan. They were all busy shipping a product, but never hesitated to help me when I reached them with questions, or needed more information and access to pre-release bits. Thanks to every one of you for your timely help.

I want to thank my manager John deVadoss and my colleagues at Patterns and Practices for their great support and encouragement throughout the course of this writing project.

Finally, I can’t thank my family enough for allowing me to spend countless hours during evenings and weekends on this book. Vidhya, Atul, and Aditi, none of this would have been possible without your encouragement, support, and understanding. I have missed several rounds of board games, trips to the play area, bed-time routines, and more. I promise you that I will do the best to make up for the lost time. Thank you for everything.

— AJOY KRISHNAMOORTHY

I WOULD LIKE TO ACKNOWLEDGE THE HELP, advice, and assistance from the people both inside and outside the Visual Studio team at Microsoft. Special thanks go to Aaron Hallberg, Brian Randell, Buck Hodges, Clark Sell, Jim Lamb, Julie MacAller, Mario Rodriguez, Matthew Mitrik, and William Bartholomew, without whom my contributions to this book would not have been possible. Thanks also to Rob Caron, Jeff Beehler, Brian Harry, Doug Neumann, Eric Sink, and Corey Steffen for encouraging my involvement in the Visual Studio community over the past five years.

I would like to thank my co-authors for bringing me into this project, and for helping me fulfill a lifetime ambition of writing a book. I would also like to thank my dad, Roy Woodward, and my much missed mum, Val Woodward. They got me started down this whole computing path by getting me a Vic-20 at the age of 6, and got me a typewriter at the age of 8. With that sort of start, you’d think I’d have written a computer book at the age of 10, but instead I re-wrote “Ghostbusters” and co-authored a novel about a pink sofa. Well Mum — I got there in the end.

Last but not least, I would also like to thank my wife, Catherine, for her encouragement and support, and for helping me find the time to write this book in our already busy lives. She has heard the phrase, “I’m nearly done, just finishing this last bit up,” more times than anyone deserves, yet, bizarrely, has still not figured out that she is way out of my league.

— MARTIN WOODWARD

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 I-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 I-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

Part II: Developer

Part III: Tester

Part IV: Team Foundation Server

Part V: Project/Process Management

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.

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

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

SIDEBAR

Asides to the current discussion are offset 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.

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.

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.

PART I
Architect

•   CHAPTER 1: Introduction to Software Architecture

•   CHAPTER 2: Top-Down Design with Use Case Diagrams, Activity Diagrams, and Sequence Diagrams

•   CHAPTER 3: Top-Down Design with Component and Class Diagrams

•   CHAPTER 4: Analyzing Applications Using Architecture Explorer

•   CHAPTER 5: Using Layer Diagrams

1

Introduction to Software Architecture

WHAT’S IN THIS CHAPTER?

Why designing visually is important

Microsoft’s approach to a modeling strategy

Modeling tools in Visual Studio 2010 Ultimate

In this introductory chapter, you’ll learn about the main themes — domain-specific languages (DSLs), model-driven development (MDD), and the Unified Modeling Language (UML) — and how they apply to the Visual Studio 2010 Ultimate. As part of this discussion, you’ll learn what Microsoft has to say on those subjects, as well as some impartial views from the authors.

This chapter examines the evolution of distributed computing architectures — from simple object-oriented development, through component and distributed-component design, to the service-oriented architectures (SOAs) — that represent the current state of the art.

This chapter wraps up with a brief glimpse at the new architecture tools in Visual Studio 2010. New modeling tools, as well as support for the most common Unified Modeling Language diagrams, have been added to Visual Studio 2010, making the architecture tools first-class citizens in the product.

Let’s begin by first establishing the case for even undertaking visual modeling — or visual design — in the first place.

DESIGNING VISUALLY

Two elementary questions immediately come to mind. Why design at all, rather than just code? Why design visually?

To answer the first question, consider the common analogy of building complex physical structures, such as bridges. Crossing a small stream requires only a plank of wood — no architect, no workers, and no plans. Building a bridge across a wide river requires a lot more — a set of plans drawn up by an architect so that you can order the right materials, planning the work, communicating the details of the complex structure to the builders, and getting a safety certificate from the local authority. It’s the same with software. You can write a small program by diving straight into code, but building a complex software system will require some forethought. You must plan it, communicate it, and document it to gain approval.

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!