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

Post on 11-Jan-2016

216 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

Development TeamsDevelopment Teams

InfrastructureInfrastructureArchitectArchitect

SolutionSolutionArchitectArchitect

Project ManagerProject Manager

DeveloperDeveloper

TesterTester

End UserEnd User

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

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

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

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

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

Test Driven DevelopmentTest Driven DevelopmentJim NewkirkJim Newkirk

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

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

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

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

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

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

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

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?

Code CoverageCode Coverage

void PurchaseItem(int itemID)

{

if (itemID == 0) {

throw new Exception();

} else

{ ProcessOrder(itemID);

}

}

UnitTest()

{

PurchaseItem(1);

}

{

if (itemID == 0) {

throw new Exception();

} else

{ ProcessOrder(itemID);

}

}

Code CoverageCode Coverage

UnitTest()

{

PurchaseItem(1);

}

void PurchaseItem(int itemID)

{

{

throw new Exception();

} else

{ ProcessOrder(itemID);

}

}

void PurchaseItem(int itemID)

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

Code CoverageCode Coverage

UnitTest()

{

PurchaseItem(1);

}

{

{

throw new Exception();

}

{ ProcessOrder(itemID);

}

}

void PurchaseItem(int itemID)

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

Code CoverageCode Coverage

UnitTest()

{

PurchaseItem(1);

}else

{

{

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();

}

{ ProcessOrder(itemID);

}

}

void PurchaseItem(int itemID)

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

Code CoverageCode Coverage

UnitTest()

{

PurchaseItem(1);

}else

ProcessOrder(itemID);

throw new Exception();

Visual Studio Team SystemVisual Studio Team SystemCode CoverageCode Coverage

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

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

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

Code AnalysisCode AnalysisString path = “”;

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

{ path += “Value”;}

return path;

.EXE

Intermediate Representation

Code AnalysisCode AnalysisString path = “”;

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

{ path += “Value”;}

return path;

.EXE

Intermediate Representation

Static Code Analysis

Code AnalysisCode AnalysisString path = “”;

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

{ path += “Value”;}

return path;

.EXE

Intermediate Representation

Application Verifier/Code

Profiling

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

Static Code AnalysisStatic Code Analysis

Defects

Security

Performance

Design

Policy

String path = “”;

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

{ path += “Value”;}

return path;

Static Code AnalysisStatic Code Analysis

Defects

Security

Performance

Design

PolicyIntermediate Representation

Static Code AnalysisStatic Code Analysis

Defects

Security

Performance

Design

PolicyIntermediate Representation

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();

Visual Studio Team SystemVisual Studio Team SystemStatic Code AnalysisStatic Code Analysis

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’

Application VerifierApplication Verifier

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

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

Runtime issuesRuntime issues

Application VerifierApplication Verifier

Adventure WorksAdventure Works

Defects

Security

Logo

App Compat

Visual Studio Team SystemVisual Studio Team SystemApplication VerifierApplication Verifier

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

Code ProfilerCode Profiler

Constant hardware updatesConstant hardware updates

Poor end-user experiencePoor end-user experience

Low throughput of transactionsLow throughput of transactions

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

SamplingSampling

Adventure WorksAdventure Works

Login() 1

Browse() 5

Details() 1

CheckOut()1

Logout() 1

Browse() 5

InstrumentationInstrumentation

Adventure WorksAdventure Works

InstrumentationInstrumentation

Basic BlocksAdventure WorksAdventure Works

InstrumentationInstrumentation

Basic BlocksAdventure WorksAdventure Works

Timing Probes

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

InstrumentationInstrumentation

Adventure WorksAdventure Works

Browse() 10 ms

Init() 20 ms

String.Concat() 5060 ms

Cleanup() 5 ms

String.Concat() 5060 ms

Visual Studio Team SystemVisual Studio Team SystemCode ProfilerCode Profiler

Code ProfilerCode Profiler

Do more with lessDo more with less

Great customer experienceGreat customer experience

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

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

AvicodeAvicodeMOM Configuration Pack WizardMOM Configuration Pack Wizard

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

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

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

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

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

top related