Extreme Programming and Agile Processes

Extreme Programming and
Agile Processes
Overview and Background
Glenn Vanderburg
Delphi Consultants, LLC
[email protected]
Outline
 Brief
overview of XP
 XP and traditional software engineering
 The agile process movement
 Recommended reading
I’ll move quickly, but at the end I’ll tell you
where you can get these slides.
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
2
Extreme Programming
 A software
development process
 Designed to focus on four things:
 Coding, Testing, Listening, Designing
 Feedback
is built into the development
practices, not bolted on.
 No phases: you do all four of those things
all the time.
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
3
The Core XP Practices
Rapid, fine feedback:
 Test-driven design (via unit
and acceptance tests)
 On-site customer
 Pair programming
Continuous process:
 Continuous integration
 Merciless refactoring
 Small, frequent releases
Shared Understanding:




Planning game
Simple Design
System Metaphor
Collective Code
Ownership
 Coding Conventions
Developer Welfare:
 Forty-hour week
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
4
An “Organic” Process
 Each
practice serves multiple purposes in
the process as a whole.
 The processes are interdependent:
 Each practice on its own is flawed and
insufficient.
 Strengths of other practices compensate.
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
5
Many Implicit Practices
 Caves
& commons
 Fixed iterations
 Engineering tasks
 Write it on a card
 Spike solutions
 All tests all the time
 Promiscuous
pairing
 Yesterday’s weather
 Track velocity
 Track progress
 Regression test
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
6
The Most Common Objections
That
can’t work!
Everyone knows you can’t build
software that way!
Don’t bother. It has worked, and it is working
today. It can still fail for various reasons, but
when it works, it works spectacularly well.
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
7
Characteristics of Successful XP
Projects
 Very
rapid development
 Exceptional responsiveness to user and
customer change requests
 High customer satisfaction
 Amazingly low error rates
 System begins returning value to customers
very early in the process
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
8
Common XP Misconceptions
 No
written design documentation
 Truth: no formal standards for how much or what kind
of docs are needed.

No design
 Truth: minimal explicit, up-front design; design is an
explicit part of every activity through every day.

XP is easy
 Truth: although XP does try to work with the natural
tendencies of developers, it requires great discipline
and consistency.
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
9
More Misconceptions
 XP is
just legitimized hacking
 Truth: XP has extremely high quality standards
throughout the process
 Unfortunate truth: XP is sometimes used as an
excuse for sloppy development
 XP is
the one, true way to build software
 Truth: it seems to be a sweet spot for certain
kinds of projects
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
10
XP and Software Engineering:
Where Software Engineering
Went Wrong
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
11
Where I’m coming from …
I
don’t believe in The One True Process.
 XP isn’t right for every project
 Classical SE methods aren’t wrong for every
project, either.
 I’ve
never experienced a traditional
software engineering process on a project
for which it was well suited.
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
12
Where I’m going …
 What
we now call “Software Engineering” was
a response to a particular problem in software
development.
 Different responses are possible, and often
preferable.
 Although Software Engineering works well for
certain kinds of projects, it is inappropriate for
the vast majority of software being developed
today.
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
13
What I mean by
Software Engineering

Software development processes that emphasize
one or more of these things:
 Exhaustive requirements
 Finding and eliminating errors before they find their
way to the code
 Expensive process elements for measuring and tracking
the process itself
 Extensive elaboration, analysis, and verification of
models
 Coding as a simple translation of the model
 Yes,
I know this is a straw man.
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
14
What I don’t (necessarily) mean
by Software Engineering
 Waterfall
lifecycle
 The SE mainstream has embraced iterative and
incremental development to some degree.
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
15
Software Engineering
Blunder #1
 Avoiding
costly situations rather than
optimizing.
 Measures used for avoidance cost more
than the original problem points.
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
16
Cost of Errors
Cost of Errors Increases Through
a Project’s Lifetime
Project Phase
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
17
The Software Engineering
Solution
Cost of Errors
Try to push changes as far toward the start of the
process as possible:
Project Phase
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
18
Secondary Effects
Cost of Errors
The measures used increase the cost
of everything:
Project Phase
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
19
Budget Pressures Resist …
Cost of Errors
The budget pushes these costs back down
through limits on manpower:
Project Phase
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
20
Budget Pressures Resist …
Cost of Errors
The budget pushes these costs back down
through limits on manpower:
Project Phase
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
21
Budget Pressures Resist …
Cost of Errors
The budget pushes these costs back down
through limits on manpower, which just
pushes the schedule out.
Project Phase
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
22
The XP Answer
 Find
