55
Mike Cohn Mountain Goat Software [email protected] Selecting a Development Process: Choosing Among the Leading Alternatives 1

Selecting a Development Process

Embed Size (px)

Citation preview

Page 1: Selecting a Development Process

Mike CohnMountain Goat Software

[email protected]

Selecting a Development Process:

Choosing Among theLeading Alternatives

1

Page 2: Selecting a Development Process

Founding member and director of Agile Alliance, Scrum Alliance, and Agile Project Leadership Network

Founder of Mountain Goat Software

Consultant, author, and speaker

Mike Cohn - background

© Mountain Goat Software, LLC

2

Page 3: Selecting a Development Process

© Mountain Goat Software, LLC

ConsiderationsTeam Software ProcessScrumExtreme ProgrammingOpenUP/BasicFeature-Driven Development

Today’s agenda

3

Page 4: Selecting a Development Process

© Mountain Goat Software, LLC

CeremonyThe amount of formalism in a process

Documentation, method weight, reviews

Few documentsFew steps

Many documentsFormal steps

4

Page 5: Selecting a Development Process

© Mountain Goat Software, LLC

CyclesNumber and length of iterations

Few documentsFew steps

Many documentsFormal steps

Sequential

Many short iterations(5 days)

5

Page 6: Selecting a Development Process

© Mountain Goat Software, LLC

Placing the processes

Few documentsFew steps

Many documentsFormal steps

Sequential

Many short iterations(5 days)

Extreme Programming

Scrum

Team Software Process

OpenUP

6

Page 7: Selecting a Development Process

© Mountain Goat Software, LLC

ConsiderationsTeam Software ProcessScrumExtreme ProgrammingOpenUP/BasicFeature-Driven Development

Today’s agenda

7

Page 8: Selecting a Development Process

© Mountain Goat Software, LLC

Team Software Process (TSP)Created by Watts Humphrey

Of Software Engineering Institute and Capability Maturity Model (CMM)

Builds on his Personal Software Process

A “cyclic development strategy”

Another way of saying “iterative and incremental”

8

Page 9: Selecting a Development Process

© Mountain Goat Software, LLC

Goals of the TSP1. Build on the Personal Software Process2. Develop products in cycles3. Establish standard measures for quality and

performance4. Provide precise measures5. Use role and team evaluations6. Require process discipline7. Provide guidance on teamwork problems

9

Page 10: Selecting a Development Process

© Mountain Goat Software, LLC

Team Software Process (TSP)

Strategy 1Plan 1

Requirements 1Design 1

Implementation 1Test 1

Postmortem 1

Cycle 1 Launch

Strategy 2Plan 2

Requirements 2Design 2

Implementation 2Test 2

Postmortem 2

Cycle 2 Launch

Strategy 3Plan 3

Requirements 3Design 3

Implementation 3Test 3

Postmortem 3

Cycle 3 Launch

10

Page 11: Selecting a Development Process

© Mountain Goat Software, LLC

Cyclic developmentA testable version is produced at the end of each cycle

it

Defects should be removed during the cycle

11

Page 12: Selecting a Development Process

© Mountain Goat Software, LLC

Designed to solve team problems

Tom DeMarco

“The success or failure of a project is seldom due to

‘has the state of the art advanced far enough so that this program can be written?’ Of course it has. If the project goes down the tubes, it will be non-technical, human interaction problems that do it in. The team will fail to bond, or the developers will fail to gain

interminably over meaningless methodological issues.”

12

Page 13: Selecting a Development Process

© Mountain Goat Software, LLC

Teams, members, roles and goals

A team has one or more members

Goals are assigned throughout this hierarchy

Team, member, role

Team leader Quality/process manager

Development manager

Planning manager

Support manager

13

Page 14: Selecting a Development Process

© Mountain Goat Software, LLC

Goals and goals and...Team goals

Produce a quality productRun a productive and well-managed projectFinish on time

Team member goals

