msf for agile software development granville miller 8 november 2005

45
MSF for Agile MSF for Agile Software Software Development Development Granville Miller Granville Miller 8 November 2005 8 November 2005

Upload: mavis-potter

Post on 25-Dec-2015

217 views

Category:

Documents


2 download

TRANSCRIPT

MSF for Agile MSF for Agile Software Software

DevelopmentDevelopment

Granville MillerGranville Miller

8 November 20058 November 2005

Project Failure RatesProject Failure Rates

2000

1998

1995

1994

28%23% 49%

26%28% 46%

27%40% 33%

16%31% 53%

This chart depicts the outcome of the 30,000 application projects in large, medium,and small cross-industry U.S. companies tested by The Standish Group since 1994.

Source: The Standish Group International, Extreme Chaos, The Standish Group International, Inc., 2000

SucceededChallengedFailed

The State is ImprovingThe State is Improving

Small ReleasesSmall Releases

Increased Customer InvolvementIncreased Customer Involvement

Agile ManifestoAgile Manifesto

Individuals and interactions over Individuals and interactions over processes and tools processes and tools

Working softwareWorking software over over comprehensive documentation comprehensive documentation

Customer collaborationCustomer collaboration over contract over contract negotiation negotiation

Responding to change over following Responding to change over following a plan a plan

Source: http://www.agilemanifesto.org/

What are Personas?What are Personas?

In the context of product development, In the context of product development, personas are descriptions of a group personas are descriptions of a group of typical users. of typical users.

Instead of talking about the group of Instead of talking about the group of users in an abstract, impersonal way, a users in an abstract, impersonal way, a persona represents a 'proxy' for the persona represents a 'proxy' for the user group, and provides a means to user group, and provides a means to talk and reason about the group talk and reason about the group through the characteristics of one through the characteristics of one fictional individual, the persona. fictional individual, the persona.

Where do Personas Fit?Where do Personas Fit?

On-siteCustomer

Actor

Persona

Customer InvolvementCustomer Involvement

Review

Working Software

Refine

Personas

Real Customers

Scenarios

Personas at MicrosoftPersonas at Microsoft

Source: http://www.research.microsoft.com/research/coet/Grudin/Personas/Pruitt-Grudin.doc

What is in a Persona?What is in a Persona?

A persona describes the typical A persona describes the typical knowledge, skills, abilities, needs, knowledge, skills, abilities, needs, desires, working habits, tasks, usage desires, working habits, tasks, usage patterns and backgrounds of a patterns and backgrounds of a particular set of users. particular set of users.

A persona is fictional reality, collecting A persona is fictional reality, collecting together real data describing the together real data describing the important characteristics of a important characteristics of a particular user group in a fictional particular user group in a fictional character. character.

JackJack

Role: Online ShopperRole: Online Shopper Motivation: Get it QuickMotivation: Get it Quick Usage: Jack hates to shop but wants Usage: Jack hates to shop but wants

his equipment immediately. He will his equipment immediately. He will place his order on Thursday night for place his order on Thursday night for his weekend activity. Jack doesn’t his weekend activity. Jack doesn’t want to wade through a catalog. want to wade through a catalog. Instead, he wants things that he Instead, he wants things that he typically orders to show immediately.typically orders to show immediately.

JudithJudith

Role: Online ShopperRole: Online Shopper Motivation: Get it CheapMotivation: Get it Cheap Usage: Judith shops for the best Usage: Judith shops for the best

bargain. She looks for the best deal on bargain. She looks for the best deal on similar items. She will visit half a dozen similar items. She will visit half a dozen sites to find the best deal.sites to find the best deal.

MSF for Agile Software MSF for Agile Software DevelopmentDevelopment

Scenario-driven development process Scenario-driven development process for building .NET, Web, Web Service, for building .NET, Web, Web Service, and other object-oriented applications. and other object-oriented applications.

Directly incorporates practices for Directly incorporates practices for handling quality of service handling quality of service requirements such as performance and requirements such as performance and security. security.

Utilizes a context-driven approach Utilizes a context-driven approach (context-based) to determine how to (context-based) to determine how to operate the project. operate the project.

