Building Robust and Reliable Software Jason Anderson, Microsoft

Slides:



Advertisements
Similar presentations
Giada Scarafiotti Developer Tools Product Manager Microsoft Developer Tools.
Advertisements

A Taste of Visual Studio 2005 David Grey. Introduction In this session we will introduce Visual Studio 2005 and its features and examine those features.
Eralp Erat Senior Software Developer MCP,MCAD.NET,MCSD.NET.
Visual Studio Team System (VSTS). Richard Hundhausen Author of software development books Microsoft Regional Director Microsoft MVP (VSTS) MCT, MCSD,
Stuart White 2 Visual Studio 2005 Vision Foster a vibrant partner ecosystem Simplify creation of Connected Systems Improve.
The Microsoft Technical Roadshow 2006 Welcome and Introduction Kevin McDaniel Developer & Platform Evangelism Group Microsoft Ltd
What’s Completely New? Visual Studio Team System! Sean Puffett Developer Evangelist
Visual Studio 2005 Team System: Tools for Architecture: Designing for Deployment Ajay Sudan Microsoft Corporation
Team System and Microsoft Solutions Framework Alan Cameron Wills Architect, MSF
Microsoft Australia Security Summit Team Foundation Overview David Lemphers TeamForce David Lemphers TeamForce
DEV365 Visual Studio Team Edition for Software Architects: Overview Alex Torone Lead Program Manager Enterprise Tools Microsoft Corporation.
Hans Verbeeck What We’ve Heard Continued complexity of building enterprise systems Bigger, more distributed teams More challenges.
Visual Studio 2005 Team System: Software Project Management Hans Verbeeck
DEV461 Microsoft Visual Studio 2005 Team System: Advanced Project Management and Reporting Joel Semeniuk Microsoft Regional Director Microsoft MVP – Solutions.
Professional development with Visual Studio 2005 Team System Aali Alikoski Academic Developer Evangelist Microsoft Oy
Pedro Miguel Rosa Senior Software Engineer Developer Platform Group.
Kevin C. Kelly Microsoft
Team System and MSDN Subscriptions Summary Pricing, Licensing & Transition Plan Andreas Nordenadler Product Manager, Developer Tools.
Brief Purpose –Communicate the pricing & licensing model of Visual Studio 2005 and the new MSDN Subscriptions, focusing primarily on Visual Studio Team.
Enabling Better Software through Better Testing Jason Anderson, Microsoft
The Visual Studio Vision Foster a vibrant partner ecosystem Build the right product for customers Improve software team communication Reduce development.
Team System Adoption Martin Woodward Teamprise. Visual Studio Editions Easy to use, easy to learn, easy to acquire tools for hobbyists, enthusiasts, and.
Visual Studio 2005 Team System: Enterprise Class Source Control & Work Item Tracking Ajay Sudan Microsoft Corporation
WEB329 ASP.NET: A Lap Around the New Enhancements for Web Developers in Microsoft Visual Studio 2005 Omar Khan Lead Program Manager Web Platform and Tools.
Visual Studio 2005 Express Editions Stephen Turner Software Design Engineer Microsoft UK.
DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation.
The Visual Studio Vision Foster a vibrant partner ecosystem Build the right product for customers Improve software team communication Reduce development.
Bill Wolohan Bennett Adelson
Visual Studio 2005 Team System: Winning The Software Configuration Management Tools Market Beny Rubinstein (BenyR) - Product Manager Doug Neumann (DougN)
ARC312 Tools For Architecture: Designing For Deployment Alex Torone Program Manager Microsoft Corporation Bill.
Visual Studio 2005 Team System: Building Robust & Reliable Software Tejasvi Kumar Technology Specialist - VSTS Microsoft Corporation
Visual Studio 2005 Team System: Enterprise Development and Test Sean Puffet Microsoft Ltd
DEV 303 Visual Studio "Whidbey" Enterprise Tools: Source Control and Work Item Tracking Brian Harry Product Unit Manager Microsoft Visual Studio.
Prashant Sridharan Lead Product Manager, Visual Studio Visual Studio 2005.
Visual Studio 2005 Team System Winning the testing space with advanced testing tools Eric Adams Program Manager Visual Studio 2005 Team System Microsoft.
DEV322 Unit Testing Best Practices With Visual Studio 2005 Team System Mark Seemann Senior Consultant Microsoft Consulting Services.
MS Visual Studio 2005 Unit Test. Agenda Team system 概觀 Unit Test Code Coverage Web Test.
Sudesh Krishnamoorthy Developer Technology Specialist | Microsoft |
Visual Studio 2005 Team Edition for Software Architects: Developing Service-Oriented Systems Bill Gibson Senior Program Manager Enterprise Tools Microsoft.
DEV 301 Visual Studio Team System Tom Arnold Program Manager Microsoft Corporation “Enabling Better Software through Better Testing”
Joe Hummel, PhD Dept of Mathematics and Computer Science Lake Forest College
Building More Reliable And Better Performing Web Applications With Visual Studio 2005 Team System Gabriel Marius TLN312 Program Manager Microsoft Corporation.
DEV364 Visual Studio Team System “Enabling Better Software Through Better Testing” Keith Brown Pluralsight LLC.
John Allwright Product Manager – Visual Studio. The Visual Studio Vision Foster a vibrant partner ecosystem Build the right product for customers Improve.
ARC310 Microsoft Visual Studio 2005 Team Edition for Software Architects: Developing Logical Datacenters Alex Torone Lead Program Manager Enterprise Tools.
ARC411 Domain Specific Language Tools For Model-Driven Development In Microsoft Visual Studio 2005 Jochen Seemann Program Manager Enterprise Tools Microsoft.
Behind the Scenes of Visual Studio 2005 Team Foundation Server Doug Neumann TLN301 Program Manager Microsoft Corporation.
Visual Studio Team System overview Pierre Greborio Software Architect – PEWay Microsoft MVP – Solutions Architect.
Visual Studio 2005 Team System: Enabling Better Software Through Testing Tejasvi Kumar Technology Specialist - VSTS Microsoft Corporation
DEV311 Delving into Visual Studio 2005 Team Edition for Software Testers Ed Glas Group Manager, Web and Load Testing Microsoft Corporation.
Visual Studio 2005 Team System: Software Project Management Brian A White Microsoft
Visual Studio 2005 C#VBC++J#WebExpress Visual Studio Standard Edition Visual Studio Professional Edition Novices Enthusiasts Students Hobbyists Part-Timers.
Visual Studio Team System Change ManagementWork Item TrackingReportingProject Site Visual Studio Team Foundation Integration ServicesProject Management.
1 Introduction Bindia Hallauer & Ajay Sudan Product Management, Visual Studio Team System Microsoft Corporation.
Neil Kidd Developer Tools Technical Specialist Microsoft UK.
DEV466 Microsoft Visual Studio 2005 Team System: Enterprise-Class Source Control Doug Neumann Program Manager Visual Studio Microsoft Corporation.
Tools to support the Software Development Process Simon Davies Microsoft Ltd
Connect with life Tejasvi Kumar Developer Technology Specialist | Microsoft India
Integrating with and Extending Visual Studio. Objectives.
DEV300 Project Management And Visual Studio Team System Lori Lamkin Group Program Manager Visual Studio Team System.
WEB330 ASP.NET: Using Microsoft Visual 2005 Studio Team System to Build Enterprise Web Applications Brian Goldfarb Product Manager Web Platform and Tools.
Visual Studio 2005, and.NET 2.0 Michael Juřek Microsoft Czech Republic Software Architect
Advance your career with a new generation of Microsoft certifications TargetedCurrent Cost-effective Easier to Distinguish Learn more, learn better Put.
DEV260 Microsoft Visual Studio 2005 Team System: Managing the Software Lifecycle with Visual Studio 2005 Team System Bindia Hallauer Senior Product Manager.
Visual Studio 2005 “Personalized productivity”
Tech Ed 2004 © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express.
DAT381 Team Development with SQL Server 2005
Jochen Seemann Program Manager Enterprise Tools Microsoft Corporation
Mark Quirk Head of Technology Developer & Platform Group
Welcome to Architect Insight 2010
Presentation transcript:

Building Robust and Reliable Software Jason Anderson, Microsoft

Agenda Team System Overview Static Analysis Profiling Unit Testing Test Driven Development Code Coverage Team Developer and Team Foundation Server Questions

Development Teams Infrastructure Architect Solution Architect Project Manager Developer Tester End User

Visual Studio Team System Process and Architecture Guidance Visual Studio Industry Partners Dynamic Code Analyzer Visual Studio Team Architect Static Code AnalyzerCode ProfilerUnit TestingCode CoverageVisio and UML ModelingTeam Foundation Client (includes CAL)Visual Studio Professional EditionClass DesignerLoad TestingManual TestingTest Case ManagementApplication DesignerLogical Infra. DesignerDeployment Designer Visual Studio Team Developer Visual Studio Team Test Dynamic Code AnalyzerStatic Code Analyzer Code Profiler Unit TestingCode Coverage Change ManagementWork Item TrackingReportingProject Site Visual Studio Team Foundation Integration ServicesProject ManagementBig Build

Static Analysis

Find errors in your code before you run or deploy it Checks range from style to code correctness to security issues Integrated into the Team System Build Environment

Static Analysis The dev process without Static Analysis Compile Code Binary PreprocGrammarLinkRaiseErrors

Static Analysis The dev process with Static Analysis Code Compile StaticAnalysis AnalyzeCodeCheckRulesRaiseErrors Binary

