|
The Basic Practices of XP
The 12 core practices of XP are:
- The Planning Game: Business and development cooperate to
produce the maximum business value as rapidly as possible. The planning
game happens at various scales, but the basic rules are always the same:
- Business comes up with a list of desired features for the system.
Each feature is written out as a User Story, which gives the
feature a name, and describes in broad strokes what is required. User
stories are typically written on 4x6 cards.
- Development estimates how much effort each story will take, and
how much effort the team can produce in a given time interval (the
iteration).
- Business then decides which stories to implement in what order, as
well as when and how often to produce a production releases of the
system.
- Small Releases: Start with the smallest useful feature set.
Release early and often, adding a few features each time.
- System Metaphor: Each project has an organizing metaphor,
which provides an easy to remember naming convention. (more info)
- Simple Design: Always use the simplest possible design that
gets the job done. The requirements will change tomorrow, so only do
what's needed to meet today's requirements.
- Continuous Testing: Before programmers add a feature, they
write a test for it. When the suite runs, the job is done. Tests in XP
come in two basic flavors.
- Unit Tests are automated tests written by the developers to
test functionality as they write it. Each unit test typically tests
only a single class, or a small cluster of classes. Unit tests are
typically written using a unit testing framework, such as JUnit.
- Acceptance Tests (also known as Functional Tests)
are specified by the customer to test that the overall system is
functioning as specified. Acceptance tests typically test the entire
system, or some large chunk of it. When all the acceptance tests pass
for a given user story, that story is considered complete. At the very
least, an acceptance test could consist of a script of user interface
actions and expected results that a human can run. Ideally acceptance
tests should be automated, either using the unit testing framework, or
a separate acceptance testing framework.
- Refactoring: Refactor out any duplicate code generated in a
coding session. You can do this with confidence that you didn't break
anything because you have the tests. (more info)
- Pair Programming: All production code is written by two
programmers sitting at one machine. Essentially, all code is reviewed as
it is written.(more info)
- Collective Code Ownership: No single person "owns" a module.
Any developer is expect to be able to work on any part of the codebase
at any time. (more info)
- Continuous Integration: All changes are integrated into the
codebase at least daily. The tests have to run 100% both before and
after integration.(more info)
- 40-Hour Work Week: Programmers go home on time. In crunch
mode, up to one week of overtime is allowed. But multiple consecutive
weeks of overtime are treated as a sign that something is very wrong
with the process.
- On-site Customer: Development team has continuous access to a
real live customer, that is, someone who will actually be using the
system. For commercial software with lots of customers, a customer proxy
(usually the product manager) is used instead.(more info)
- Coding Standards: Everyone codes to the same standards.
Ideally, you shouldn't be able to tell by looking at it who on the team
has touched a specific piece of code.
reference: Extreme
Programming FAQ
reference: XP Map
|