Wednesday 27 November 2013

Extreme Programming

Extreme Programming (XP) is a lighter software development methodology or process which was developed to satisfy specific needs of small software development teams against constantly evolving requirements. In this methodology, quality software is developed and delivered quickly, then advancing it to meet the changing needs of the client.  Some of the characteristics of XP – continuous integration, small frequent releases which include continual customer feedback, pair programming, open workspace, simple design.

XP is tied up to specific values and roles as explained below:

XP Values

XP is based on four basic values:
  1. Communication: It is often noticed that projects fail due to lack of communication between the customer and team members or due to poor internal communication. XP favours different modes of rapid communication which also includes verbal communication where there is constant flow of communication / information between team members and customers.
  2. Simplicity: XP works on the philosophy of “Do the simplest thing that could possibly work”. This philosophy is followed not just in systems but also in methodology. The artifacts required are reduced to bare minimum – User Stories (requirements), Planning Game (plans) and Code (product). XP bets that it is better to do a simple thing today and make necessary changes tomorrow by a paying a little extra than to do something very complicated which may be never used in the future. 
  3. Feedback: Feedback is given a lot of importance in XP and is one of its critical components. Feedback from customers and developers is essential as it is crucial to understand what is wrong in the project as early as possible so that it is cheaper to make corrections. Continuous feedback ensures that the product is of high quality.
  4. Courage: IT takes a lot of courage to accept the XP methodology as it differs a lot from your traditional programming techniques. Courage and certain amount of aggressiveness are required from developers and customers. The role of customer differs in XP compared to other software development methodologies. A customer is much more involved in the project and spends more time onsite.

The XP Environment

  1. Extreme Listening: XP Planning is also known as Planning Game where the on-site customer and the other team members sit together and come up with desired features in the system. Each feature is written as a User Story which describes the feature and gives it a name. The development team provides an estimate of the effort and the time required for each User Story. Next, the business decides the priority of each User Story, the sequence of implementing them and the timelines of the system releases.
  2. Extreme Design: XP Design strictly follows the principle of simplicity. The software is designed in the simplest possible way. Designing in XP is not a one-time thing but a continuous process, there are improvements being made in the design for each release. Unnecessary complexity is avoided by following a test-driven approach in development. Programmers modify the design as and when required and refactor to create exactly what is required in the simplest possible way.
  3. Extreme Coding: The main practices of coding in XP are as follows:
    • Pair Programming – All the code in XP is written by two people working on a single machine. This practice ensures higher quality of code without hampering time to deliver. Another advantage of pair programming is the improvement in one’s knowledge area and skills.
    • Customer on site – XP insists that a customer must be present on site during the entire project as all the phases require constant communication with the customer.
    • Continuous integration – Developers must integrate the code and release it into the repository every few hours. Also, unit tests must be performed before and after integration so that there is always a releasable code available.  Integrating small units of code at multiple times during project saves time and complication of integrating complex code at a later stage.
   4.  Extreme Testing:
    • Code the Unit Test First – The test must be created before writing the code. This practice makes it much easier to write the code. The developer understands what exactly needs to be done.
    • Unit Tests – Unit tests are performed on individual modules before integration and after integration. This makes sure all the functionalities in the code are working.
    • Acceptance Tests – User Stories are used to create acceptance tests. Each of these tests represents an expected result from the system.

The XP Disadvantages

Some of the disadvantages of using Extreme Programming are as follows:
  1. XP assumes customer involvement at all times.
  2. Lack of proper documentation creates problems in big projects, especially when team members leave and new members join in.
  3. XP is code centric and not design centric approach. Lack of design can be a problem for huge projects.
  4. Too much refactoring can be a waste of time.
  5. Due to lack of structure in XP, it might be difficult for testers to find defects.
Extreme Programming is software development methodology based on values of feedback, communication, simplicity and courage. It provides a friendly, learning environment to maximize the team’s productivity. However, XP may not be a suitable methodology for huge projects.

About Author:
Kintu Racca is a consultant in Systems Plus Pvt. Ltd. Within Systems Plus, she actively contributes to the areas of Technology and Information Security. She can be contacted at kintu.r@spluspl.com

No comments:

Post a Comment