It is one of the well known and widely acclaimed development model, used for the purpose of agile process of software development. Abbreviated as XP, extreme programming methodology caters to fulfil the need of implementing the continuously changing requirements, being received from the client/stakeholders or the customer, on constant basis, throughout the development process.
The said methodology, involves the frequent delivery of a software product, in short development life cycle, and on regular & incremental basis, to the customers or stakeholders, so that their valuable feedback and reviews, may be implemented, in the next cycle of development.
The necessity of implementing and using the extreme programming approach, lies in its advantage of adaptability, to the frequent changing requirements, along with the simplicity, large and regular feedbacks, with the constant motivation and encouragement, throughout the process. Further, the process of extreme programming is based on the fact that it does not perceives the frequent changing and incoming requirements, as an additional workload, rather it considers these requirements, as an inseparable part.
Further, it is used to cut the cost and time, required to deal with the changing requirement, in multiple iterations, rather in one go, which seems to be a costlier and time-consuming process, due to frequent changing requirements.
The methodology and approach of extreme programming for the agile process of software development, is based on some ethics. These are
Communication: XP involves regular communications between teams and users, team and team, etc., through frequent collaborations, between them, so as to have a better understanding of a product, through reviews and feedbacks generated, to define and share a common objective & approach, for the purpose of implementing and fulfilling the business and user requirements.
Simplicity: XP focuses on present, and does not concern for the future. It provides simplicity, to start from a scratch, without having detailed knowledge of the software functionalities and features, which are added subsequently, in multiple iteration of the development life cycle. Ignoring future requirements and focussing on today's need, defines the XP's simplicity.
Feedback: It may be seen as a part of a communication process, where the constant and regular feedbacks are received from the customer, with respect to each version of a software product, which may help in directing the further development process, in a specific or a particular direction. Further, the feedback from the software product version, itself, after each sprint, may also be gathered, by applying unit and integration tests, on periodical basis.
Courage: As XP, emphasizes on present requirements and conditions, without keeping in account, the future, it make use of several practices and methodologies, such as changing or refactoring the entire code, throwing away the code, implementing anything as per their thinking, and many such things, which requires sufficient amount of courage & confidence. This courage, drives the developer, to take risks for today, without concerning tomorrow.
Respect: During XP, team members, pays respect, to each other's work, and this respect is gained by avoiding the acts, which may break compilations, produces failures in the execution of the unit tests or any such act, resulting in project delay. Self-respect, may also be gained by each member, by constantly focussing and working towards the quality achievement process. Respect factor leads to generation of motivation and courage, in a surplus quantity, in the team members.
The variant types of activities, carried out during extreme programming development phase, may be seen as under:
Code is the set of instructions, which is execute, to carry out a specific task. It is the smallest and basic working feature of a software application, which derives the development of complete software product. A code should adhere to standards and available specifications. The programmers generate the code, and subsequently produces the programs.
The testing activity involves, verifying and validating the functionality of the code, which is carried out by the programmer, itself. Basically, a programmer makes use of automation, to execute the automated unit tests. Acceptance testing, is a common seen testing technique, in the extreme programming.
Although, programmers have their own way and approach, to develop a software product, in a particular way, but still a good programmer, listens to customer/client/stakeholders, to know about their requirements, in details, what they want, how they want, what quantity and quality, and many such things, during planning game phase, to develop software product, matching the expectations of the customers.
Designing the development structure, may be seen as a mandatory criteria for the software development, to understand and organize the structure and conceptual logic & schema of a software product. It empowers, to reduce the complexity of the process, and subsequently avoids the situation of dependencies, in the system. Further, it helps in carrying out a software development project, smoothly & continuously, in a long run, without any halt or interruption.
The above said activities may be implemented, by making use of several and best available practices, in the field of software engineering. However, there are 12 significant practices, specified for the purpose of implementing the XP's activities, and is listed below: