Introduction To Agile/Extreme Programming
Introduction To Agile/Extreme Programming
Programming
Matt Ganis, Senior Technical Staff Member
(Certified Scrum Master)
IBM – Hawthorne, New York
[email protected]
August 2007
Session 8061
Current slides at: http://webpage.pace.edu/mganis
Agenda
• Overview of Agile
• What are some of the components/practices
• How is this different from what we do today
• Some hints/tips/suggestions
2
Definition of Agile1
1 http://www.agilemodeling.com/essays/agileSoftwareDevelopment.htm
3
What is Agile ?
http://www.agilemanifesto.org/
4
The “promise” of Agile
Iteration n
Iteration 1 Iteration 2
Agile allows for faster deliverables at a lower cost (assuming the customer
decides, based on what they see, that a set of stories aren’t needed)
5
Why is Iterative development “good”?
Further iterations
100%
d
la nne
’vep
w e
when
t h
Pa
6
What is Agile
7
What is Agile?
(Incremental, Iterative, Adaptive)
• Incremental
• Build a system gradually
• See the system grow
• Demonstrating progress
• Iterative
• Multiple releases or check points during a project, each closer to the target
• Iterations include requirements development and testing
• Typical iterations are two weeks long
• Plan as you go
• Adaptive
• Goals change based on lessons from prior iterations, feedback and business
opportunities
8
Agile Methods
9
Why Agile?
10
The demand for Agile development (cont)
11
Agile Survey2
12
How has Agile affected your productivity?
Survey says:
13
How has Agile affected your quality of deployed systems?
Survey says:
14
How has Agile affected the stakeholders satisfaction?
Survey says:
15
Scrum (Project Management)
16
Scrum overview
18
What is Extreme Programming
(engineering)
19
What is XP
20
Some “Infrastructure”
definitions
21
Stories
22
What makes a “good” story
(from Bill Wake: http://www.xp123.com/xplor/xp0308/index.shtml)
Independent. If they are independent we can schedule and build them in any order. This allows
us to select stories with the highest value without worrying about all the expensive, low value
I dependent stories.
Negotiable - Remember that agile methods are typically variable in scope. That is the time line is
fixed (iteration length) and the quality and scope are varied. A story is a placeholder for a
N discussion. We need to be able to split, combine, tweak, clarify, etc stories at any time.
Value. Stories need to have real business value to the stakeholders. Typically this is the
customer although there are other stakeholders (including the development organization). They
V should be expressed in ways that the primary stakeholder can understand the value provided by
the story.
Estimate. If a story can't be estimated then the customer can't derive value or assign a priority to
it. We don't need a precise estimate or a guarantee that the estimate will never change.
E
Small. Having small stories is a result of estimable and negotiable. The larger the story the
harder it is to estimate, the less flexibility in negotiation.
S
Testable. Stories need to be testable, otherwise how do you know the story is complete?
T
23
“How fast can you go ?” - Your Velocity
24
XP Practices
XP is extreme in the sense that it
takes 12 well-known software
development "best practices" to an
extreme
25
Key Ideas
The more holes you “poke in the bucket” the less Agile you become
26
What is missing from traditional waterfall
methods ?
27
What’s different ?
Requirements
Analysis
Architecture
Design
Code
Waterfall
Test
Deploy
Time
VS.
Iterative
28
What’s different ?
today we use Plan-driven methods
29
“A day in the life of an XP team…”
30
“A day in the life of an XP team…” (cont)
• During the rest of the iteration, the team will implement the features
they signed up for, pair programming on all production code.
• All code is written test-first -- that is, the developers don't write any code until they
have a failing test case. The developers write unit tests to test individual classes
and subsystems. The customer provides functional or acceptance tests to validate
the features that the programmers are developing.
31
XP flow
Retrospective
Release
Plan New Velocity
St
or Unfinished
ie s
Work
New
Function
Iteration Latest
Velocity Development
Planning Version
Bug
Customer Fixes
Interaction
Bugs
Iteration
Plan Refactoring
32
•
why ?
33
Continuous Testing
34
What is pair programming3?
35
On-site customer
36
In Summary
• "If code reviews are good, we'll review code all the time
(pair programming)
• If testing is good, everybody will test all the time (unit testing), even the
customers
• If design is good, we'll make it part of everybody's daily business
(refactoring)
• If simplicity is good, we'll always leave the system with the simplest design
that supports its current functionality
(the simplest thing that could possibly work)
• If architecture is important, everybody will work defining and refining the
architecture all the time
• If integration testing is important, then we'll integrate and test several times
a day (continuous integration)
• If short iterations are good, we'll make the iterations really, really short ...
(the Planning Game)." 37
Thank you !
http://webpage.pace.edu/mganis
38