ways to make change cheaper
 Find inexpensive ways of avoiding errors
 Reduce overall cost of development
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
23
Software Engineering
Blunder #2
 Poor
understanding of more mature
engineering disciplines
 Treats engineering as a methodical,
replicable process
 Result: SE recommends gradual elaboration
with limited feedback into earlier stages of
development.
 In iterative SE processes, this is done for every
iteration.
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
24
The XP Answer
 In
reality, engineering involves creativity,
trial and error, iteration, experimentation,
prototyping.
 Work that into the process with multiple
tight feedback loops at all scales.
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
25
Software Engineering
Blunder #3
 Faulty
analogy with engineering disciplines.
 Treats coding as analogous to building or
manufacturing.
 Engineers try to avoid building or manufacturing
anything until they are confident of their design
(because those steps are costly).
 Result: SE recommends other costly steps including
highly detailed models, model analysis, and careful
inspection to ferret out errors before coding begins.
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
26
The XP Answer
 Coding
is the detailed (not the only) design
activity.
 Manufacturing = the compilation and build
process.
(Cheap!)
 Iterative
prototyping and testing are less
expensive than all the careful analysis and
inspection.
 Ask some engineers how many prototypes they
would build if prototypes were free!
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
27
The Agile Process Movement
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
28
Other Agile Processes
 The
Crystal Methodology Family:
crystalmethodologies.org
 Scrum:
www.controlchaos.com
 Adaptive
Software Development:
www.adaptivesd.com
 DSDM
(Dynamic System Development
Method):
www.dsdm.org
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
29
Manifesto for
Agile Software Development
We are uncovering better ways of developing software
by doing it and helping others to 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.
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
30
Essential Reading

The Agile Manifesto
 http://www.agilealliance.org/
 Agile Software Development, by Alistair Cockburn
 Available 21 December 2001
 Draft available at
http://members.aol.com/humansandt/crystal/game/getasddraft.htm

“No Silver Bullet: Essence and Accident in Software Design,”
by Fred Brooks
 Reprinted in the 20th Anniversary Edition of The Mythical Man Month
 http://www.virtualschool.edu/mon/SoftwareEngineering/
BrooksNoSilverBullet.html

The Pragmatic Programmer: From Journeyman to Master,
by Andrew Hunt and David Thomas
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
31
The XP Book Series
Extreme Programming Explained: Embrace Change, by Kent Beck
 Extreme Programming Installed, by Ron Jeffries, Ann Anderson, and Chet
Hendrickson
 Planning Extreme Programming, by Kent Beck and Martin Fowler
 Extreme Programming in Practice, by James Newkirk and Robert Martin
 Extreme Programming Explored, by William Wake
 Extreme Programming Examined, by Giancarlo Succi and Michele
Marchesi
 Extreme Programming Applied: Playing to Win, by Ken Auer and Roy
Miller (available 12 October 2001)

Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
32
Other Relevant Reading

“What is Software Design?,” by Jack W. Reeves
 http://gosh.exeter.ac.uk/~cs98abh/archive/documents/
what_is_software_design.html






Adaptive Software Development: A Collaborative Approach to Managing
Complex Systems, by James Highsmith
Agile Software Development with SCRUM,
by Mike Beedle and Ken Schwaber (available 15 October 2001)
DSDM: The Method in Practice, by Jennifer Stapleton
Refactoring: Improving the Design of Existing Code,
by Martin Fowler
Software Craftsmanship: The New Imperative, by Pete McBreen
The Deadline, by Tom DeMarco
 A novel about project management.
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
33
That information again is …

Speaker:
Glenn Vanderburg
Delphi Consultants, LLC
[email protected]

North Texas XP Interest Group:
http://groups.yahoo.com/group/ntxp/

This talk:
http://www.delphis.com/Java/Talks/
XProundtable/
Copyright © 2001 Delphi Consultants, LLC. ALL RIGHTS RESERVED
34