Professional Documents
Culture Documents
Values of XP
XP is based on five simple values ehich helps in improving the quality of
software developemnt. These values are
Simplicity
Communication
Feedback
Courage
Respect
Simplicity is doing what is asked to be done, no more no less. Two of the
rallying slogans of XP are Do the simplest thing that could possibly work
and You arent going to need it (also known as YANGNI). Both of these
slogans are the heart of XP simplicity
In XP managers, customers ,developers all are part of a single team and
communicate with each other. XP terms focuses on building a person-to
person, mutual understanding of the problem through very minimal
documentation
Feedback is another embraced value in XP. Every development methodology
advocates feedback. However the difference with XP is that it is required so
that XP programmers can feed forward (Cutter Consortium, 2000). According
to Kent Beck Optimism is an occupational hazard of programming, feedback
is the treatment.
Courage can be defined as doing what is right, even when pressured to do
just the opposite.
The respect value includes respect for others as well as self-respect.
Programmers should never commit changes that break compilation, that
make existing unit-tests fail, or that otherwise delay the work of their peers.
Members respect their own work by always striving for high quality and
seeking for the best design for the solution at hand through refactoring.
Principles of XP
The principles that form the basis of XP are based on the values just described.
Feedback
Extreme programming sees feedback as most useful if it is done rapidly and expresses that the
time between an action and its feedback is critical to learning and making changes. Unlike
traditional system development methods, contact with the customer occurs in more frequent
iterations. The customer has clear insight into the system that is being developed. He or she can
give feedback and steer the development as needed.
Unit tests also contribute to the rapid feedback principle. When writing code, the unit test
provides direct feedback as to how the system reacts to the changes one has made. If, for
instance, the changes affect a portion of the system that is not in the scope of the programmer
who made them, that programmer will not notice the flaw. There is a large chance that this bug
will appear when the system is in production.
Assuming simplicity
This is about treating every problem as if its solution were "extremely simple". Traditional
system development methods say to plan for the future and to code for reusability. Extreme
programming rejects these ideas. The advocates of extreme programming say that making big
changes all at once does not work. Extreme programming applies incremental changes: for
example, a system might have small releases every three weeks. When many little steps are
made, the customer has more control over the development process and the system that is being
developed.
Embracing change
The principle of embracing change is about not working against changes but embracing them.
For instance, if at one of the iterative meetings it appears that the customer's requirements have
changed dramatically, programmers are to embrace this and plan the new requirements for the
next iteration
XPs 12 Practices
The Planning Process
The XP planning process mirrors that of most rapid application development
(RAD) approaches. This practice is sometimes called the Planning Game. It
allows customers to define the business value of desired features, and uses
the cost estimates provided by the programmers to choose what needs to be
done and what can be deferred . The desired features from the customer are
detailed in stories. Then, the programmers only implement those stories that
the customer chooses.
Stories are one of the most valuable features during the planning process.
The first decisions about a software project are what it could do and what it
should do first. The analysis is put together in terms of stories. Each story
must be business-oriented, testable, and estimable. Normally, it takes one
month to come up with stories for a ten-year person project.
Small Releases
Every release should be as small as possible containing the most valuable
business requirement. Small releases tend to provide a sense of
accomplishment that is often missing in large projects. Therefore, the
software system is placed into production within a few months even before
the whole problem is solved. Then, new releases are made often. Releases
can range from daily to monthly.
Metaphor
The shape of the software system is described by a metaphor that is
understood between the customer and developers/programmers. The
metaphor is intended to provide a broad view of the projects goal in an
attempt to define an overall coherent theme from which the customers and
developers can relate. Then the stories that are developed during the
planning game are used to describe the individual features.
Simple Design
Simple design consists of two parts. First, design for functionality that has
been defined. Second, create the best design that can deliver that
functionality .The program should be simple so that it meets only the current
requirements. There is not much building for the future here. The program
should contain no duplicate code .This practice can be summarized as Say
everything once and only once.
Testing
XP uses two types of testing. They are functional and unit. Functional tests
are written by the customer for the stories. The programmers write unit tests
which is part of their daily activity. One of the most radical twists to XP is that
these tests are done prior to any code writing. It is believed that if
programming is about learning, and learning is about getting feedback as
quickly as possible, then one can learn much more from tests than coding.
One of the primary features of testing is that programmers cannot test their
own code.
Refactoring
The design of the software system is evolved over time. This is done through
refactoring, or transformation of the existing design. Refactoring does not
change the observable behaviour of the system but enhances its internal
structure. It can be thought of as incremental redesign.
Pair Programming
XP has popularized the practice of pair-programming. Two programmers work
side byside at one computer collaborating on the design, algorithm, code or test
.This method has demonstrated to not only improve productivity but also