Getting the Whole Team Getting the Whole Team InvolvedInvolved

Jacqui Jacqui AckermanAckermanProject ManagerProject Manager

Art BensonArt BensonArchitectArchitect

Mort GainesMort GainesDeveloperDeveloper Renee DavisRenee Davis

TesterTester

Larry Sykes Larry Sykes Business AnalystBusiness Analyst

Ian ManningIan Manning

Release ManagerRelease Manager

Roles -> ConstituenciesRoles -> Constituencies

Shadow ArchitectureShadow Architecture

With the visual modeling tools With the visual modeling tools commonly available today, working commonly available today, working code can cast shadowscode can cast shadows

To See the Forest…To See the Forest…

Architects should allow work at the Architects should allow work at the component or “application” levelcomponent or “application” level

Trailing ShadowsTrailing Shadows

Trailing Shadows are visual Trailing Shadows are visual reflections of the code basereflections of the code base

These should come for free or nearly These should come for free or nearly freefree

Leading ShadowsLeading Shadows

Sometimes we need to sketch out Sometimes we need to sketch out architecture/design before we architecture/design before we implement themimplement them

Whiteboard is often usedWhiteboard is often used Should become working code within Should become working code within

the iteration – no BDUFthe iteration – no BDUF

Larger Projects….Larger Projects….

Function teamFunction team

Feature teamsFeature teams

Lead teamLead teamProgram

ManagementProgram

Management

ReleaseOperations

ReleaseOperations

ProductManagement

ProductManagement

UserExperience

UserExperience

DevelopmentDevelopment

TestTest

Catalog

ProgramManagement

ProgramManagement

DevelopmentDevelopment

TestTest

Site Engine & Design

ProgramManagement

ProgramManagement

UserExperience

UserExperience

DevelopmentDevelopment

TestTest

Fulfillment

ProgramManagement

ProgramManagement

UserExperience

UserExperience

DevelopmentDevelopment

TestTest

UserExperience

ReleaseOperations

ReleaseOperations

ArchitectureArchitecture

ArchitectureArchitecture

ArchitectureArchitecture

ArchitectureArchitecture

Getting the Whole Team Getting the Whole Team InvolvedInvolved

Jacqui Jacqui AckermanAckermanProject ManagerProject Manager

Art BensonArt BensonArchitectArchitect

Mort GainesMort GainesDeveloperDeveloper

Renee DavisRenee Davis TesterTester

Larry Sykes Larry Sykes Business AnalystBusiness Analyst

Ian ManningIan Manning

Release ManagerRelease Manager

Testing that is acceptable on one project Testing that is acceptable on one project may be criminal on anothermay be criminal on another

Release CriteriaRelease Criteria Testing ThresholdsTesting Thresholds Trend AnalysisTrend Analysis Process FeedbackProcess Feedback

Context Driven TestingContext Driven Testing

Release CriteriaRelease Criteria

No Sev 1s and 2s in the shipping No Sev 1s and 2s in the shipping productproduct

Test ThresholdsTest Thresholds

Code Coverage for Unit TestCode Coverage for Unit Test Which statements of my application Which statements of my application

are being executed?are being executed? Useful to identify incomplete testingUseful to identify incomplete testing

Code CoverageCode Coverage

void PurchaseItem(int itemID){ if (itemID == 0) {

throw new Exception(); } else { ProcessOrder(itemID); }}

