Extreme Programming is a discipline in software development based on the values simplicity, communication, feedback and courage.
In this type of development process, the customer is actively driving the project; the customer, with our help, writes User Stories (a simple description of the desired functionality) that the developers give a time estimate of. The customer then selects a group of User Stories for the next Iteration.
Functionality is delivered in Iterations (development over periods of anything from 1 day to 4 weeks, depending on the scope of the project) and the Iteration is accepted by the customer when the functionality (from User Stories) passes one or more Acceptance Tests.
A cornerstone in XP is testing. An Acceptance Test that the customer has specified is implemented in code, and the developer develops the software until this test passes. Later this test is run several times a day, to confirm that the system runs as the customer specified.
The developers use a "Test driven"-design during implementation, where a test for the desired functionality is written before the code that does the actual work is implemented. This way, functionality written by a developer can be tested by another developer, automatically.
Software is delivered in Releases, composed of one or more Iterations that together deliver value to the customer.
Some of the good things about XP are: