dev302 - visual studio team system building robust and reliable software eric lee program manager...

58
DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Eric Lee Program Manager Program Manager Microsoft Corporation Microsoft Corporation

Upload: jeffrey-arnold

Post on 11-Jan-2016

216 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

DEV302 - Visual Studio Team System

Building Robust and Reliable Software

DEV302 - Visual Studio Team System

Building Robust and Reliable Software

Eric LeeEric LeeProgram ManagerProgram ManagerMicrosoft CorporationMicrosoft Corporation

Page 2: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Development TeamsDevelopment Teams

InfrastructureInfrastructureArchitectArchitect

SolutionSolutionArchitectArchitect

Project ManagerProject Manager

DeveloperDeveloper

TesterTester

End UserEnd User

Page 3: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

A day in the life …A day in the life …

Write CodeWrite Code

Write Unit TestsWrite Unit Tests

Review WorkReview Work

Run Code AnalysisRun Code Analysis

Operations!Operations!

DeveloperDeveloper

Page 4: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

A day in the life …A day in the life …

Write CodeWrite Code

Write Unit TestsWrite Unit Tests

Review WorkReview Work

Run Code AnalysisRun Code Analysis

Operations!Operations!

DeveloperDeveloper

Microsoft ResearchMicrosoft Research

Internal ToolsInternal Tools

Page 5: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Visual Studio Team SystemVisual Studio Team System

Change Management

Work Item Tracking

Reporting

Project Site

Visual Studio

Team Foundation

Integration Services

Project Management

Pro

cess

an

d A

rch

itect

ure

Pro

cess

an

d A

rch

itect

ure

G

uid

an

ceG

uid

an

ce

Dynamic Code Analyzer

Visual Studio

Team Architect

Static Code Analyzer

Code Profiler

Unit Testing

Code Coverage

Visio and UML Modeling

Team Foundation Client

VS Pro

Class Modeling

Load Testing

Manual Testing

Test Case Management

Application Modeling

Logical Infra. Modeling

Deployment Modeling

Visual Studio

Team DeveloperVisual Studio

Team Test

Vis

ual S

tud

io In

du

stry

V

isu

al S

tud

io In

du

stry

Part

ners

Part

ners

Page 6: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Visual Studio Team SystemVisual Studio Team System

Change Management

Work Item Tracking

Reporting

Project Site

Visual Studio

Team Foundation

Integration Services

Project Management

Pro

cess

an

d A

rch

itect

ure

Pro

cess

an

d A

rch

itect

ure

G

uid

an

ceG

uid

an

ce

Vis

ual S

tud

io In

du

stry

V

isu

al S

tud

io In

du

stry

Part

ners

Part

ners

Dynamic Code Analyzer

Visual Studio

Team Architect

Static Code Analyzer

Code Profiler

Unit Testing

Code Coverage

Visio and UML Modeling

Team Foundation Client

VS Pro

Class Modeling

Load Testing

Manual Testing

Test Case Management

Application Modeling

Logical Infra. Modeling

Deployment Modeling

Visual Studio

Team DeveloperVisual Studio

Team TestDynamic Code Analyzer

Static Code Analyzer

Code Profiler

Unit Testing

Code Coverage

Page 7: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

A day in the life …A day in the life …

Write CodeWrite Code

Write Unit TestsWrite Unit TestsReview WorkReview Work

Run Code AnalysisRun Code Analysis

Operations!Operations!

DeveloperDeveloper

Page 8: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Test Driven DevelopmentTest Driven DevelopmentJim NewkirkJim Newkirk

Page 9: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

TDD TenantsTDD Tenants

Never write a single line of code unless Never write a single line of code unless you have a failing unit testyou have a failing unit test

Eliminate DuplicationEliminate Duplication

Page 10: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Test ListTest List

Task Based Task Based 4-8 hour duration4-8 hour duration

15-20 minute exercise at beginning 15-20 minute exercise at beginning

Brainstorm a list of unit testsBrainstorm a list of unit tests

Do not get hung up on completeness, Do not get hung up on completeness, you can always add more lateryou can always add more later

Describes completion requirements Describes completion requirements

Page 11: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Red/Green/RefactorRed/Green/Refactor

Write a test for new capability

Start

Compile

Fix compile errors

Run the testAnd see it fail

Write the code

