DAVID STOTTS DEPT. OF COMPUTER SCIENCE UNIV. OF NORTH CAROLINA AT CHAPEL HILL Extreme Programming.

Post on 05-Jan-2016

212 views 0 download

Transcript of DAVID STOTTS DEPT. OF COMPUTER SCIENCE UNIV. OF NORTH CAROLINA AT CHAPEL HILL Extreme Programming.

DAVID STOTTS

DEPT. OF COMPUTER SCIENCEUNIV. OF NORTH CAROLINA AT CHAPEL HILL

Extreme Programming

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

CommunicationSimplicityFeedbackCourage (fearlessness)

XP Practices

Pair programmingTest-first developmentSimple design: Add no function

before its timeRe-factoringThe planning gameUser/client on-site

XP Practices

Small releasesContinuous integrationCollective code ownershipCoding standards (and self-

documenting code)No overtimeSystem metaphor

Why Agile Methods?

Why is change inevitable?People…People are noisy and unpredictableProcess 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.orghttp://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