Agile Software Development

Download Report

Transcript Agile Software Development

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
3
27-Jan-2010
criticalspan.com
Who cares about Process?
if (you_write_software)
{
you_have_a_software_process = true;
}
4
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
5
27-Jan-2010
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
–
6
etc.
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
Requirements
Design
Coding
Integration
Testing
Installation
Operation/
Maintenance
9
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
11
27-Jan-2010
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.
from http://agilemanifesto.org/
12
27-Jan-2010
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
13
27-Jan-2010
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
14
27-Jan-2010
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
15
27-Jan-2010
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
16
27-Jan-2010
criticalspan.com
Agile Scrum Overview
› Roles
› Activities/Rhythms
› Artifacts
17
27-Jan-2010
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
19
27-Jan-2010
criticalspan.com
Chickens and Pigs
20
27-Jan-2010
criticalspan.com
The Team, Illustrated
› Short video on teamwork from the IT Crowd:
http://www.youtube.com/watch?v=pGFGD5pj03M
21
27-Jan-2010
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
22
27-Jan-2010
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
23
27-Jan-2010
criticalspan.com
The Product Owner
› Represents the customer
› Makes sure the ‘Right Things’ are in the backlog
› Writes and prioritizes User Stories
24
27-Jan-2010
criticalspan.com
Activities
› Story Time*
› Sprint Planning
› Sprinting
› Daily Scrum Meeting
– 3 questions
› Sprint Review
– Quick demo of work completed
› Sprint Retrospective
– Continuous Improvement
25
27-Jan-2010
criticalspan.com
Story Time
› The Team reviews User Stories with the Product
Owner
› Initial estimates of story size
26
27-Jan-2010
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
27-Jan-2010
criticalspan.com
Sprint
› Analogous to ‘iterations’
› 2-4 weeks
› Designing, coding, and testing occur during the sprint
› No changes can occur in a sprint
28
27-Jan-2010
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*
29
27-Jan-2010
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
30
27-Jan-2010
criticalspan.com
Sprint Retrospective
› Review the last sprint
› What went well?
› What could be improved?
› Choose the improvements to make in the next sprint
31
27-Jan-2010
criticalspan.com
Artifacts
› Product Backlog
› Sprint Backlog
› Burndown Chart
32
27-Jan-2010
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.
33
27-Jan-2010
criticalspan.com
Product Backlog
34
27-Jan-2010
criticalspan.com
Sprint Backlog
› A list of Tasks or User Stories that The Team has
agreed to complete
35
27-Jan-2010
criticalspan.com
Sprint Backlog
36
27-Jan-2010
criticalspan.com
Burndown Chart
› Shows progress during the sprint
Remaining Effort in Hours
Progress
900
800
700
600
500
400
300
200
100
0
752
762
664
619
304
264
180
104
20
02 002 002 002 002 002 002 002 002 002 002 002 002 002 002
0
2 2
2 2
2 2
2
2 2
2 2
2 2
2 2
3/ 5/ 7/ 9/ 1/ 3/ 5/ 7/ 9/ 1/ 3/ 5/ 7/ 9/ 1/
5 / 5 / 5 / 5 / 5 /1 5 /1 5 /1 5 /1 5 /1 5 /2 5 /2 5 /2 5 /2 5 /2 5 /3
Date
37
27-Jan-2010
criticalspan.com
Other Important Things
› User Story
› Planning Poker
› The meaning of Done
› TDD
› Continuous Integration
› Velocity
› Spike
› Theme
› Epic
› Scalability
38
27-Jan-2010
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]’
39
27-Jan-2010
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
40
27-Jan-2010
criticalspan.com
The Meaning of Done
› Defining ‘done’ is critical:
– Coded
– Tested (unit and functional)
– Reviewed
– (possibly) Documented
41
27-Jan-2010
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
42
27-Jan-2010
criticalspan.com
TDD
› Use frameworks and mock objects
› Kinds of tests
– Unit
– Integration
– Functional
43
27-Jan-2010
criticalspan.com
Continuous Integration
› A set of practices around software builds
– Commit often
– Build and test each commit
› Tools:
– Hudson
– CruiseControl
44
27-Jan-2010
criticalspan.com
Velocity
› The amount of work that a Team can handle in one
sprint.
› Estimated from past performance
45
27-Jan-2010
criticalspan.com
Spike
› A time-boxed period of research and development
› May be used for proof of concept
› No deliverable for a product
46
27-Jan-2010
criticalspan.com
Theme
› A group of User Stories for related functionality
47
27-Jan-2010
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
48
27-Jan-2010
criticalspan.com
Scalability
› Typical Scrum team is 5-10 people
› Sutherland used Scrum in groups of 600+
› Cohn used in groups 100+
49
27-Jan-2010
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
50
27-Jan-2010
criticalspan.com
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
51
27-Jan-2010
criticalspan.com
Thank You!
› Q&A
52
27-Jan-2010
criticalspan.com