Run the testAnd see it pass

Refactor as needed

Page 12: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Test Driven Development Test Driven Development (TDD)(TDD)

Page 13: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

RecapRecap

Integrate testing into the development Integrate testing into the development processprocess

Testability is a primary motivation Testability is a primary motivation during developmentduring development

The Visual Studio Team System The Visual Studio Team System provides an ideal environment for provides an ideal environment for doing Test Driven Developmentdoing Test Driven Development

Page 14: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

A day in the life …A day in the life …

Write CodeWrite Code

Write Unit TestsWrite Unit TestsReview WorkReview Work

Run Code AnalysisRun Code Analysis

Operations!Operations!

DeveloperDeveloper

Page 15: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

A day in the life …A day in the life …

Write CodeWrite Code

Write Unit TestsWrite Unit Tests

Review WorkReview WorkRun Code AnalysisRun Code Analysis

Operations!Operations!

DeveloperDeveloper

Page 16: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Code CoverageCode Coverage

How effective are my unit tests?How effective are my unit tests?

Am I done testing?Am I done testing?

Am I executing all the relevant parts of Am I executing all the relevant parts of my application?my application?

Page 17: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Code CoverageCode Coverage

void PurchaseItem(int itemID)

{

if (itemID == 0) {

throw new Exception();

} else

{ ProcessOrder(itemID);

}

}

UnitTest()

{

PurchaseItem(1);

}

Page 18: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

{

if (itemID == 0) {

throw new Exception();

} else

{ ProcessOrder(itemID);

}

}

Code CoverageCode Coverage

UnitTest()

{

PurchaseItem(1);

}

void PurchaseItem(int itemID)

Page 19: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

{

{

throw new Exception();

} else

{ ProcessOrder(itemID);

}

}

void PurchaseItem(int itemID)

if (itemID == 0)if (itemID == 0)

Code CoverageCode Coverage

UnitTest()

{

PurchaseItem(1);

}

Page 20: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

{

{

throw new Exception();

}

{ ProcessOrder(itemID);

}

}

void PurchaseItem(int itemID)

if (itemID == 0)if (itemID == 0)

Code CoverageCode Coverage

UnitTest()

{

PurchaseItem(1);

}else

Page 21: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

{

{

throw new Exception();

}

{ ProcessOrder(itemID);

}

}

void PurchaseItem(int itemID)

if (itemID == 0)if (itemID == 0)

Code CoverageCode Coverage

UnitTest()

{

PurchaseItem(1);

}else

ProcessOrder(itemID);

Page 22: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

{

{

throw new Exception();

}

{ ProcessOrder(itemID);

}

}

void PurchaseItem(int itemID)

if (itemID == 0)if (itemID == 0)

Code CoverageCode Coverage

UnitTest()

{

PurchaseItem(1);

}else

ProcessOrder(itemID);

throw new Exception();

Page 23: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Visual Studio Team SystemVisual Studio Team SystemCode CoverageCode Coverage

Page 24: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Code CoverageCode Coverage

PredictabilityPredictability

Effective testingEffective testing

Drives up qualityDrives up quality

Catch ‘blind spots’ right in Visual Catch ‘blind spots’ right in Visual StudioStudio

Page 25: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

A day in the life …A day in the life …

Write CodeWrite Code

Write Unit TestsWrite Unit Tests

Review WorkReview WorkRun Code AnalysisRun Code Analysis

Operations!Operations!

DeveloperDeveloper

Page 26: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

A day in the life …A day in the life …

Write CodeWrite Code

Write Unit TestsWrite Unit Tests

Review WorkReview Work

Run Code AnalysisRun Code AnalysisOperations!Operations!

DeveloperDeveloper

Page 27: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Code AnalysisCode AnalysisString path = “”;

for (int i = 0; i < 100; i++)

{ path += “Value”;}

return path;

.EXE

Intermediate Representation

Page 28: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Code AnalysisCode AnalysisString path = “”;

for (int i = 0; i < 100; i++)

{ path += “Value”;}

return path;

.EXE

Intermediate Representation

Static Code Analysis

Page 29: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Code AnalysisCode AnalysisString path = “”;

for (int i = 0; i < 100; i++)

{ path += “Value”;}

return path;

.EXE

Intermediate Representation

Application Verifier/Code

Profiling

