Microsoft Store
 

Extreme Programming


 

Extreme Programming (XP) is a method or approach to software engineering and the most popular of several agile software development methodologies. It was formulated by Kent Beck, Ward Cunningham, and Ron Jeffries. Kent Beck wrote the first book on the topic, Extreme programming explained: Embrace change, published in 1999. The second edition of the book, which appeared in 2005, delves more into the philosophy of Extreme Programming and describes it as being:

XP core practices

The core practices of Extreme Programming, as described in the first edition of Extreme programming explained can be grouped into four areas (12 practices) as follows:

~ ~ ~ ~ ~ ~ ~ ~ ~ ~

Fine scale feedback

~ ~ ~ ~ ~ ~ ~ ~ ~ ~

  • Test driven development
  • Planning game
  • Whole team (original name: Onsite customer)
  • Pair programming
  • Continuous process rather than batch

    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

  • Continuous Integration
  • Design Improvement (original name: Refactor)
  • Small Releases
  • Shared understanding

    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

  • Simple design
  • System metaphor
  • Collective code ownership
  • Coding standard or Coding conventions
  • Programmer welfare

    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

  • Sustainable pace (original name: Forty hour week)
  • In the second edition of Extreme programming explained a set of corollary practices are listed in addition to the primary practices. Now, there are a total of 24 practices in the second edition.

    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

    The core practices are derived from generally accepted best practices, and are taken to extremes:

    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

  • Interaction between developers and customers is good. Therefore, an XP team is supposed to have a customer on site, who specifies and prioritizes work for the team, and who can answer questions as soon as they arise. (In practice, this role is sometimes fulfilled by a customer proxy.)
  • 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 ensure that it works. See test-driven development.
  • It used to be thought that Extreme Programming could only work in small teams of fewer than 12 persons. However, XP has been used successfully on teams of over a hundred developers. It is not that XP doesn't scale, just that few people have tried to scale it, and proponents of XP refuse to speculate on this facet of the process.

    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~