Extreme Programming
Extreme Programming
Outline
The Software Problem History of the Software Problem Our Solution: XP & Agile Methods Implementation Issues Management Issues Review, Conclusions, Future
15 August 2012 XP, Ken Bauer 2
Education background
B.Sc. Computer Science (Honours), University of Victoria, 1993 M.Sc. Computer Science University of Washington, 1995 OOPSLA Committee member 1995-present (attendee since 1992)
15 August 2012
Academic Background
Professor, Computer Science ITESM, Campus Guadalajara 1995-1997, 1999-present O-O, S.E., P.L., O.S. Introduced Java to ITESM in 1996 Director, ISC at Campus Guadalajara 2000 - present
15 August 2012 XP, Ken Bauer 4
Industry Background
Object Technology International (IBM) 1997, Software Engineer, worked on VAJava v1.0 Harley Street Software, 1998 Safeware Engineering Inc., 1998 Consulting in O-O, Java, XP, systems administration and security since 1999
15 August 2012 XP, Ken Bauer 5
15 August 2012
15 August 2012
Technical Issues
Compilers
Development Environments Wizards
15 August 2012
Compilers
The human code-optimizers of the 1970s and 1980s are no longer needed Computers parse fast Humans parse slow Humans need abstraction
15 August 2012
Development Environments
Syntax checkers/highlighters Debuggers (distributed) Source Code Control Team development support
15 August 2012
10
Wizards
Wizards, code-generators, templates, frameworks are all buzzwords. Which ones work? Wizards are magical and mystical
But who was that code generated? And do you understand it? ALL of it?
15 August 2012 XP, Ken Bauer 11
Human Issues
Management Style Programmer as a profession Software is written by people for people People make mistakes People get bored People get defensive
etc, etc
15 August 2012 XP, Ken Bauer 12
Management Style
What is the managers role?
(fill in our work here)
15 August 2012
13
Programmer As a Profession
What kind of people are we getting? Who is responsible for the development of the developer?
University/College The company The developer herself Government
15 August 2012 XP, Ken Bauer 14
Software is Peopleware
Software almost always involves people at the end, and definitely in the beginning and middle
15 August 2012
15
Software is Peopleware
Software almost always involves people at the end, and definitely in the beginning and middle People have needs
15 August 2012
16
Software is Peopleware
Software almost always involves people at the end, and definitely in the beginning and middle People have needs People have desires
15 August 2012
17
Software is Peopleware
Software almost always involves people at the end, and definitely in the beginning and middle People have needs People have desires People have lives!!!!
15 August 2012
18
To Err Is Human
Can we finally accept this? If so, what are we going to do about it? Testing, code reviews, system builds, code walkthroughs Can we live with buggy systems?
15 August 2012
19
15 August 2012
21
Environment Issues
Today and tomorrow are different Time does not stand still, neither do needs (requirements) Systems need to be ready to adapt to needs (adaptable systems) People should not be required to adapt to systems
15 August 2012 XP, Ken Bauer 22
Tomorrow, Tomorrow
What happens between today and tomorrow gives us more information Good experience is experience So is bad experience! We need to use what we learn everyday to the best advantage
15 August 2012
23
Systems Change
Whenever a system is installed, somebody gains and somebody loses power. Tom DeMarco, OOPSLA 2001 Systems need to be able to change and built for that in mind
15 August 2012
25
15 August 2012
26
15 August 2012
27
Fred Brooks
No Silver Bullet 1975 (kwb) Silver Bullet Refired, 1995 (kwb) His comments on Eric Raymond
15 August 2012
28
David Parnas
Modular Programming Star Wars project and his abandonment of the project Shouldnt be building projects so incredibly huge.
15 August 2012
29
Tom DeMarco
Peopleware, Lidster and DeMarco, 1987 The first to insist that software is a people problem, not a technical one Most software development projects fail because of failures within the team running them Keynote at OOPSLA 2001
15 August 2012 XP, Ken Bauer 30
Watts Humphrey
PSP, Personal Software Process TSP, Team Software Process CMM, Capability Maturity Model Focused on a disciplined approach to Software Engineering
15 August 2012
31
Levels of CMM
1 No order 2 Repeatable 3 Defined (processes) 4 Managed (quantifiable quality goals) 5 Optimizing (continuous improvement)
XP, Ken Bauer 32
15 August 2012
Larry Constantine
Larry wrote continued to write about Peopleware in the 90s The Peopleware Papers, 2001 Brings a psychological background and business school education to the industry
15 August 2012
33
Ed Yourdon
The Decline and Fall of the American Programmer, 1992 Rise And Resurrection of the American Programmer, 1996 Death March, 1999
15 August 2012
34
Steve McConnell
Code Complete, Rapid Development, Software Project Survival Guide and After the Gold Rush Software Engineering as a profession Editor in Chief, IEEE Software www.construx.com Reading list is excellent
15 August 2012 XP, Ken Bauer 35
Kent Beck
Smalltalk/OOPSLA community Early Patterns work eXtreme Programming Manifesto XP Series (7 now) Keynote at CongresoISC 2000 at ITESM, Campus Guadalajara
XP, Ken Bauer 36
15 August 2012
Alistair Cockburn
The Agile Software Development Series Agile Software Development Writing Effective Use Cases Surviving Object-Oriented Projects
15 August 2012
37
15 August 2012
38
15 August 2012
39
15 August 2012
40
15 August 2012
41
15 August 2012
44
15 August 2012
46
XP Manifesto
Clear separation of roles of customer and programmer Bill of Rights Courage Customers: scope, priority, composition and dates of releases Programmers: estimates, technical consequences, process, detailed schedule
15 August 2012 XP, Ken Bauer 48
XP Is an Onion
Processes
Team Practices
Programming
15 August 2012
49
Risk
Schedule slips Project canceled System goes sour Defect rate Business misunderstood Business changes False feature rich Staff turnover
15 August 2012 XP, Ken Bauer 50
Schedule Slips
Short release cycles 3 months AT MOST Within release are iterations 1 4 weeks per iteration Highest priority features first
15 August 2012
51
Project Cancelled
Customer chooses smallest release that works best for them Keeps value of software at its greatest
15 August 2012
52
15 August 2012
Defect Rate
Tests from the perspective of programmers function-by-function Tests from the perspective of the customers feature-by-feature
15 August 2012
54
Business misunderstood
Customer is integral part of team Specification is continually refined Learning by customer and team can be reflected in the software
15 August 2012
55
Business Changes
XP shortens release cycle Less change during a release Customer welcome to substitute new functionality for functionality not yet completed
15 August 2012
56
15 August 2012
57
Staff turnover
Programmers accept responsibilty for estimating and completing their own work XP gives them feedback about the actual time taken so they can improve estimates XP encourage human contact among the team
15 August 2012 XP, Ken Bauer 58
Economics of Software
Cash flows in and out Interest rates Project mortality
15 August 2012
59
Options in Economics
Option to abandon cancel is sometimes good Option to switch change direction Option to defer wait to spend money Option to grow - capitalize
15 August 2012
61
Cost of Change
Graph on board Requirements Analysis Design Implementation Testing Production
15 August 2012 XP, Ken Bauer 63
Four Values
Communication Simplicity Feedback Courage
15 August 2012
64
Basic Principles
Rapid feedback Assume simplicity Incremental change Embracing change Quality work
15 August 2012
65
Other Principles
Teach learning Small initial investment Play to win Concrete experiments Open, honest communication
15 August 2012
Work with peoples instincts, not against Accepted responsibility Local adaption Travel light Honest measurement
XP, Ken Bauer 66
Test First
JUnit (or other testing framework) If tests always ran correctly, then we wouldnt have to write them. Tests are interesting when they fail, especially if we didnt expect them to fail.
JUnit: A Cooks Tour Kent Beck & Ward Cunningham
15 August 2012
67
Basics of Programming
Coding Testing Listening Designing
15 August 2012
68
The 12 XP Practices
The Planning Game Small Releases Metaphor Simple design Testing Refactoring Pair Programming Collective ownership Continuous integration 40-hour week On-site customer Coding standards
XP, Ken Bauer 69
15 August 2012
Planning Game
Business people:
Scope Priority Composition of releases Dates of releases
Technical people:
Estimates Consequences Process Detailed scheduling
15 August 2012
70
Small Releases
Small as possible Containing the most valuable business requirements Has to make sense as a whole No half-implemented features
15 August 2012
71
Metaphor
Replaces much of what others call architecture Give everyone a coherent story within which they can work A story that can easily be shared by business and technical people
15 August 2012
72
Simple Design
The right design:
Runs all the tests Has no duplicated logic States every intention important to the programmers Has the fewest possible classes and methods
15 August 2012
73
Testing
Any program feature without an automated test simply does not exist Unit tests build confidence in the operation of the program for the programmers Functional tests give customers confidence in the operation of the program
15 August 2012 XP, Ken Bauer 74
Refactoring
Changing the existing program to make adding a new feature simpler Making the program simpler but still passing the tests
15 August 2012
75
Pair Programming
One keyboard, mouse and monitor Inactive partner IS active:
Is this whole approach going to work? What are some other test cases that might not work yet? Is there some way to simplify the whole system so the current problem just disappears?
15 August 2012 XP, Ken Bauer 76
15 August 2012
77
Collective Ownership
Anyone adds value when needed and they can Better than individual ownership Better than NO ownership
15 August 2012
78
Continuous Integration
Daily builds are for wimps Big builds are hard Fixing broken builds is harder
15 August 2012
79
40-Hour Week
Being fresh Overtime is a symptom of a serious problem on the project Vacations of at least 2 weeks People need downtime
15 August 2012
80
On-site Customer
Those quick questions become really quick And we actually ask them Instead of assuming The customer can do other stuff
15 August 2012
81
Coding Standards
Do it my way.
Just needs to be agreed on. Once and Only Once rule (no duplicate code) Adopted voluntarily by the whole team
XP, Ken Bauer 82
15 August 2012
Management Issues
15 August 2012
83
15 August 2012
84