The traditional software development process is linear, with each stage of the lifecycle requiring completion of the previous stage. For instance, design starts only on completion of the entire analysis of the program, and coding starts only after completion and freezing of the design. This concept works well when customer requirements remain static, but in practice, requirements change frequently and cause frequent editing of programs leading to errors and software ‘rot.’
Extreme Programming (XP) turns the traditional software development process sideways. Rather than planning, analyzing, and designing in a linear fashion, XP programmers do all such activities a little at a time throughout the development phase. The approach bears resemblance to a jigsaw puzzle with the development of many small pieces or iterations that make no sense individually, but making for a complete package when combined. The biggest advantage of this approach is the resilience it provides, allowing for easy incorporation of changes.
The Extreme Programming software development process starts with planning, and all iterations consist of four basic phases in its life cycle: designing, coding, testing, and listening. The overriding values that drives the XP life cycle are continual communication with the customer and amongst the team, simplicity by harping on the minimalist solution, frequent feedback through unit and acceptance testing, and the courage to take on problems proactively and integrate testing and changes in the development phase.
Image Credit: Wikimedia Commons