140 likes | 302 Views
Extreme Programming. David Stotts Dept. of Computer Science Univ. of North Carolina at Chapel Hill. In Reaction to…. “Big Process” SEI Capability Maturity Model ( CMM ) “Heavy” development practices Hard to steer, unresponsive Can we do better for smaller efforts?. Extreme Programming.
E N D
Extreme Programming David Stotts Dept. of Computer Science Univ. of North Carolina at Chapel Hill
In Reaction to… • “Big Process” • SEI Capability Maturity Model (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
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 • http://www.junit.org • http://www.xprogramming.com/software.htm
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