Be a cooperative and effective team memberDo consistently disciplined personal workPlan and track all your personal workProduce quality products

14

Page 15: Selecting a Development Process

© Mountain Goat Software, LLC

...more goals

Dev manager goals

Produce a superior productFully use the team members’ skills and abilities

Some of these goals point out some underlying beliefs of TSP, such as:

You can’t control what you can’t measureManagers “use the team members’ skills”

15

Page 16: Selecting a Development Process

© Mountain Goat Software, LLC

Scripts and forms

a software system

21 activity scripts

10 role scripts

Often quite detailed

Scripts prescribe completing 21 supporting forms

16

Page 17: Selecting a Development Process

© Mountain Goat Software, LLC

The inspection scriptPurpose To help engineers produce quality products

Entry criteria aA completed and reviewed product with available materials

Step Activities Description

1Plan the inspection

The developerArranges with the quality/process manager or

moderatorHandles the mechanics of setting up and running…

2Hold the inspection

The moderator describes the inspection processThe producer familiar the inspection team with the product.

... ... ...

Exit c criteria

17

Page 18: Selecting a Development Process

© Mountain Goat Software, LLC

Choose TSP if...…you have the discipline to follow all of its

…are already using the complementary Personal Software Process (PSP)

…team members need this level of guidance

…you do not have emergent requirements

18

Page 19: Selecting a Development Process

© Mountain Goat Software, LLC

ConsiderationsTeam Software ProcessScrumExtreme ProgrammingOpenUP/BasicFeature-Driven Development

Today’s agenda

19

Page 20: Selecting a Development Process

© Mountain Goat Software, LLC

Scrum characteristics30-day iterations called “sprints”

Self-organizing teams

But many Scrum teams are adopting much of XP

Uses generative rules to create an agile environment for delivering projects

20

Page 21: Selecting a Development Process

© Mountain Goat Software, LLC

Scrum roles

Not quite the project managerRemoves impedimentsEnforces Scrum values

ScrumMaster

Scrum team7–9 full-time individualsSelf-organizingIdeally full-time on project

Product ownerCustomer or user of the projectMakes prioritization decisions

21

Page 22: Selecting a Development Process

© Mountain Goat Software, LLC

Scrum

Cancel

Gift wrap

Return

Sprint2-4 weeks

Return

Sprint goal

Sprint backlog

Potentially shippableproduct increment

Productbacklog

CouponsGift wrap

Coupons

Cancel

24 hours

22

Page 23: Selecting a Development Process

© Mountain Goat Software, LLC

Scrum roles and responsibilities

Prioritizes features according to market valueCan change features and priority every sprintAccepts or rejects work results

ProductOwner

Ensures that the team is fully functional and productiveEnables close cooperation across all roles and functions and removes barriersShields the team from external interferencesEnsures that the process is followed.

ScrumMaster

Cross-functional, seven plus/minus two membersSelects the sprint backlogHas the right to do everything within the boundaries of the project guidelines to reach the sprint goalOrganizes itself and its workDemos work results to the Product OwnerTeam

23

Page 24: Selecting a Development Process

© Mountain Goat Software, LLC

Scrum meetingsSprint

planning

Team selects product backlog items to complete during sprint

Daily scrumWhat did you do yesterday?What will you do today?What’s in your way?

Team demonstrates working software built in the sprintSprint review

Sprint retrospective ways to improve

24

Page 25: Selecting a Development Process

© Mountain Goat Software, LLC

Scrum of scrums of scrums

25

Page 26: Selecting a Development Process

© Mountain Goat Software, LLC

A sprint burndown chart

0

200

400

600

800

1,0004/

29/0

2

5/6/

02

5/13

/02

5/20

/02

5/24

/02

26

Page 27: Selecting a Development Process

© Mountain Goat Software, LLC

Choose Scrum if...…requirements are changing or emergent

…you’re willing to let the team self-organize

…you need a management framework more than a set of engineering practices

…you want to better manage risk

…you need a proven, scalable agile process

