While Scrum is seen more as a Project Management framework, the Extreme Programming (aka XP) is more detailed and rather in the area of a methodology.
Its main goal is to improve software quality and responsiveness to customer requirement changes - which are expected as time passes and the problem is better understood.
In the traditional project management approach, customer requirements are intended to be agreed and frozen when project starts and any further change has to go through a change management process to get impact assessment, formal approval and project re-scoping which might lead to delays, re-engineering efforts and poor stakeholder satisfaction.
XP defines the methodology through a number of activities, values, rules and practices and for the sake of this post's length, I will go only through the Values as the foundation of the whole approach.
Values of XP must be shared and implemented by all team and stakeholders and are as follows:
-- Communication must be continous, preferably verbal, shared across the team and with frequent feedback.
-- Simplicity must drive every design effort in order to implement always the simplest solution that works for today's customer requirements and not for tomorrow's or next week's. We can put it in this way, implement as late as possible and assume the risks which this approach involves.
-- Feedback can come from three sources:
.- from the system when unit tests are run
.- from the the customer when acceptance tests are run
.- and from the team when a new customer requirement is estimated in effort.
-- Courage to design and code only for today's requirements, courage to refactoring when the needs comes, courage to persist on solving a complex problem. Courage is the value that empowers the team to take critical decisions because they are the best positioned to take them.
-- Respect for your own work and for other's work
Taking the above mentioned four values into account for every aspect of the project, provides benefits like flexibility, motivation amongst others.
These notes are based on http://en.wikipedia.org/wiki/Extreme_Programming article and are not intending to amend or correct it