criticalspan.com agile software development chris platner 27-jan-2010

52
criticalspan .com Agile Software Development Chris Platner 27-Jan-2010

Upload: teresa-tyler

Post on 11-Jan-2016

213 views

Category:

Documents


0 download

TRANSCRIPT

criticalspan.com

Agile Software Development

Chris Platner

27-Jan-2010

criticalspan.com

Who am I?

› 14 years at Serena, a maker of Application Lifecycle Management Tools

› Worked with 2 co-inventors of Scrum

› Principal at Critical Span, a software consulting firm

2 27-Jan-2010

criticalspan.com

Outline

› Do I really need process?

› Common Processes Overview

› Agile Scrum– Activities– Roles– Best Practices

27-Jan-20103

criticalspan.com

Who cares about Process?

4

if (you_write_software) {

you_have_a_software_process = true;}

27-Jan-2010

criticalspan.com

The Main Goal

› The main goal should always be to deliver quality, tested software that satisfies the customer, and do it in a sustainable manner

27-Jan-20105

criticalspan.com

Okay, What Processes Are There?

› Chaotic– None*

› Planned– Waterfall

› Iterative– Agile

› and many more…– Capability Maturity Model – Integrated (CMMI)– Extreme Programming (XP)– Crystal– RUP– Spiral– etc.

6 27-Jan-2010

criticalspan.com

We Don’t Need No Stinkin’ Process

7 27-Jan-2010

criticalspan.com

We Don’t Need No Stinkin’ Process

› Q: Let’s just Code Like %$#&*!!

› A: Yes, but…– Bug fixing is almost always postponed until the end– Software is often very late, low quality, or both– Delivered software is often difficult to maintain– Requires lots of ‘commitment’, and is not sustainable

8 27-Jan-2010

criticalspan.com

Waterfall

9

Requirements

Design

Coding

Integration

Testing

Installation

Operation/Maintenance

27-Jan-2010

criticalspan.com

Waterfall

› Q: Let’s figure out everything before we start coding!

› A: Not Likely…– Users’ requirements change over time – “That’s just what

I asked for, but not what I want”– Strict waterfall doesn’t allow feedback after passing to

next phase. Learning in later phases can’t easily be passed back to earlier ones.

10 27-Jan-2010

criticalspan.com

Agile

– An iterative process– Short iterations– Emphasis on interaction with a customer– Practices

• TDD• Pair Programming• Continuous Integration

27-Jan-201011

criticalspan.com

Agile

› Manifesto for Agile Software Development– We are uncovering better ways of developing software by

doing it and helping others do it.  Through this work we have come to value:

• Individuals and interactions over processes and tools• Working software over comprehensive documentation• Customer collaboration over contract negotiation• Responding to change over following a plan

– That is, while there is value in the items on the right, we value the items on the left more. 

27-Jan-201012

from http://agilemanifesto.org/

criticalspan.com

Agile Scrum

› Scrum is one way of realizing Agile– Daily Scrum meetings– 2-4 week iterations called sprints– Relies heavily on smart, flexible people– Self-organizing teams– Sustainable– Always have a shippable product

27-Jan-201013

criticalspan.com

Who uses Scrum?

› Independent Software Vendors (ISVs)

› Fortune 100 companies

› Small startups

› Internal development

› Contract development

› Companies using Scrum– Adobe, Amdocs, F5 Networks, General Electric, HP, Intel,

Intuit, LexisNexis, Microsoft, Motorola, Oracle, Serena, Siemens, Sun Microsystems

27-Jan-201014

criticalspan.com

What has Scrum been used for?

› FDA-approved, life-critical software for x-rays and MRIs

› Enterprise workflow systems

› Financial payment applications

› Biotech

› Call center systems

› Tunable laser subsystems for fiber optic networks

› Application development environments

› 24x7 with 99.99999% uptime requirements

› Multi-terabyte database applications

› Media-neutral magazine products

› Web news products

27-Jan-201015

criticalspan.com

Where Did Scrum Come From?

› Jeff Sutherland, John Scumniotales, and Jeff McKenna– Initial Scrums at Easel Corp in

1993

› Ken Schwaber– ADM

› Initial definitions of Scrum at OOPSLA 96 with Sutherland

27-Jan-201016

criticalspan.com

Agile Scrum Overview

› Roles

› Activities/Rhythms

› Artifacts

27-Jan-201017

criticalspan.com

Agile Scrum Overview

18 27-Jan-2010

criticalspan.com

Primary Roles

› The Team– Does the work of designing, implementing, testing

› Scrum Master– Runs the Scrum meetings

› Product Owner– Represents the customer

› Pigs– The Team, Scrum Master

› Chickens– Product Owner, Customers, Managers

27-Jan-201019

criticalspan.com

Chickens and Pigs

27-Jan-201020

criticalspan.com

The Team, Illustrated

› Short video on teamwork from the IT Crowd: http://www.youtube.com/watch?v=pGFGD5pj03M

27-Jan-201021

criticalspan.com

The Team

› Typically 5-10 people

› Cross-functional– Programmers, QA, UI Designers, etc.

› Teams are self-organizing– Primary focus is to meet sprint goals

› Membership can change only between sprints

27-Jan-201022

criticalspan.com

The Scrum Master

› Represents management to the project

› Typically filled by a Project Manager or Team Leader

› Responsible for enacting Scrum values and practices

› Main job is to remove impediments

27-Jan-201023

criticalspan.com

The Product Owner

› Represents the customer

› Makes sure the ‘Right Things’ are in the backlog

› Writes and prioritizes User Stories

27-Jan-201024

criticalspan.com

Activities

› Story Time*

› Sprint Planning

› Sprinting

› Daily Scrum Meeting– 3 questions

