International Journal of Advanced Computing (IJAC) Vol. 3, Issue 3, July 2011 Improving and Survey of Extreme Programming Agile Methodology Hamid Mcheick Associate Professor, Department of Computer Science and Mathematics, University of Quebec at Chicoutimi (UQAC), 555, Boulevard de l’Université, Chicoutimi (Québec), Canada, G7H-2B1. E-mail : hamid_mcheick@uqac.ca Abstract Agile software development is a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing and cross-functional teams. Extreme programming (XP) is the most well known agile software development methodology that handles rapid changes in requirements and environments. It intends to improve software quality and responsiveness to changing customer requirements. This means, it provides principles, techniques and practices for the efficient, predictable and repeatable production of software systems. However, some limitations have been detected in its practices and new approaches were drawn. Due to these limitations, we propose a new practice for XP that takes the place of pair programming and refactoring without losing their roles, but improve the cycle of XP. In this paper, we give an overview of XP and explain the problems in pair programming. Moreover, we present a new approach that introduces the Code Inspection Method (CIM) and its effectiveness on XP lifecycle. A case study is done to proof this new approach. Keywords : Code Inspection Method (CIM), Extreme Programming (XP), Agile Software Development. Responsibility of Contents of this paper rests upon the authors and not upon GRIET publications. ISSN : 0975 - 7686 87 1. Introduction To define the XP, we have first to define the Agile Software Development. The agile software development is based on fundamental changes to what we considered essential to software development ten years ago. The most important thing to know about agile methods or processes is that there is no such thing, there are only agile teams. The processes we describe are environments for a team to learn how to be agile. The second change is making the customer the one who funds the software development, a valuable and essential team member. Agile also means a fundamental change in how we manage our projects. Instead of managing our activities and waiting till the project ends for software, we will manage our requirements and demonstrate each new version to the customer [10]. Extreme programming (XP) is the most well known agile software development methodology that handles rapid changes in requirements and environments. It intends to improve software quality and responsiveness to changing customer requirements. This means, it provides principles, techniques and practices for the efficient, predictable and repeatable production of software systems. Extreme programming (XP) intends to handle with customer changing requirements, while improving software quality. Most surprising aspect of XP is its simple rules which are based on values and practices. These rules stand for planning, managing, designing, coding and testing [9,10]. XP embraces five values: communication, simplicity, feedback, respect, and courage. These values bring purpose to twenty three practices, as Beck presented in [1], thirteen called primary because they must be done before moving to the other eleven practices called corollary. First ones provide a foundation of XP values, when they are firmly in place, then come the role of applying the other practices to perform business relationships. As we said above, XP is increasingly adopted by software organizations and engineers to access its effectiveness and the benefits it promises. However, XP has some limitations in certain aspects pertaining to inter-group communication and teamwork. This issue is attributed mostly to the isolation among different pair-programmer groups which is analyzed by getting the solution. A solution to solve this issue is the Code Inspection Method (CIM). This method specifies the roles of the programmers by giving the best of them the role of code inspection. Where each programmer takes a task to develop and the code inspector inspects the code after each task in order to improve its quality. This quality is defined by being readable, optimized, reusable and avoids redundancy. In this paper, we give an overview of XP and explain the benefits of pair programming. Moreover, new approach has been proposed to introduce the idea of code inspection that replaces the pair programming and the refactoring practices. This solution saves time and improves code without discarding the benefits of pair programming and refactoring.