SE450: eXtreme Programming [8/18] Previous pageContentsNext page

"Extreme Programming is a discipline of software development based on values of simplicity, communication, feedback, and courage. It works by bringing the whole team together in the presence of simple practices, with enough feedback to enable the team to see where they are and to tune the practices to their unique situation."

There are 13 core practices in XP.

  1. Whole Team: XP centers around the "whole team", with the customer being the business representative who sits with the team daily.
  2. Planning Game: The customer presents the desired features to the programmers, they estimate how long it takes to complete. The customer then plans what goes in the release. An iteration is performed every 1-2 weeks, and the programmers present to the customer what they can complete. The customer decides what goes in each iteration. Each iteration is a working version of the code.
  3. Customer Tests: The customer defines tests that prove to them that the system is working. The programmers write these and run them (they are automated) to prove the release is working.
  4. Small Releases: Every iteration works. The team also releases to the end users frequently.
  5. Simple Design: Design is continual, not just up front. Through unit testing and refactoring, the design is kept simple and improved continually.
  6. Pair Programming: Programming takes place in pairs. Improves code, communication, and training.
  7. Test-driven Development: Write tests first. Run them before code is checked in, and every time it is updated. Here is an excellent example of this.
  8. Design Improvement: Code is refactored. Increase cohesion, lower coupling. We'll look at some refactoring examples soon.
  9. Continuous Integration: Multiple builds a day. Cuts down on integration problems.
  10. Collective Code Ownership: Everyone owns all the code. Anyone can change any code. Prevents programmers from putting functionality in the wrong place.
  11. Coding Standard: Team follows a common coding standard
  12. Metaphor: A common description of the program, and a common system of names. Everyone should understand how the system works and where the code should go for new features.
  13. Sustainable Pace: Minimize overtime. In general, this means no overtime two weeks in a row. (40 hour work week)
eXtreme Programming

Previous pageContentsNext page