MSF for Agile Software Development Granville Miller 8 November 2005
Project Failure Rates %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 Source: The Standish Group International, Extreme Chaos, The Standish Group International, Inc., 2000 SucceededChallengedFailed
The State is Improving Small Releases Small Releases Increased Customer Involvement Increased Customer Involvement
Agile Manifesto Individuals and interactions over processes and tools Individuals and interactions over processes and tools Working software over comprehensive documentation Working software over comprehensive documentation Customer collaboration over contract negotiation Customer collaboration over contract negotiation Responding to change over following a plan Responding to change over following a plan Source:
What are Personas? In the context of product development, personas are descriptions of a group of typical users. In the context of product development, personas are descriptions of a group of typical users. Instead of talking about the group of users in an abstract, impersonal way, a persona represents a 'proxy' for the user group, and provides a means to talk and reason about the group through the characteristics of one fictional individual, the persona. Instead of talking about the group of users in an abstract, impersonal way, a persona represents a 'proxy' for the user group, and provides a means to talk and reason about the group through the characteristics of one fictional individual, the persona.
Where do Personas Fit? On-site Customer Actor Persona
Customer Involvement Review Working Software Refine Personas Real Customers Scenarios
Personas at Microsoft Source:
What is in a Persona? A persona describes the typical knowledge, skills, abilities, needs, desires, working habits, tasks, usage patterns and backgrounds of a particular set of users. A persona describes the typical knowledge, skills, abilities, needs, desires, working habits, tasks, usage patterns and backgrounds of a particular set of users. A persona is fictional reality, collecting together real data describing the important characteristics of a particular user group in a fictional character. A persona is fictional reality, collecting together real data describing the important characteristics of a particular user group in a fictional character.
Jack Role: Online Shopper Role: Online Shopper Motivation: Get it Quick Motivation: Get it Quick Usage: Jack hates to shop but wants his equipment immediately. He will place his order on Thursday night for his weekend activity. Jack doesn’t want to wade through a catalog. Instead, he wants things that he typically orders to show immediately. Usage: Jack hates to shop but wants his equipment immediately. He will place his order on Thursday night for his weekend activity. Jack doesn’t want to wade through a catalog. Instead, he wants things that he typically orders to show immediately.
Judith Role: Online Shopper Role: Online Shopper Motivation: Get it Cheap Motivation: Get it Cheap Usage: Judith shops for the best bargain. She looks for the best deal on similar items. She will visit half a dozen sites to find the best deal. Usage: Judith shops for the best bargain. She looks for the best deal on similar items. She will visit half a dozen sites to find the best deal.
MSF for Agile Software Development Scenario-driven development process for building.NET, Web, Web Service, and other object-oriented applications. Scenario-driven development process for building.NET, Web, Web Service, and other object-oriented applications. Directly incorporates practices for handling quality of service requirements such as performance and security. Directly incorporates practices for handling quality of service requirements such as performance and security. Utilizes a context-driven approach (context-based) to determine how to operate the project. Utilizes a context-driven approach (context-based) to determine how to operate the project.
Getting the Whole Team Involved Jacqui Ackerman Project Manager Jacqui Ackerman Project Manager Art Benson Architect Art Benson Architect Mort Gaines Developer Mort Gaines Developer Renee Davis Tester Renee Davis Tester Larry Sykes Business Analyst Larry Sykes Business Analyst Ian Manning Ian Manning Release Manager
Roles -> Constituencies
Shadow Architecture With the visual modeling tools commonly available today, working code can cast shadows With the visual modeling tools commonly available today, working code can cast shadows
To See the Forest… Architects should allow work at the component or “application” level Architects should allow work at the component or “application” level
Trailing Shadows Trailing Shadows are visual reflections of the code base Trailing Shadows are visual reflections of the code base These should come for free or nearly free These should come for free or nearly free
Leading Shadows Sometimes we need to sketch out architecture/design before we implement them Sometimes we need to sketch out architecture/design before we implement them Whiteboard is often used Whiteboard is often used Should become working code within the iteration – no BDUF Should become working code within the iteration – no BDUF
Larger Projects…. Function team Feature teams Lead team Program Management Release Operations Product Management User Experience Development Test Catalog Program Management Development Test Site Engine & Design Program Management User Experience Development Test Fulfillment Program Management User Experience Development Test User Experience Release Operations Architecture
Getting the Whole Team Involved Jacqui Ackerman Project Manager Jacqui Ackerman Project Manager Art Benson Architect Art Benson Architect Mort Gaines Developer Mort Gaines Developer Renee Davis Tester Renee Davis Tester Larry Sykes Business Analyst Larry Sykes Business Analyst Ian Manning Ian Manning Release Manager
Testing that is acceptable on one project may be criminal on another Testing that is acceptable on one project may be criminal on another Release Criteria Release Criteria Testing Thresholds Testing Thresholds Trend Analysis Trend Analysis Process Feedback Process Feedback Context Driven Testing
Release Criteria No Sev 1s and 2s in the shipping product No Sev 1s and 2s in the shipping product
Test Thresholds Code Coverage for Unit Test Code Coverage for Unit Test Which statements of my application are being executed? Which statements of my application are being executed? Useful to identify incomplete testing Useful to identify incomplete testing
Code 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 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) Code Coverage void UnitTest() { PurchaseItem(1); // test the output }
{ throw new Exception(); } { ProcessOrder(itemID); } } void PurchaseItem(int itemID) if (itemID == 0) Code Coverage else void UnitTest() { PurchaseItem(1); // test the output }
{ { throw new Exception(); } { } } void PurchaseItem(int itemID) if (itemID == 0) Code Coverage else ProcessOrder(itemID); void UnitTest() { PurchaseItem(1); // test the output }
{ throw new Exception(); } { ProcessOrder(itemID); } void PurchaseItem(int itemID) if (itemID == 0) Code Coverage else ProcessOrder(itemID); throw new Exception(); void UnitTest() { PurchaseItem(1); // test the output }
Problems with Code Coverage Focusing on statement and branch coverage is not sufficient, you may miss: Focusing on statement and branch coverage is not sufficient, you may miss: Missing code Missing code Incorrect handling of boundary conditions Incorrect handling of boundary conditions Timing problems Timing problems Memory Leaks Memory Leaks Use coverage sensibly Use coverage sensibly Objective, but incomplete Objective, but incomplete Too often distorts sensible action Too often distorts sensible action
The Problem with Process PredictableRepeatable Productive Complex Complex Disconnected Disconnected Hardened Hardened Challenges Challenges Getting people to know about it Getting people to know about it Getting people to use it Getting people to use it
How we use process
The Limitations of Process Process can only take you to the point where others have solved the problem before and captured their experience in a process form. Process can only take you to the point where others have solved the problem before and captured their experience in a process form. Process that is integrated with the tooling is more likely to be used when schedules get tight. Process that is integrated with the tooling is more likely to be used when schedules get tight.
Tooling
Agile Manifesto Individuals and interactions over processes and tools Individuals and interactions over processes and tools Working software over comprehensive documentation Working software over comprehensive documentation Customer collaboration over contract negotiation Customer collaboration over contract negotiation Responding to change over following a plan Responding to change over following a plan Source:
Date or Feature Driven Projects can be driven by date or functionality. When a project is driven by date, project deadlines are usually determined by the market, events, competitors, regulations, financial implications, or other business reasons. Projects can be driven by date or functionality. When a project is driven by date, project deadlines are usually determined by the market, events, competitors, regulations, financial implications, or other business reasons. Understanding the progress of the system is critical to managing expectations and planning according. Additionally, organizational, technical, and project risks may need to be tracked when they have a time component. Even if a project is not date-driven, understanding the estimated time of arrival helps to other groups put the sales/deployment/marketing/ training/operations elements in place. Understanding the progress of the system is critical to managing expectations and planning according. Additionally, organizational, technical, and project risks may need to be tracked when they have a time component. Even if a project is not date-driven, understanding the estimated time of arrival helps to other groups put the sales/deployment/marketing/ training/operations elements in place.
Small Releases are not… Small Releases Schedule Pressure
Incremental Risk reduction Risk reduction Changes Changes Delivery Delivery Progress Progress Activities need to be able to handle small increments up to a single change Activities need to be able to handle small increments up to a single change
Bug Bash, by Hans Bjordahl
Most Importantly MSF for Agile Software Development is now available at: MSF for Agile Software Development is now available at: Caveat: This is a beta version. There is additional work in progress to refine the content. We have several external pilot projects underway. Caveat: This is a beta version. There is additional work in progress to refine the content. We have several external pilot projects underway.
Conclusions MSF is a vehicle for delivering Microsoft’s contributions to the software development community MSF is a vehicle for delivering Microsoft’s contributions to the software development community MSF version 4.0 comes in two flavors to deliver maximum flexibility MSF version 4.0 comes in two flavors to deliver maximum flexibility MSF updates will be delivered via MSDN MSF updates will be delivered via MSDN MSF can become a basis for your software development process MSF can become a basis for your software development process
This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY. © 2001 Microsoft Corporation. All rights reserved.