DAVID STOTTS DEPT. OF COMPUTER SCIENCE UNIV. OF NORTH CAROLINA AT CHAPEL HILL Extreme Programming
In Reaction to… “Big Process” SEI Capability Maturity Model (CMM)CMM “Heavy” development practices Hard to steer, unresponsive Can we do better for smaller efforts?
Extreme Programming Kent Beck, late 90’s One of several “Agile” processes Small teams (2 to 8 people) Modest projects Emphasis on customer as project driver
“Change Happens” Embrace change as normal Not an aberration whose cause needs to be found Process must be lightweight and agile to respond to change “Steer”able
XP Core Values Communication Simplicity Feedback Courage (fearlessness)
XP Practices Pair programming Test-first development Simple design: Add no function before its time Re-factoring The planning game User/client on-site
XP Practices Small releases Continuous integration Collective code ownership Coding standards (and self- documenting code) No overtime System metaphor
Why Agile Methods? Why is change inevitable? People… People are noisy and unpredictable Process involving people needs small steps, constant measurement to be steerable
eXtreme Programming Try it … Further reading: “XP” by J. Highsmith“XP” by J. Highsmith
Test-first development If a class does not have automatic tests, you must assume it does not work Regression testing … tests retain value JUnit (Beck & Gamma): industrial- strength regression testing for the common man
JUnit Small, easy to learn, easy to use, effective Java classes TestCase, Suite, runners 15 other language implementations
JUnit Test Class One test method per target method “test anything that can break” … “don’t test anything that can’t” Can we give better guidance? Can we systematically produce consistent and complete test classes?
The Planning Game Informal brainstorming… few hours to a few days Customer talks about what he/she wants Engineers listen, ask questions, make “user stories” Each story is a card, a few sentences, describes some function of the system
The Planning Game Engineers “cost” each story Customer “values” each story Rank order of cards Customer selects top 4 or 5 items… Engineers produce Release One