27

Page 28: Selecting a Development Process

© Mountain Goat Software, LLC

ConsiderationsTeam Software ProcessScrumExtreme ProgrammingOpenUP/BasicFeature-Driven Development

Today’s agenda

28

Page 29: Selecting a Development Process

© Mountain Goat Software, LLC

Extreme Programming

project management approach

A tough target to hit but highly productive if you do

29

Page 30: Selecting a Development Process

© Mountain Goat Software, LLC

XP’s customer practices

On-site customer

Small releases

30

Page 31: Selecting a Development Process

© Mountain Goat Software, LLC

XP’s quality practices

Metaphor

Testing

Simple design

Refactoring

Pair programming

31

Page 32: Selecting a Development Process

© Mountain Goat Software, LLC

XP’s quality practices

The Planning Game

Sustainable pace

Collective ownership

Coding standards

Continuous integration

32

Page 33: Selecting a Development Process

© Mountain Goat Software, LLC

Choose Extreme Programming if...

requirements

…you have or can develop strong engineering skills and practices

…customers can be involved on a daily (hourly) basis

…it’s important you hit the bull’s eye right off and you think you can

33

Page 34: Selecting a Development Process

© Mountain Goat Software, LLC

ConsiderationsTeam Software ProcessScrumExtreme ProgrammingOpenUP/BasicFeature-Driven Development

Today’s agenda

34

Page 35: Selecting a Development Process

© Mountain Goat Software, LLC

OpenUP/Basic

Delivered through the Eclipse Process Framework

Targeted at teams of 3-6 people

Targeted at projects 3-6 months long

35

Page 36: Selecting a Development Process

© Mountain Goat Software, LLC

Comparison with RUP

OpenUP/Basic RUP

Pages 190 ~2000

Roles 6 ~45

Tasks 23 ~150

Artifacts 17 ~80

Source: What is the Eclipse Process Framework, Per Kroll and Scott Ambler, IBM Rational Software Development Conference 2006.

36

Page 37: Selecting a Development Process

© Mountain Goat Software, LLC

OpenUP rolesAnalyst

Architect

Developer

Tester

Project manager

37

Page 38: Selecting a Development Process

© Mountain Goat Software, LLC

Roles, tasks, and artifacts

Plan theproject

Assessresults

Prioritizework

Monitorandcontrolproject

InitiateIteration

PlanIteration

Projectmanager

Performs

Projectplan

Statusassessment

Iterationplan

Workitems list

Responsible for

38

Page 39: Selecting a Development Process

© Mountain Goat Software, LLC

Open UP phases

Establish scope and produce business caseMitigate business risksGet buy-in and decision to undertake project

Inception

Reduce major risks to enable cost and schedule estimatesMitigate major technical risksImplement a baseline architectureImplement key capabilities

Elaboration

39

Page 40: Selecting a Development Process

© Mountain Goat Software, LLC

Majority of implementationEnds with deployment of a beta version

Construction

Ensure software meets users’ needsPrepare for releaseSolicit user feedback and make minor adjustments

Transition

40

Page 41: Selecting a Development Process

© Mountain Goat Software, LLC

Iterate within each phase

Inception

Prel

imin

ary

itera

tion(

s)

Elaboration

Iter

atio

n #

1

Iter

atio

n #

2

Iter

atio

n #

n

Iter

atio

n #

n+1

Construction

Iter

atio

n #

n+2

Transition

Iter

atio

n #

m

Iter

atio

n #

m

41

Page 42: Selecting a Development Process

© Mountain Goat Software, LLC

Choose OpenUP/Basic if...You like RUP but want something lighter

You want an open source version of RUP

You have a small project (3-6 people; 3-6 months)

You want a semi-agile process based on role, task and artifact guidance

42

Page 43: Selecting a Development Process

© Mountain Goat Software, LLC

ConsiderationsTeam Software ProcessScrumExtreme ProgrammingOpenUP/BasicFeature-Driven Development

Today’s agenda

