As mentioned on the agile alliance, Extreme Programming (XP) is an agile software development framework that aims to produce higher quality software, and higher quality of life for the development team.
XP is the most specific of the agile frameworks regarding appropriate engineering practices for software development.
It is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements. Emphasize on the phrase "changing customer requirements".
It has frequent "releases" in short development cycles, which is intended to improve productivity and in every cycle new customer requirements are adopted, allowing both team members and customers to examine and review the project’s progress throughout the entire SDLC.
Kent Beck created extreme programming and it's an agile project management methodology. Some of these practices and values are from other project management methodologies.
Traditional software engineering practices are taken to "extreme" levels and that's why they call it, Extreme Programming.
Communication is very frequent between the customer and among the programmers.
When should Extreme Programming be Used?
Keep this phrase in mind: "requirements change".
You should use XP in all the following cases:
1. If your customers may not have a firm idea of what the system should do. OR You may have a system whose functionality is expected to change every few months.
2. Risk: If your customers need a new system by a specific date the risk is high. If that system is a new challenge for your software group the risk is even greater. If that system is a new challenge to the entire software industry the risk is greater even still. The XP practices are set up to mitigate the risk and increase the likelihood of success.
3. If you have a small team. XP is set up for small groups of programmers. Between 2 and 12, though larger projects of 30 have reported success. You can not use XP on a project with a huge staff.
4. If the communication is very frequent between the team and customer. XP requires an extended development team. The XP team includes not only the developers, but the managers and customers as well, all working together elbow to elbow. Asking questions, negotiating scope and schedules, and creating functional tests require more than just the developers be involved in producing the software.
5. Testability. You must be able to create automated unit and functional tests. It will give a push to XP and overall software development.