Page 30: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Static Code AnalysisStatic Code Analysis

Bad code is syntactically correctBad code is syntactically correct

Different naming conventionsDifferent naming conventions

Manual code reviews can be Manual code reviews can be inconsistentinconsistent

Page 31: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Static Code AnalysisStatic Code Analysis

Defects

Security

Performance

Design

Policy

String path = “”;

for (int i = 0; i < 100; i++)

{ path += “Value”;}

return path;

Page 32: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Static Code AnalysisStatic Code Analysis

Defects

Security

Performance

Design

PolicyIntermediate Representation

Page 33: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Static Code AnalysisStatic Code Analysis

Defects

Security

Performance

Design

PolicyIntermediate Representation

Page 34: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Static Code AnalysisStatic Code Analysis

Don’t call String.Concat inside of loopsDon’t call String.Concat inside of loops

Prefer StringBuilderPrefer StringBuilder

String path = “”;

for (int i = 0; i < 100; i++)

{ path += “Value”;}

return path;

for (int i = 0; i < 100; i++)

{ path.Append(Value”);}

return path.ToString();

Page 35: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Visual Studio Team SystemVisual Studio Team SystemStatic Code AnalysisStatic Code Analysis

Page 36: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Static Code AnalysisStatic Code Analysis

Catch bugs at their sourceCatch bugs at their source

Capable of complex analysisCapable of complex analysis

Leverages lessons learnedLeverages lessons learned

Turn habit into ‘rules’Turn habit into ‘rules’

Page 37: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Application VerifierApplication Verifier

‘‘Works on my machine’Works on my machine’

‘‘It used to work’It used to work’

Runtime issuesRuntime issues

Page 38: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Application VerifierApplication Verifier

Adventure WorksAdventure Works

Defects

Security

Logo

App Compat

Page 39: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Visual Studio Team SystemVisual Studio Team SystemApplication VerifierApplication Verifier

Page 40: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Application VerifierApplication Verifier

Catch critical errors at runtimeCatch critical errors at runtime

Handle/Heap verification issuesHandle/Heap verification issues

‘‘Breaks’ into Visual Studio Team Breaks’ into Visual Studio Team System at the source of the problemSystem at the source of the problem

Page 41: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Code ProfilerCode Profiler

Constant hardware updatesConstant hardware updates

Poor end-user experiencePoor end-user experience

Low throughput of transactionsLow throughput of transactions

Page 42: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

SamplingSampling

Adventure WorksAdventure Works

Login() 1Login() 1

Browse() 1

Login() 1

Browse() 2

Login() 1

Browse() 3

Login() 1

Browse() 4

Login() 1

Browse() 5

Login() 1

Browse() 5

Details() 1

Login() 1

Browse() 5

Details() 1

CheckOut()1

Login() 1

Browse() 5

Details() 1

CheckOut()1

Logout() 1

Page 43: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

SamplingSampling

Adventure WorksAdventure Works

Login() 1

Browse() 5

Details() 1

CheckOut()1

Logout() 1

Browse() 5

Page 44: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

InstrumentationInstrumentation

Adventure WorksAdventure Works

Page 45: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

InstrumentationInstrumentation

Basic BlocksAdventure WorksAdventure Works

Page 46: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

InstrumentationInstrumentation

Basic BlocksAdventure WorksAdventure Works

Timing Probes

Page 47: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

InstrumentationInstrumentation

Adventure WorksAdventure Works

Browse() 10 msBrowse() 10 ms

Init() 20 ms

Browse() 10 ms

Init() 20 ms

String.Concat() 5060 ms

Browse() 10 ms

Init() 20 ms

String.Concat() 5060 ms

Cleanup() 5 ms

Page 48: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

InstrumentationInstrumentation

Adventure WorksAdventure Works

Browse() 10 ms

Init() 20 ms

String.Concat() 5060 ms

Cleanup() 5 ms

String.Concat() 5060 ms

Page 49: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Visual Studio Team SystemVisual Studio Team SystemCode ProfilerCode Profiler

Page 50: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Code ProfilerCode Profiler

Do more with lessDo more with less

Great customer experienceGreat customer experience

Page 51: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

A day in the life …A day in the life …

Write CodeWrite Code

Write Unit TestsWrite Unit Tests

Review WorkReview Work

Run Code AnalysisRun Code AnalysisOperations!Operations!