43

Page 44: Selecting a Development Process

© Mountain Goat Software, LLC

Feature-Driven Development Originates in Java Modeling in Color with UML by Coad, Lefebvre and De Luca in 1999

Jeff DeLuca is main advocate

A Practical Guide to Feature-Driven Development by Palmer and Felsing in 2002

44

Page 45: Selecting a Development Process

© Mountain Goat Software, LLC

Features and feature setsFeatures

Serve as primary unit of work

Similar to XP stories or Scrum backlog items

Small enough to do in two weeks

Feature SetCollection of features

Assigned to a Chief Programmer and her team

Major Feature SetA domain area, one or more Feature Sets

45

Page 46: Selecting a Development Process

© Mountain Goat Software, LLC

Example featuresA short description of an action of value to users of the system

Format<action> the <result> <by|for|of|to> a(n) <object>

Estimate the closing price of a stockCalculate the total cost of an orderChange the password for a userRetrieve the room number of a guest

Examples

46

Page 47: Selecting a Development Process

© Mountain Goat Software, LLC

Five processes

Developan overall

model

Build a features

list

Plan by feature

Design by feature

Build by feature

Sequential Iterative

47

Page 48: Selecting a Development Process

© Mountain Goat Software, LLC

Sample development planMajor feature

set Feature set Feature Chief programmer Date

Interfacing ReservationsMake a reservation for a guest

Chris December

Interfacing ReservationsCancel a reservation for a guest

Chris December

Interfacing ReservationsUpdate a reservation for a guest

Chris January

Reporting Future reservations

View future reservations of competitors

James December

Reporting Rates View internet rates for a hotel Kristy February

48

Page 49: Selecting a Development Process

© Mountain Goat Software, LLC

Eight best practices

Feature teams

Domain object

modeling

Regular progress

Regular builds

Individual class

ownership management

InspectionsDeveloping by feature

Need all eight to be doing FDD

49

Page 50: Selecting a Development Process

© Mountain Goat Software, LLC

Tracking progress

Reservations(3)

65%

December

Chris Chiefprogrammer

Feature set nameNumber of

features in set

Percentage complete

Target completionmonth

Work in progress

Completed

Attention

Not started

50

Page 51: Selecting a Development Process

© Mountain Goat Software, LLC

Choose FDD if...…you are willing to trade some agility for a

…your organization has solid UML skills

…most requirements are knowable in advance or somewhat stable

…you do not view self-organizing teams as a critical success factor

51

Page 52: Selecting a Development Process

© Mountain Goat Software, LLC

Where to go nextTeam Software

Process

Scrum

Extreme Programming

Introduction to the Team Software Process by Watts S. Humphrey

www.mountaingoatsoftware.com/scrumAgile Software Development with Scrum by Ken Schwaber and Mike BeedleAgile Project Management with Scrum by Ken Schwaber

www.xprogramming.comc2.com/cgi/[email protected]

52

Page 53: Selecting a Development Process

© Mountain Goat Software, LLC

Where to go next

OpenUP

FDD

Agile in Generalwww.agilealliance.orgwww.mountaingoatsoftware.com

www.featuredrivendevelopment.com

www.eclipse.org/epfAgility and Discipline Made Easy by Per Kroll and Bruce MacIsaac

53

Page 54: Selecting a Development Process

© Mountain Goat Software, LLC

Upcoming public classesDate What Where

Oct 18-19 Denver

Oct 23-24Oct 25 Agile Estimating and Planning San Diego

Jan 15-16Jan 17 Agile Estimating and Planning Atlanta

Feb 26-27Feb 28 Agile Estimating and Planning

Santa Clara

Other classes s in London and Oslo if you’re up for a longer trip.

More info atwww.mountaingoatsoftware.com

54

Page 55: Selecting a Development Process

© Mountain Goat Software, LLC

[email protected]

www.mountaingoatsoftware.com

(303) 810-2190 (mobile)

Mike Cohn contact info

55