MSF Agile - Embarcadero Technologies
Download
Report
Transcript MSF Agile - Embarcadero Technologies
MSF for Agile
Software
Development
Granville Miller
8 November 2005
Project Failure Rates
2000
1998
Failed
Challenged
Succeeded
23%
49%
28%
28%
1995
1994
46%
40%
31%
26%
33%
53%
27%
16%
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
The State is Improving
Small Releases
Increased Customer Involvement
Agile Manifesto
Individuals and interactions over
processes and tools
Working software over
comprehensive documentation
Customer collaboration over contract
negotiation
Responding to change over following
a plan
Source: http://www.agilemanifesto.org/
What are Personas?
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.
Where do Personas Fit?
On-site
Customer
Persona
Actor
Customer Involvement
Personas
Scenarios
Working Software
Review
Refine
Real Customers
Personas at Microsoft
Source: http://www.research.microsoft.com/research/coet/Grudin/Personas/Pruitt-Grudin.doc
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 is fictional reality, collecting
together real data describing the
important characteristics of a
particular user group in a fictional
character.
Jack
Role: Online Shopper
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.
Judith
Role: Online Shopper
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.
MSF for Agile Software
Development
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.
Utilizes a context-driven approach
(context-based) to determine how to
operate the project.
Getting the Whole Team
Involved
Larry
Sykes
Business Analyst
Gaines
Developer
Jacqui
Ackerman
Project Manager
Mort
Renee Davis
Tester
Art
Benson
Architect
Ian Manning
Release Manager
Roles -> Constituencies
Shadow Architecture
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
Trailing Shadows
Trailing Shadows are visual
reflections of the code base
These should come for free or nearly
free
Leading Shadows
Sometimes we need to sketch out
architecture/design before we
implement them
Whiteboard is often used
Should become working code within
the iteration – no BDUF
Larger Projects….
Lead team
Program
Management
Function team
User
Experience
Product
Management
Development
User
Experience
Test
Release
Operations
Program
Management
Architecture
Architecture
Program
Management
Architecture
Development
Catalog
User
Experience
Development
Fulfillment
Test
Test
Release
Operations
Program
Management
Architecture
User
Experience
Development
Site Engine &
Design
Test
Feature teams
Getting the Whole Team
Involved
Larry
Sykes
Business Analyst
Mort
Gaines
Developer
Jacqui
Ackerman
Project Manager
Renee Davis
Tester
Art
Benson
Architect
Ian Manning
Release Manager
Context Driven Testing
Testing that is acceptable on one project
may be criminal on another
Release Criteria
Testing Thresholds
Trend Analysis
Process Feedback
Release Criteria
No Sev 1s and 2s in the shipping
product
Test Thresholds
Code Coverage for Unit Test
Which statements of my application
are being executed?
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
}
Code Coverage
void PurchaseItem(int itemID)
{
if (itemID == 0)
{
throw new Exception();
}
else
{
ProcessOrder(itemID);
}
}
void UnitTest()
{
PurchaseItem(1);
// test the output
}
Code Coverage
void PurchaseItem(int itemID)
{
if (itemID == 0)
{
throw new Exception();
}
else
{
ProcessOrder(itemID);
}
}
void UnitTest()
{
PurchaseItem(1);
// test the output
}
Code Coverage
void PurchaseItem(int itemID)
{
if (itemID == 0)
{
throw new Exception();
}
else
{
ProcessOrder(itemID);
}
}
void UnitTest()
{
PurchaseItem(1);
// test the output
}
Code Coverage
void PurchaseItem(int itemID)
{
if (itemID == 0)
{
throw new Exception();
}
else
{
ProcessOrder(itemID);
}
}
void UnitTest()
{
PurchaseItem(1);
// test the output
}
Code Coverage
void PurchaseItem(int itemID)
{
if (itemID == 0)
{
throw
thrownew
newException();
Exception();
}
else
{
}
}
ProcessOrder(itemID);
ProcessOrder(itemID);
void UnitTest()
{
PurchaseItem(1);
// test the output
}
Problems with Code
Coverage
Focusing on statement and branch
coverage is not sufficient, you may
miss:
Missing code
Incorrect handling of boundary
conditions
Timing problems
Memory Leaks
Use coverage sensibly
Objective, but incomplete
Too often distorts sensible action
The Problem with Process
Predictable
Repeatable
Productive
• Complex
• Disconnected
• Hardened
Challenges
• Getting people to know about 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 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
Working software over
comprehensive documentation
Customer collaboration over contract
negotiation
Responding to change over following
a plan
Source: http://www.agilemanifesto.org/
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.
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…
Schedule Pressure
Small Releases
Incremental
Risk reduction
Changes
Delivery
Progress
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:
http://www.microsoft.com/msf
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 version 4.0 comes in two flavors
to deliver maximum flexibility
MSF updates will be delivered via
MSDN
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.