EXTREME PROGRAMMING (XP) Extreme Programming (XP) the most widely used approach to agile software development, emphasizes business results first and takes an incremental, get-something-started approach to building the product, using continual testing and revision.
XP values - Beck defines a set of five values that establish a foundation for all work performed as part of XP—communication, simplicity, feedback, courage, and respect. Each of these values is used as a driver for specific XP activities, actions, and tasks. In order to achieve effective communication between software engineers and other stakeholders, XP emphasizes close, yet informal collaboration between customers and developers, the establishment of effective metaphors3 for communicating important concepts, continuous feedback, and the avoidance of voluminous documentation as a communication medium. To achieve simplicity, XP restricts developers to design only for immediate needs, rather than consider future needs. The intent is to create a simple design that can be easily implemented in code. If the design must be improved, it can be re factored at a later time. Feedback is derived from three sources: the implemented software itself, the customer, and other software team members. By designing and implementing an effective testing strategy, the software provides the agile team with feedback. XP makes use of the unit test as its primary testing tactic. As each class is developed, the team develops a unit test to exercise each operation according to its specified functionality. Beck argues that strict adherence to certain XP practices demands courage. A better word might be discipline. An agile XP team must have the discipline (courage) to design for today, recognizing that future requirements may change dramatically, thereby demanding substantial rework of the design and implemented code. By following each of these values, the agile team inculcates respect among between other stakeholders and team members, and indirectly, for the software itself. As they achieve successful delivery of software increments, the team develops growing respect for the XP process. The XP Process Extreme Programming uses an object-oriented approach as its preferred development paradigm and encompasses a set of rules and practices that occur within the context of four framework activities: planning, design, coding, and testing. The following figure illustrates the XP process and notes some key ideas and tasks that are associated with each Key XP activities are Planning. The planning activity (also called the planning game) begins with listening- a requirements gathering activity that enables the technical members of the XP team to understand the business context for the software and to get a broad feel for required output and major features and functionality. Design. XP design rigorously follows the KIM (keep it simple) principle. A simple design is always preferred over a more complex representation. In addition, the design provides implementation guidance for a story as it is written—nothing less, nothing more. The design of extra functionality If a difficult design problem is encountered as part of the design of a story, XP recommends the immediate creation of an operational prototype of that portion of the design. Called a spike solution, the design prototype is implemented and evaluated. XP encourages refactoring—a construction technique that is also a method for design optimization. Fowler describes refactoring in the following manner: Refactoring is the process of changing a software system in such a way that it does not alter the external behavior Of the code yet improves the internal structure. It is a disciplined way to clean up code [that minimizes the chances of introducing bugs]. Coding. After stories are developed and preliminary design work is done, the team does not move to code, but rather develops a series of unit tests that will exercise each of the stories that is to be included in the current release Once the code is complete, it can be unit-tested immediately, thereby providing instantaneous feedback to the developers. A key concept during the coding activity is pair programming. XP recommends that two people work together at one computer workstation to create code for a story. This provides a mechanism for real_time problem_solving (two heads are often better than one) and real-time quality assurance. Testing. The creation of unit tests before coding commences is a key element of the XP approach. The unit tests that are created should be implemented using a framework that enables them to be automated. This encourages a regression testing strategy whenever code is modified. Wells states: “Fixing small problems every few hours takes less time than fixing huge problems just before the deadline.” XP acceptance tests, also called customer tests, are specified by the customer and focus on overall system features and functionality that are visible and reviewable by the customer. Acceptance tests are derived from user stories that have been implemented as part of a software release. Industrial XP Joshua Kerensky describes Industrial
Extreme Programming (ITP) in the following manner: “ITP is an organic evolution of XP. It is imbued with XP’s minimalist, customer-centric, test driven spirit. ITP differs most from the original XP in its greater inclusion of management, its expanded role for customers, and its upgraded technical practices.” ITP incorporates six new practices that are designed to help ensure that an XP project works successfully for significant projects within a large organization. Readiness assessment. Prior to the initiation of an ITP project, the organization should conduct a readiness assessment. The assessment ascertains whether (1) an appropriate development environment exists to support ITP, (2) the team will be populated by the proper set of stakeholders, (3) the organization has a distinct quality program and supports continuous improvement, (4) the organizational culture will support the new values of an agile team, and (5) the broader project community will be populated appropriately. Project community. Classic XP suggests that the right people be used to populate the agile team to ensure success. The implication is that people on the team must be
well_trained, adaptable and skilled, and have the proper temperament to contribute to a self
Organizing team. When XP is to be applied for a significant project in a large organization, the concept of the “team” should morph into that of a community. A community may have a technologist and customers who are central to the success of a project as well as many other stakeholders (e.g., legal staff, quality auditors, manufacturing or sales types) who “are often at the periphery of an ITP project, yet they may play important roles on the project”. In ITP, the community members and their roles should be explicitly defined and mechanisms for communication and coordination between community members should be established. Project chartering. The ITP team assesses the project itself to determine whether an appropriate business justification for the project exists and whether the project will further the overall goals and objectives of the organization. Chartering also examines the context of the project to determine how it complements, extends, or replaces existing systems or processes. Test-driven management. An ITP project requires measurable criteria for assessing the state of the project and the progress that has been made to date. Test-driven management establishes a series of measurable “destinations” and then defines mechanisms for determining whether these destinations have been reached. Retrospectives. An ITP team conducts a specialized technical review after a software increment is delivered. Called a retrospective, the review examines “issues, events, and lessons-learned” across a software increment and/or the entire software release. The intent is to improve the ITP process. Continuous learning. Because learning is a vital part of continuous process improvement, members of the XP team are encouraged (and possibly, incented) to learn.
You must be logged in to post a comment.