Extreme Programming (XP) is a new method in or approach to software engineering, formulated by Kent Beck, who wrote the first book on the topic, "Extreme Programming Explained. Embrace Change" (ISBN 0201616416). It is one of several agile processes.
Fundamental characteristics of the method are:
- Incremental and iterative development - small improvements after small ones
- continuous, often repeated automated unit test, regression testing. See JUnit.
- pair programming
- user interaction in the programming team
- fixing all known bugs before adding functionality
- refactoring
- shaing ownership
These characteristics are only derivatives of principles that are known to be good, and are taken into extreme:
- If communication is good, take it to extremes: Have a customer representative present in the project team;
- If learning is good, take it to extremes: Reduce the length of feedback cycles. Test early;
- Simple code is more likely to work. Therefore, extreme programmers only write code to meet actual needs in the present project;
- If simple code is good, re-write code when it becomes complex;
- Code reviews are good. Therefore XP programmers work in pairs, sharing one screen and keyboard (which also improves communication);
- Testing code is good. Therefore, in XP, test suites are written before the code is written. The code is considered complete when it passes the tests. The system is periodically, or immediately tested using all pre-existing automated tests to assure that it works.
The following text needs to be merged:
Extreme programming, or "XP" takes certain simple practices that are known to improve software quality. Then, it takes these to logical extremes.
1. Requirements are addressed by having a customer on-site, available to the programmers. If this is not possible, the customer may describe use cases on cards, that are periodically photocopied for the engineering staff.
See also: Crystal Light Methods
Reference:
- Kent Beck, Extreme programming explained, Addison Wesley, 2000
- Ward Cunningham's website, http://www.c2.com/cgi/wiki?ExtremeProgramming - For more information on this and related topics
Controversial aspects:
Detailed specifications are not written.
A customer representative is attached to the project.