Static Analysis Managed Code Example static void Initialize(string id) { if (id == "") return; if (id == "") return; try try { Utilities.OpenUserAccount(id); Utilities.OpenUserAccount(id); } catch(Exception ex) catch(Exception ex) { // user must not exist // user must not exist Utilities.CleanAccountState(id); Utilities.CleanAccountState(id); Console.WriteLine(ex); Console.WriteLine(ex); }} Compiles Static Analysis gives warnings

Static Analysis Managed Code Example static void Initialize(string id) { if (id == "") return; if (id == "") return; try try { Utilities.OpenUserAccount(id); Utilities.OpenUserAccount(id); } catch(Exception ex) catch(Exception ex) { // user must not exist // user must not exist Utilities.CleanAccountState(id); Utilities.CleanAccountState(id); Console.WriteLine(ex); Console.WriteLine(ex); }} e:\Logger.cs(39): 'Logger.Initialize(System.String)#System.Void' Modify the following catch clauses in 'Logger.Initialize' by catching a more specific exception type or rethrowing the exception ' catch(Exception) {...}' e:\logger.cs(36): 'Logger.Initialize(System.String)#System.Void' Replace all calls to "".Equals or String.Empty.Equals in 'Logger.Initialize(System.String)' with checks for Length == 0.

Static Analysis Managed Code Example static void Initialize(string id) { if (id.Length == 0) if (id.Length == 0) { throw new ArgumentExeception(“Bad A…”); } try try { Utilities.OpenUserAccount(id); Utilities.OpenUserAccount(id); } catch(Exception ex) catch(Exception ex) { // user must not exist // user must not exist Utilities.CleanAccountState(id); Utilities.CleanAccountState(id); throw ex; throw ex; }} Improve my code

Static Analysis

Profiling

Profiling Bad performance is expensive ● Customer perception ● Hardware ● Investigation

Profiling Instrumentation main AMethod BMethod main 001 AMethod0023 BMethod0098 … Adds instructions to your code to monitor

Profiling Sampling main AMethod BMethod Analyze without changing your app main 3 AMethod 6 BMethod 9 2

Profiler Able to do both managed and unmanaged Able to do both instrumentation and sampling Used by many internal teams and on customer engagements

Profiling

Unit Testing

Unit tests are tests written by programmers to check the functionality of production code ● Always automated ● Generally one-to-one mapping between Unit Test and production code Typical problems: ● Too much overhead for everyone to learn ● Too tedious ● Isn’t effective enough to warrant the cost ● Not process agnostic

Writing a Unit Test made Easy Low overhead, very few moving parts We do provide simple helper APIs and easy to understand attributes We don’t force inheritance, interfaces, etc

Unit Test Code Generation Human error sometimes accounts for missed methods and classes Code Generation can develop the skeleton of your unit tests ● Namespaces ● Classes ● Methods Generated code fails with result ‘Inconclusive’

Unit Testing

Test Driven Development

Think about the code before you write it, have a failing test before you write product code The Test Case is a specification ● User Scenarios ● Business Cases ● Minimal bar, boundary conditions, performance, etc Infrastructure can be painful ● Build Errors ● Managed your failures

Test Driven Development

Code Coverage

Test Authoring isn’t about quantity, it’s about quality Code coverage helps you monitor your tests effectiveness ● Team Members can analyze results at a high- level ● Can also analyze source for specific missed methods and branches

Code Coverage void PurchaseItem(int itemID) { if (itemID == 0) { throw new Exception(); } else { ProcessOrder(itemID); } UnitTest() { PurchaseItem(1); }

Code Coverage void PurchaseItem(int itemID) { if (itemID == 0) { throw new Exception(); } else { ProcessOrder(itemID); } UnitTest() { PurchaseItem(1); }

Code Coverage void PurchaseItem(int itemID) { if (itemID == 0) { throw new Exception(); } else { ProcessOrder(itemID); } UnitTest() { PurchaseItem(1); }

Code Coverage void PurchaseItem(int itemID) { if (itemID == 0) { throw new Exception(); } else { ProcessOrder(itemID); } UnitTest() { PurchaseItem(1); }

Code Coverage void PurchaseItem(int itemID) { if (itemID == 0) { throw new Exception(); } else { ProcessOrder(itemID); } UnitTest() { PurchaseItem(1); }

Code Coverage void PurchaseItem(int itemID) { if (itemID == 0) { throw new Exception(); } else { ProcessOrder(itemID); } UnitTest() { PurchaseItem(1); }

Code Coverage

Team Developer and Team Foundation Server

Visual Studio Team System Process and Architecture Guidance Visual Studio Industry Partners Dynamic Code Analyzer Visual Studio Team Architect Static Code AnalyzerCode ProfilerUnit TestingCode CoverageVisio and UML ModelingTeam Foundation Client (includes CAL)Visual Studio Professional EditionClass DesignerLoad TestingManual TestingTest Case ManagementApplication DesignerLogical Infra. DesignerDeployment Designer Visual Studio Team Developer Visual Studio Team Test Dynamic Code AnalyzerStatic Code Analyzer Code Profiler Unit TestingCode Coverage Change ManagementWork Item TrackingReportingProject Site Visual Studio Team Foundation Integration ServicesProject ManagementBig Build

Visual Studio Team System Process and Architecture Guidance Visual Studio Industry Partners Change ManagementWork Item TrackingReportingProject SiteIntegration ServicesProject ManagementDynamic Code Analyzer Visual Studio Team Architect Static Code AnalyzerCode ProfilerUnit TestingCode CoverageVisio and UML ModelingTeam Foundation Client (includes CAL)Visual Studio Professional EditionLoad TestingManual TestingTest Case ManagementApplication DesignerLogical Infra. DesignerDeployment Designer Visual Studio Team Developer Visual Studio Team Test Change ManagementWork Item Tracking Reporting Visual Studio Team Foundation Class Designer Big Build

Roles Addressed by Team System Project ManagerArchitectDeveloperTester Change ManagementWork Item TrackingReportingProject Portal Visual Studio Team Foundation Integration ServicesProject Management VisualStudioIDE

Work Item Integration Project Management can assign work items and track across lifecycle of the project Developers and Testers can assign defects and these integrate with PM work items Artifacts (tests, product modules, source code) can be associated with Work Items

Reviews Find / Fix Rates…

..and Daily Trends

…and Bugs Against Code Churn and Testing Activity

Team Developer Static Analysis Profiling Unit Testing Code Coverage AND MORE!!! Integrated with TFS ● Source Code Control ● Project Management ● Bug Tracking ● Reports All fully functional from the VSTS 2005

© 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.