msf for agile software development granville miller 8 november 2005
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.
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
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
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.
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.
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
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.