Extreme programming is software development methodology that improves software responsiveness and quality with changing customer requirements. It’s a rapid and flexible development methodology that promises to increase productivity. It’s a software development process based on communication, simplicity, and feedback. In addition, it brings the whole team together by providing continuous feedback to improve the product’s quality.
Extreme Programming is part of SDLC (Systems Development Life Cycle). It uses various approaches software development such as the Waterfall Model, Spiral Model and Prototype Model. The goal of this model is to build efficient and good quality software. The models provide s systematic approach to the development process by dividing the work in different phases. Each phase of development is interrelated and works to build a product made with high quality. Every member is a contributor to the project and an integral part of the team. The programmers write code in pairs and follow a systematic style ensuring that every member in the team understands and enhances the work.
Every development lifecycle has a process. The following is a brief overview for Extreme Programming:
Planning: This process provides a general overview of a product including features and functionality.
- Analysis: A detailed analysis of a project’s specification and requirements. Project managers interview customers and write down specifications. An agreement is also signed.
- Planning: Probably the most important step in system development. Important aspects of development such as size estimation, cost estimation, development time, resources and project schedule are taken into account. Risk management is also carried out in this phase.
- Design: Decisions regarding software layout and logic are recorded in this phase. Design documentation should be easy to read and understand for development purposes. In addition, decisions regarding modification and maintenance are also documented in this phase.
- Implementation and Maintenance: This phase is where the actual development is carried out. The system is tested continually for its functionality as specified by the SRS. Testing helps eliminate bugs and makes the system more reliable and efficient.
- Maintenance: Continuous maintenance is required to meet the client’s change requirements including additions or removal of functionality.
Practices followed in Extreme Programming:
- Whole team: The client provides work tasks and priority for each task. This helps define project goals. The team includes sets of programmers. Specialized programmers in the form of testers help the client achieve reliability and a functional understanding of a system from the end-user view. Analysts are also important as they help the client to understand the requirements. A manager keeps track of the resources required and the work that needs to be done. In XP (Extreme Programming), all the members contribute equally in the way they can.
- Planning Game: Planning is an important phase in XP. It determines two basic software development questions that include current requirements and predicting future requirements. The main focus is to pace the project rather than estimating the project duration. The following are the two planning schemes:
- Release Planning: In this phase, the customer releases all the specifications and desired features to the team. Programmers estimate the cost, difficulty and duration on the basis of features and programming difficulty. This release plans are imprecise and therefore, the programmers keep revising the plan as the work progresses.
- Iteration Planning: In this phase, the specification is broken into small modules. Every week, a fixed number of new directions are delivered. This allows for additional functionality implementations for each iteration. This method is generally preferred as the work progress can be easily monitored.
- Testing: Testing is the most important part of any development cycle, because it makes the system more reliable and bug-free. In XP, the programmer tests the system’s functionality as development progresses.
- Small Release: The team releases running modules of the software frequently, delivering business value to the client. These modules can be tested by the end-user. This step helps to keep a check on the development specifications.
- Simple Design: XP teams build software with adequate designs. Their design suits the system’s functionality.
- Pair Programming: This is a very unique concept in XP. In this phase, two programmers work together on the same machine. This helps in a continuous evaluation of the code by at least one programmer in the pair. Research says that pair programming improves the quality of code being written. In this coding technique, one programmer is called the “driver” who writes the code and the other is called the observer who reviews every line of code being written. Their roles can be switched as per the requirements. The XP team members follow common code conventions so that all the team members can easily understand and edit code.
- Test Driven Development: Extreme Programming works on feedback. The team follows a test driven approach. Tests are carried out with the development of every module, thus resulting in a process of producing code that is efficient and tested. This test driven policy is also followed with the design. Refactoring is the process of continuous design improvement, which helps to remove the duplication and improves the cohesion of the code. High cohesion and low dependency is the symbol of a well-designed code.
- Sustainable Pace: Extreme Programming teams work hard to get the maximum productivity at all times with a proper pace of work.
Extreme Programming is a software discipline that provides simplicity, communication, and feedback for strong, less buggy code. It requires teamwork with pair programming and planning to create software designed to customer specifications.