Extreme Programming (XP) is a software development methodology that defines a set of values and principles that make the development process more responsive to the needs of the customers by involving them in the development process. The XP methodology assumes that the requirements of the customers are not constant and may change (during the project life cycle) as per the changing business environments, models etc. The idea is to follow a software development process that can easily adapt to the changing customer requirements. The Extreme Programming methodology states just that.
The rules and practices, defined by the XP methodology, if followed by the managers and ecommerce developers will ensure that the project can easily adapt to the changing requirements, at any time during the project life cycle, in a more cost effective and efficient manner thereby making for a better quality product.
The main objectives behind XP Methodology are:
- Greater customer satisfaction
- Promoting team work among project members i.e. developers, managers etc
- Delivery of high quality software products
- Reduce the cost and effort required to handle change requests
The XP methodology propounds four principles that ensure adaptability in development process. These include:
- Communication: The principle of communication states that all individuals involved in the project i.e. customers, managers and developers should communicate and discuss the project requirements thereby ensuring that the view of the developers, regarding the system requirements, matches that of the customers.
- Simplicity: The principle of simplicity states that the design and the coding of the project should be kept simple. The design should be such that it meets only the present needs.
- Feedback: The feedback principle states that constant feedback in terms of unit tests and customer responses makes for better development. In Extreme Programming extensive unit tests are written thereby ensuring that no flaws/bugs are present in the software. The project is released to customers in small iterations (according to the current requirements) thereby enabling the customer to test the software against the present requirements. The customer feedback and changes can be easily incorporated and implemented. ?
- Courage: The principles of communication, simplicity and feedback provide developers with the courage to code in a manner so as to be able to respond to changing requirements.
The rules and practices propounded in the Extreme programming methodology are as follows:
The planning process involves the following:
- Creation of User stories i.e. a broad description of each feature required in the system, by the customers
- Estimation of the time required to develop each story by the developers.
- Creation of a release plan that defines the project schedule.
- Dividing the project into small iterations. Each iteration should not exceed 3 weeks.
- An iteration planning meeting takes place at the start of every iteration. User stories that are to be developed in the iteration are selected by the customer. The user tests are then broken down into programming tasks. The developers estimate the time required for each task.
The practice of designing involves the following steps:
- The design should be as simple as possible. The design should be such that it only caters to the current requirement.
- In order to enable code re-use and for better understanding, consistent naming conventions must be followed.
- Constant changes to the code to remove redundant and unused functionalities thereby improving code quality.
- The code should be uncluttered i.e. it should not contain any additional functionality that is not required in the current release.
The following rules are to be followed under the Coding process:
- Before coding, the developers are required to create unit tests this helps them in understanding the requirements in a better manner and also enables them to get immediate feedback on the code written.
- Coding should be done according to standards thereby making it easier to understand and adapt.
- Pair programming method is used to write codes i.e. two programmers sit the same computer and work on the same code. This enables the code to be reviewed while it is written.
- Codes need to be integrated sequentially and at regular intervals. Only one developer pair can integrate code at a time.
- All coding is to be done within the timelines defined, no over time is allowed.
The testing practice must follow the rules mentioned below:
- Every code must have associated unit tests that test the functionalities of the code.
- A code can be released (by the developers) only after it clears all the associated unit tests.
- Acceptance tests should be created to test the consolidate code of a user story for bugs and flaws. Acceptance tests check whether the user story being developed has been correctly implemented or not.
- After the code has passed the acceptance test, the user story is considered complete and is released to the customer.
By following the practices and principles on a day to day basis ensures a development process that successfully meets the objectives of Extreme Programming.
The Extreme Programming methodology is ideally suited for the following types of projects:
- Projects where the requirements and functionalities are expected to change frequently such as research projects, new technology etc.
- Projects where the number of developers are less. At, Open Source Development we offer extreme programming benefits by adopting agile extreme programming practices.