Content deleted Content added
No edit summary |
No edit summary |
||
Line 1:
[[es:programación extrema]] [[fr:EXtreme Programming]] [[pl:Programowanie ekstremalne]]
'''Extreme Programming''' (XP) is a method in or approach to [[software engineering]], formulated by [[Kent Beck]],
Fundamental characteristics of the method are:
Line 7:
*continuous, often repeated automated [[unit test]], [[regression testing]]. See [[JUnit]].
*[[pair programming]]
*user interaction in the programming team ([[Onsite Customer]])
*[[refactoring]]
*
*simplicity
*feedback
These characteristics are only derivatives of principles that are known to be good, and are taken into extreme:
#Interaction between developers and customers is good. Therefore, an XP team is supposed to have a customer on site, who specifies and prioritises work for the team, and who can answer questions as soon as they arise.
#If learning is good, take it to extremes: Reduce the length of development and feedback cycles. Test early;
#Simple code is more likely to work. Therefore, extreme programmers only write code to meet actual needs
#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) so that all code is reviewed as it is written;
#Testing code is good. Therefore, in XP, test are written before the code is written. The code is considered complete when it passes the tests (but then it needs refactoring to remove complexity). The system is periodically, or immediately tested using all pre-existing automated tests to assure that it works. (See [[test-driven development]])
In general, Extreme Programming is believed to be useful for small teams under
==Controversial Aspects==
Line 26 ⟶ 27:
* A customer representative is attached to the project
* Programmers work in pairs
* [[test-driven development]]
Most of the design activity takes place on the fly and incrementally,
starting with "the simplest thing that could possibly work" and adding
complexity only when it's required by failing tests. Unit-testing is a design discipline.
''See also:'' [[Crystal Light Methods]] from [[Alistair Cockburn]]
==References & External Links==
Line 37 ⟶ 39:
*[[Ward Cunningham]]'s website, http://www.c2.com/cgi/wiki?ExtremeProgramming - For more information on this and related topics
* [http://www.nidelven-it.no/articles/extreme_programming Client oriented introduction to XP]
* [[Ron Jeffries]] web-mag http://www.xprogramming.com
|