Introduction to Extreme Programming (XP):
Extreme programming (XP) was developed by Kent Beck during his work on the Chrysler Comprehensive Compensation System (C3) payroll project. Although extreme programming itself is relatively new, many of its practices are around for some time as it just takes "best practices" to extreme levels.
XP is an agile methodology which is predominantly intended to improve product quality and responsiveness to changing customer requirements. It advocates frequent "releases" in short development cycles called “timeboxing”.
Extreme programming includes paired programming or doing extensive code review, Test Driven development (TDD), last responsive moment, a flat management structure, simplicity and clarity (in code), waiting till the problem is clear, frequent communication with the customer and programmers. This methodology offers benefits that are taken "extreme" levels, on the theory that if a little is good, more is better. XP is still evolving, assimilating more lessons from experiences in the field, to use other practices and has added more values and practices.
XP reduces the cost of changes in requirements by executing multiple-incremental short development cycles, rather than a long one. XP looks at changes as natural, inescapable and desirable, and must be planned for instead of defining a stable set of requirements. XP uses a number of basic values, principles and practices on top of the agile framework.
XP has four basic activities within the development process e.g., like coding, testing, listening, and designing in software development process. Each of those activities is described below:
1. Coding (Development)
XP states that the only truly important outcome is the resulting product (service or software code) without the product (or code), there is no outcome of the development process.
Product (or code) can also be used to figure out the most suitable solution or to communicate problems. A complex development problem can be explained by using the product to demonstrate what he or she means, as it is always clear and concise. It cannot be interpreted in more than one way. Developers can also give feedback on the product by modifying the product or code.
XP believes that if a little testing can eliminate a few flaws, a lot of testing can eliminate many more flaws. Unit testing determines whether a given feature works as intended. A developer runs many automated tests and if all tests run successfully, then the product is complete. Acceptance tests verify that the requirements are met as per customer's satisfaction. These tests occur in the exploration phase of release planning.
To be continued...