void UnitTest(){ PurchaseItem(1); // test the output }

{ if (itemID == 0) { throw new Exception(); } else { ProcessOrder(itemID); }}

Code CoverageCode Coverage

void UnitTest(){ PurchaseItem(1); // test the output }

void PurchaseItem(int itemID)

{

{ throw new Exception(); } else { ProcessOrder(itemID); }}

void PurchaseItem(int itemID)

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

Code CoverageCode Coverage

void UnitTest(){ PurchaseItem(1); // test the output }

{

{

throw new Exception(); }

{ ProcessOrder(itemID); }}

void PurchaseItem(int itemID)

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

Code CoverageCode Coverage

else

void UnitTest(){ PurchaseItem(1); // test the output }

{

{ throw new Exception(); }

{ }}

void PurchaseItem(int itemID)

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

Code CoverageCode Coverage

else

ProcessOrder(itemID);

void UnitTest(){ PurchaseItem(1); // test the output }

{

{

throw new Exception();

}

{ ProcessOrder(itemID);

}

}

void PurchaseItem(int itemID)

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

Code CoverageCode Coverage

else

ProcessOrder(itemID);

throw new Exception();

void UnitTest(){ PurchaseItem(1); // test the output }

Problems with Code Problems with Code CoverageCoverage

Focusing on statement and branch Focusing on statement and branch coverage is not sufficient, you may coverage is not sufficient, you may miss:miss: Missing codeMissing code Incorrect handling of boundary Incorrect handling of boundary

conditionsconditions Timing problemsTiming problems Memory LeaksMemory Leaks

Use coverage sensiblyUse coverage sensibly Objective, but incompleteObjective, but incomplete Too often distorts sensible actionToo often distorts sensible action

The Problem with ProcessThe Problem with ProcessPredictablePredictableRepeatableRepeatableProductiveProductive

• ComplexComplex• DisconnectedDisconnected• HardenedHardened

ChallengesChallenges• Getting people to know about itGetting people to know about it• Getting people to use itGetting people to use it

How we use processHow we use process

The Limitations of ProcessThe Limitations of Process

Process can only take you to the Process can only take you to the point where others have solved the point where others have solved the problem before and captured their problem before and captured their experience in a process form. experience in a process form.

Process that is integrated with the Process that is integrated with the tooling is more likely to be used tooling is more likely to be used when schedules get tight.when schedules get tight.

ToolingTooling

Agile ManifestoAgile Manifesto

Individuals and interactionsIndividuals and interactions over over processes and tools processes and tools

Working software over Working software over comprehensive documentation comprehensive documentation

Customer collaboration over contract Customer collaboration over contract negotiation negotiation

Responding to changeResponding to change over following over following a plan a plan

Source: http://www.agilemanifesto.org/

Date or Feature DrivenDate or Feature Driven Projects can be driven by date or functionality. Projects can be driven by date or functionality.

When a project is driven by date, project When a project is driven by date, project deadlines are usually determined by the market, deadlines are usually determined by the market, events, competitors, regulations, financial events, competitors, regulations, financial implications, or other business reasons. implications, or other business reasons.

Understanding the progress of the system is Understanding the progress of the system is critical to managing expectations and planning critical to managing expectations and planning according. Additionally, organizational, according. Additionally, organizational, technical, and project risks may need to be technical, and project risks may need to be tracked when they have a time component. Even tracked when they have a time component. Even if a project is not date-driven, understanding the if a project is not date-driven, understanding the estimated time of arrival helps to other groups estimated time of arrival helps to other groups put the sales/deployment/marketing/put the sales/deployment/marketing/training/operations elements in place.training/operations elements in place.

Small Releases are not…Small Releases are not…

Small Releases

Schedule Pressure

IncrementalIncremental

Risk reductionRisk reduction ChangesChanges DeliveryDelivery ProgressProgress

Activities need to Activities need to be able to handle be able to handle small increments small increments up to a single up to a single changechange

Bug Bash, by Hans Bjordahl

Most ImportantlyMost Importantly

MSF for Agile Software MSF for Agile Software Development is now available at:Development is now available at:

http://www.microsoft.com/http://www.microsoft.com/msfmsf Caveat: This is a beta version. Caveat: This is a beta version.

There is additional work in There is additional work in progress to refine the content. We progress to refine the content. We have several external pilot projects have several external pilot projects underway.underway.

ConclusionsConclusions

MSF is a vehicle for delivering MSF is a vehicle for delivering Microsoft’s contributions to the Microsoft’s contributions to the software development communitysoftware development community

MSF version 4.0 comes in two flavors MSF version 4.0 comes in two flavors to deliver maximum flexibilityto deliver maximum flexibility

MSF updates will be delivered via MSF updates will be delivered via MSDNMSDN

MSF can become a basis for your MSF can become a basis for your software development processsoftware development process

This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY. This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY. © 2001 Microsoft Corporation. All rights reserved.© 2001 Microsoft Corporation. All rights reserved.