DeveloperDeveloper

Page 52: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

A day in the life …A day in the life …

Write CodeWrite Code

Write Unit TestsWrite Unit Tests

Review WorkReview Work

Run Code AnalysisRun Code Analysis

Operations!Operations!

DeveloperDeveloper

Page 53: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

AvicodeAvicodeMOM Configuration Pack WizardMOM Configuration Pack Wizard

Page 54: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Visual Studio Team SystemVisual Studio Team System

Change Management

Work Item Tracking

Reporting

Project Site

Visual Studio

Team Foundation

Integration Services

Project Management

Pro

cess

an

d A

rch

itect

ure

Pro

cess

an

d A

rch

itect

ure

G

uid

an

ceG

uid

an

ce

Vis

ual S

tud

io In

du

stry

V

isu

al S

tud

io In

du

stry

Part

ners

Part

ners

Dynamic Code Analyzer

Visual Studio

Team Architect

Static Code Analyzer

Code Profiler

Unit Testing

Code Coverage

Visio and UML Modeling

Team Foundation Client

VS Pro

Class Modeling

Load Testing

Manual Testing

Test Case Management

Application Modeling

Logical Infra. Modeling

Deployment Modeling

Visual Studio

Team DeveloperVisual Studio

Team TestDynamic Code Analyzer

Static Code Analyzer

Code Profiler

Unit Testing

Code Coverage

Page 55: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Other SessionsOther SessionsDayDay TimeTime SessionSession TopicTopic

TuesdayTuesday 12:1512:15 DEVPNL2DEVPNL2 Visual Studio Team System PartnersVisual Studio Team System Partners

TuesdayTuesday 1:301:30 DEV 300DEV 300 Project ManagementProject Management

TuesdayTuesday 1:301:30 ARC 304ARC 304 Bridging the Gap Between IT and Bridging the Gap Between IT and DevDev

TuesdayTuesday 3:153:15 ARC 400ARC 400 Developing SOAsDeveloping SOAs

WednesdayWednesday 8:308:30 DEV 301DEV 301 Software TestingSoftware Testing

ThursdayThursday 1:301:30 DEV 302DEV 302 Advanced DevelopmentAdvanced Development

ThursdayThursday 3:153:15 DEV 303DEV 303 Enterprise-Class Source ControlEnterprise-Class Source Control

FridayFriday 9:009:00 ARC 312ARC 312 Designing for DeploymentDesigning for Deployment

FridayFriday 12:1512:15 DEVPNL5DEVPNL5 Implementing Software ProcessesImplementing Software Processes

http://msdn.microsoft.com/vstudio/enterprisehttp://msdn.microsoft.com/vstudio/enterprise

Page 56: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Attend a free chat or web castAttend a free chat or web casthttp://www.microsoft.com/communities/chats/default.mspxhttp://www.microsoft.com/communities/chats/default.mspx http://www.microsoft.com/usa/webcasts/default.asphttp://www.microsoft.com/usa/webcasts/default.asp

List of newsgroupsList of newsgroupshttp://communities2.microsoft.com/http://communities2.microsoft.com/communities/newsgroups/en-us/default.aspxcommunities/newsgroups/en-us/default.aspx

MS Community SitesMS Community Siteshttp://www.microsoft.com/communities/default.mspxhttp://www.microsoft.com/communities/default.mspx

Locate Local User GroupsLocate Local User Groupshttp://www.microsoft.com/communities/usergroups/default.mspxhttp://www.microsoft.com/communities/usergroups/default.mspx

Community sitesCommunity siteshttp://www.microsoft.com/communities/related/default.mspxhttp://www.microsoft.com/communities/related/default.mspx

Page 57: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

Q1:Q1: Overall satisfaction with the sessionOverall satisfaction with the session

Q2:Q2: Usefulness of the informationUsefulness of the information

Q3:Q3: Presenter’s knowledge of the subjectPresenter’s knowledge of the subject

Q4:Q4: Presenter’s presentation skillsPresenter’s presentation skills

Q5:Q5: Effectiveness of the presentationEffectiveness of the presentation

Please fill out a session evaluation on CommNetPlease fill out a session evaluation on CommNet

Page 58: DEV302 - Visual Studio Team System Building Robust and Reliable Software Eric Lee Program Manager Microsoft Corporation

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