an introduction to software development - gathering requirements, part 2

16
An Introduction To Software Development Using Python Spring Semester, 2015 Class #5: Gathering Requirements, Part 2

Upload: blue-elephant-consulting

Post on 16-Jul-2015

84 views

Category:

Education


0 download

TRANSCRIPT

An Introduction To Software

Development Using Python

Spring Semester, 2015

Class #5:

Gathering

Requirements,

Part 2

The Big Problem With Estimates

Your estimate says that the

software project will take 135 days…

Your customer wants the software

in 90 days…

Image Credit: www.freepik.com

All Of Your Requirements

Title: Show Current Deals

Estimate:

Title: Book Packages

Estimate: 15

Title: Arrange Travel

Estimate: 5

Title: Book A Room

Estimate: 10

Title: Book Packages

Estimate: 20

Title: Book a Boat Tour

Estimate: 5Title: Pay with Visa/MC/Paypal

Estimate: 10

Title: Order Trip DVD

Estimate: 5

Title: Review Stay

Estimate: 10

Title: Order Room Service

Estimate: 20

Title: Choose View

Estimate: 15

Title: Support 3,000 concurrent users

Estimate: 20

Image Credit: Sebastien Wiertz

Which ones would you implement to meet

the customer’s schedule?

Wrong!

The Customer sets the priorities! You ignored the customer completely

when you chose which user stories take priority for his project!

Image Credit: www.clipartlogo.com

Ultimately this is a choice that the

customer must make (you can help) …

Helping Your Customer Prioritize

• It’s your customer’s decision as to which user stories will end up taking priority over others.

• Lay out all of your story cards for the customer

• Have the customer select the list of features that are the most important to them.

• You then select the list of features that will be delivered in the Milestone 1.0 version of the software.

Image Credit: Ben W

What Will Be In Milestone 1.0?

• Milestone 1.0 will be the first major release of software to the customer (all of it!)

• You will now expect to get paid for your work

• What you need to do:

– Explain to the customer what can be done in the available time

– Deliver what is needed – most important to the customer

– Do not worry about how long this will take – just capture your customer's priorities

Image Credit: www.clipartbest.com

How A Customer Creates Milestone 1.0

• Organize your user stories in priority order

• Have customer select stories that are the most important to them

• Collect together all of the user stories that your customer needs developed and call this Milestone 1.0

Image Credit: www.sparksclass.com

Sanity Check For Milestone 1.0

• You now know what features your customer wants included in Milestone 1.0

• Add together all of the user story estimates for Milestone 1.0

• Does this total estimate seem reasonable to accomplish this within the available time?

Image Credit: www.clipartof.com

Problem: Too Much To Do

• What should you do if you have 100 days of effort and your customer wants the software in 30 days?

• Cut out functionality – remove user stories that are not absolutely critical!

• Keep your development momentum up by shipping a milestone build as soon as possible

• Focus on delivering just a working version of the software, nothing else.

Image Credit: free-pictograms.com

Adding More People

• Every new person has to come up to speed on your project

• They need to understand the software

• They need to understand the technical decisions

• They need to understand how everything fits together.

• They will NOT be 100% productive

Image Credit: www.clker.com

Diminishing Returns• Small teams can benefit greatly from

adding more people.

• After a certain point, performance will start to max out

• Large teams require more communication and adding new members will have less impact on performance

• There is a point that beyond which adding more members will actually reduce team performance

Image Credit: alexkrupp.typepad.com

Your Goal: A Reasonable Milestone 1.0

• Add some people

• Reprioritize user stories with the customer

+

Image Credit: www.clker.com,www.easyvectors.com

Prioritize Example

Title: Show Current Deals

Estimate:

Title: Book Packages

Estimate: 15 , Priority: ?

Title: Arrange Travel

Estimate: 5 , Priority: ?

Title: Book A Room

Estimate: 10 , Priority: ?

Title: Book Packages

Estimate: 20 , Priority: ?

Title: Book a Boat Tour

Estimate: 5 , Priority: ?Title: Pay with Visa/MC/Paypal

Estimate: 10, Priority: ?

Title: Order Trip DVD

Estimate: 5

Title: Review Stay

Estimate: 10

Title: Order Room Service

Estimate: 20 , Priority: ?

Title: Choose View

Estimate: 15 , Priority: ?

Title: Support 3,000 concurrent users

Estimate: 20 , Priority: ?

Image Credit: Sebastien Wiertz

Which ones would you implement to meet

the customer’s schedule?

Iteration ExampleIteration #1

Total Days: Divided by 2 developers:

Iteration #2

Total Days: Divided by 2 developers:

Iteration #3

Total Days: Divided by 2 developers:

What We Covered Today

1. Helping Your Customer Prioritize

2. Creating Milestone 1.0

3. Adding more people.

Image Credit: http://www.tswdj.com/blog/2011/05/17/the-grooms-checklist/

What We’ll Be Covering Next Time

1. Project Planning

2. Priorities

3. Velocity

Image Credit: http://merchantblog.thefind.com/2011/01/merchant-newsletter/resolve-to-take-advantage-of-these-5-e-commerce-trends/attachment/crystal-ball-fullsize/