› Sprint Review– Quick demo of work completed

› Sprint Retrospective– Continuous Improvement

27-Jan-201025

criticalspan.com

Story Time

› The Team reviews User Stories with the Product Owner

› Initial estimates of story size

27-Jan-201026

criticalspan.com

Sprint Planning

› Select User Stories or items to be worked on for the next sprint– Often, the Sprint will have a Theme

› Highest priority items are taken from the Product Backlog and placed on the Sprint Backlog

› The Team votes on how long each item will take– Planning Poker– Can use either User Stories or Tasks

› Planning is over when The Team is satisfied with the results

27-Jan-201027

criticalspan.com

Sprint

› Analogous to ‘iterations’

› 2-4 weeks

› Designing, coding, and testing occur during the sprint

› No changes can occur in a sprint

27-Jan-201028

criticalspan.com

Daily Scrum

› Part of the daily rhythm

› Always starts on time, and lasts only 15 minutes (should be less)

› Only pigs can talk

› 3 questions– What did you work on yesterday– What will you work on today– Any blocking issues*

27-Jan-201029

criticalspan.com

Sprint Review

› Demo all the completed User Stories– Only complete, ‘approved’ stories are demonstrated

› Minimal preparation (and no faking)

› Participants– The Team– Customers– Management– Product Owner– Other engineers

27-Jan-201030

criticalspan.com

Sprint Retrospective

› Review the last sprint

› What went well?

› What could be improved?

› Choose the improvements to make in the next sprint

27-Jan-201031

criticalspan.com

Artifacts

› Product Backlog

› Sprint Backlog

› Burndown Chart

27-Jan-201032

criticalspan.com

Product Backlog

› A list of User Stories to be delivered– May also contain Epics– Stories may be organized into themes

› Usually a combination of – User Stories (‘As a…’)– Can also contain tasks

› List is prioritized by the Product Owner– Typically a Product Manager, Marketing, Internal

Customer, etc.

27-Jan-201033

criticalspan.com

Product Backlog

27-Jan-201034

criticalspan.com

Sprint Backlog

› A list of Tasks or User Stories that The Team has agreed to complete

27-Jan-201035

criticalspan.com

Sprint Backlog

27-Jan-201036

criticalspan.com

Burndown Chart

› Shows progress during the sprint

27-Jan-201037

Progress

752 762

664619

304264

180104

200

100

200

300

400

500

600

700

800

900

Date

Rem

ain

ing

Eff

ort

in

Ho

urs

criticalspan.com

Other Important Things

› User Story

› Planning Poker

› The meaning of Done

› TDD

› Continuous Integration

› Velocity

› Spike

› Theme

› Epic

› Scalability

27-Jan-201038

criticalspan.com

User Story

› A User Story is a requirement that is written in customer’s language

› Typical format is ‘As a [user/role], I want [goal/function], so that [reason]’

27-Jan-201039

criticalspan.com

Planning Poker

› Quick way to estimate relative task size– Sizes are chosen from Fibonacci numbers (i.e. 1, 2, 3, 5,

8, 13, etc.)

› Each Task or User Story is estimated by the team

› The Team must reach consensus on the relative sizes

27-Jan-201040

criticalspan.com

The Meaning of Done

› Defining ‘done’ is critical:– Coded– Tested (unit and functional)– Reviewed– (possibly) Documented

27-Jan-201041

criticalspan.com

TDD

› Test Driven Development– Writing Tests will improve the design and stability of the

code– Only writing enough code to make a test pass reduces

waste

› Process– Write a test – Run the (failing) test– Write some code– Run the (passing) test

27-Jan-201042

criticalspan.com

TDD

› Use frameworks and mock objects

› Kinds of tests– Unit– Integration– Functional

27-Jan-201043

criticalspan.com

Continuous Integration

› A set of practices around software builds– Commit often– Build and test each commit

› Tools:– Hudson– CruiseControl

27-Jan-201044

criticalspan.com

Velocity

› The amount of work that a Team can handle in one sprint.

› Estimated from past performance

27-Jan-201045

criticalspan.com

Spike

› A time-boxed period of research and development

› May be used for proof of concept

› No deliverable for a product

27-Jan-201046

criticalspan.com

Theme

› A group of User Stories for related functionality

27-Jan-201047

criticalspan.com

Epic

› A large User Story, especially one that is a lower priority, and has not been broken into more detailed, smaller User Stories

27-Jan-201048

criticalspan.com

Scalability

› Typical Scrum team is 5-10 people

› Sutherland used Scrum in groups of 600+

› Cohn used in groups 100+

27-Jan-201049

criticalspan.com

Where to go next?

› Agile Scrum– http://www.mountaingoatsoftware.com/scrum– http://www.controlchaos.com– Agile Software Development with Scrum (Ken Schwaber

and Mike Beedle)– Agile Project Management with Scrum (Ken Schwaber

and Mike Beedle)

› Agile in General– http://www.agilealliance.com

27-Jan-201050

criticalspan.com51

Other References

› Ruminations on C++, Andrew Koenig, Barbara Moo, 1997– Excellent discussion of why small projects are often successful,

while larger ones are not. Read all of chapter 2.

› Agile Software Development, Alistair Cockburn, 2002– Great introduction to agile development.

› Software Project Survival Guide, Steve McConnell, 1998– If you want to be a manager, or understand managers, Steve’s

books are must-have’s.

› Rapid Development – Taming Wild Software Schedules, Steve McConnell, 1996

› Martin Fowler’s Writings – Many interesting articles on agile methodologies. See http://www.martinfowler.com, http://thoughtworks.com/library/newMethodology.pdf

27-Jan-2010

criticalspan.com

Thank You!

› Q&A

27-Jan-201052