Extreme Programming is a software development concept based on the idea of agile development. Agile developers realise that requirements change during the process of development cycle and account for this by constantly reviewing requirements and asking the client whether it is what they want, ultimatelately with the aim of producing better software which best fits the customer needs.
However agile development can lead to spiralling costs, wasted time, and overly complex projects as opposed to the traditional document based approach where you are given a problem , identify the requirements of the necesarry solutions , wrte specifications for them, and then develop a product which meets these requirements.
A discipline of software development that follows a specific structure that is designed to simplify and expedite the process of developing new software.
Extreme programming teams design software for specific functionalities without adding any functionalities that are not specifically requested that may slow down the process, keeping the development course simple through systematic and regular testing and design improvements.