Extreme Programming (XP)
For any of the Software Development, the end goal would be the quality which can be executed and maintained in a proper way. Extreme Programming is one such methodology of software development which is based on the values of simplicity, communication and feedback. The extreme programming provides the basic techniques and practices for the efficient, predictable and repeatable production of software systems. In simple words this serves as the template for the project creation.
There are even numerous methodologies available and the key differences would be the following,
Ø The cycle duration would be small and there are plenty of chances of getting the feedback which plays a vital role in any of the software development process.
Ø This methodology is more flexible than many other and can change according to the changes in the business requirements.
Ø This provides the feasibility for the customers to monitor the development progress which allows to find the defects in a good time.
Basic Concepts of Extreme Programming
A software development project is treated as a system of four control variables by XP. They are:
Cost:This variable deals with the amount of money involved in the whole development process which may be directly or indirectly. Some of them might be such as cost for the equipment, money paid to the developers in terms of salaries and many others in the similar way.
Time: This is one of the key control among the four as it determines the most probable date by which the whole process would be completed and the project would be available for the deployment.
Quality: For any software quality would be the key feature and the XP deals with this in an effective way that the quality should be in accordance with the customer requirements and the project will be thoroughly tested.
Scope: This control deals with the functionality of the project. This determines the areas on which the project concentrates and to what extent it would be done. Simply, this specifics what will be done and how much will be done.
Similar to many other methodologies Time is the most important control and it can be stated as the Central variable in XP. In accordance with the other variables, the central variable will effect as follows:
Ø If the customer needs to deliver the project with a high quality, then the time taken for the completion of the project would be high as the high quality needs to be tested again and again.
Ø Hiring more/ efficient resources or providing good equipment in the initial phase of the project would increase the cost and time taken to complete the project will reduce on a greater extent. On the other hand, if this was done on the middle phase or in the final phase of the project, the cost increases and time increases as well due to the communication overhead.
Ø Scope is always directly proportional to the time taken for completion. If the scope is more, then obviously time taken will be more to deliver the project.
The relation between the variable can be pictorially represented as below:
Values- Guidelines of XP
There are four guidelines for XP which plays a prominent role in the entire development process. They are:
1. Communication: Well, communication is the soul for the success of any of the software development process that follows any of the existing methodologies. The initial phase of the process is to gather the requirements from the customer and then getting them clear if there is any ambiguity. Next phase is to develop a software model and presenting it to the customers in the best possible way and clearing all their queries. All these phases involves a lot of communication between the customers and the developers. Many times there will be communication also involved among the developers in developing the software models. The communication always need not to be an oral presentation, this might include some others like written mails, documents. If the communication was perfect in the initial phases then the requirements would be clear to the developers which in turn helps to deliver the project within the stipulated time, with the required quality and scope.
2. Simplicity: The main idea behind the simplicity concept is that XP always tries to deal with changes and other risks. XP always strives for the simple systems and also for the simplicity in the methodologies. The XP methodology believes that 'Simpler the system is, the easier it is to communicate it. And also the more communication is the simpler the system would be as we know more about the system through communication, the system can be maintained in a simple way.
3. Feedback: From the definition it can be stated that XP is a Feedback-Driven process. XP methodology needs feedback at each and every phase. In the coding phase, the feedback will be immediate from whitebox testing. Both the customers and the developers should get a timely feedback for the successful progress of the model. Feedback has two important characteristics. Firstly, to know what exactly is wrong rather than knowing that something is wrong. Secondly, how earlier the feedback is provided. The sooner feedback is received the lesser will be the time taken to for the necessary action to be done.
4. Courage: This involves and courage and also particular amount of aggressiveness as well. Aggressiveness is the kind of approach and the attitude shown in the process of implementation
The XP Process
The XP is a both incremental and the iterative process. In general the project is divided into small portions, each one called as a Release. The functionality from each release keeps on incrementing. In other words a release can be stated as the version of the actual software model, in which all the features are implemented completely and based on the feedback the next release will be developed.
This contains three steps. They are Exploration, Planning and Steering.
In the steering phase, the fixed plan is updated whenever necessary in response to what is learned in development.
All the customer requirements are defined in the exploration phase. The estimation will also be done in this phase. The customer puts all the requirements, in other words what he wants the system to do on index cards which are called as User Stories. These represent the functionality that the customer needs.
When the user stories and estimates are available then the commitment schedule will finalizes which stories are going to be implemented in the current release. In the planning phase, the developers and customers will discuss and fix to one of the most feasible model that would be efficient enough.
This phase goes on until the release is done. Steering means influencing the project by little moves. There are 4 little moves. Iteration, Recovery, New Story and Re-estimation.
After determining the plan, it is to be implemented. The commitment schedule will be broken into iterations worth 2-3 calendar weeks. This is to ensure that the most valuable and important stories are implemented first
The Methodology- XP Rules and Practices
The rules and practices are ordered in four groups: management, development, design and testing.
1. Management: XP defines two metrics that are used to describe the progress. Firstly, Load Factor. It is the ration between Ideal Engineering days and the calendar days that describes the velocity of the team. Secondly, score of the Functional Test Suite which describes the progress of the project.
2. Development: XP defines simple procedure for the development. Initially analysis must be done on the user stories which continues with writing the unit testing and then simplifying the code and then integrating the code into the codebase.
3. Design: XP methodology do not determine any if the architectural or design models before any implementation takes place. The developer should implement the simple things in the initial steps. A Refactoring is a behavior-preserving transformation applied to the system. It usually involves changes to names, to the ordering of code units (methods, classes) and to their dependencies.
As there are many advantages of the Extreme Programming, some of them are as follows:
Ø All the rules and practices are used in a strict way in case of true programming, refactoring, and unit testing.
Ø This process is much more fun rather to be a traditional one.
Ø There can be a lot of knowledge transfer taking place in the XP projects.