Extreme Programming

Extreme Programming (XP) is a method in or approach to software engineering, formulated by Kent Beck, Ward Cunningham, and Ron Jeffries. Kent Beck wrote the first book on the topic, Extreme Programming Explained, published in 1999. It is the most popular of several agile software development methodologies.

The generalization of extreme programming to other types of projects is extreme project management.

Contents

Characteristics of XP

Fundamental characteristics of the extreme programming method are:

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 at the present time in a project, and go to some lengths to reduce complexity and duplication in their code.
  • 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, tests 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 12 persons. Some think it can be useful for larger teams while some consider the Rational Unified Process more appropriate in that case. However, XP has been demonstrated successfully on a team of over a hundred developers. It's not that XP doesn't scale, just that few people have tried to scale it, and XPers refuse to speculate on this facet of the process.

Controversial aspects

Extreme Programming also has its share of controversial aspects:

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.

Communication in Extreme Programming

A fundamental task of building software systems is communicating system requirements to the developers of the system. In formal software development methodologies, this task is accomplished through documentation.

Extreme Programming techniques can be viewed as methods for rapidly building and disseminating institutional knowledge among members of a development team. The goal is to give all developers a shared view of the system which matches the view held by the users of the system. To this end, Extreme Programming favors simple designs, metaphor, collaboration of users and programmers, frequent verbal communication and feedback.

See also:

  • Crystal Light Methods from Alistair Cockburn

References

  • Kent Beck: Extreme programming explained: Embrace change, Addison-Wesley, ISBN 0201616416
  • Alistair Cockburn: Agile Software Development, Addison-Wesley, ISBN 0201699699

External links



ca:Programació Extrema de:Extreme Programming es:Programación extrema fr:Extreme programming [[ja:エクストリーム・プログラミング]] nl:EXtreme Programming pl:Programowanie ekstremalne no:Extreme Programming

This article is licensed under the GNU Free Documentation License. It uses material from Wikipedia article. Browse Wikipedia for more information.