Concept: Extreme Programming

Main Description

### Topics

- Introduction
- - About XP

- Characteristics of an XP Project
- How to Get Started
- Phases and Iterations

Additional Guidance:

- Guidelines
  - Refactoring
  - Test First Development
  - Pair Programming
  - Planning Game
- Additional XP Resources

Additional Concepts:

- Agile Software Development

# Introduction

This roadmap provides information for getting started and applying the practices of eXtreme Programming (XP) to a software development project. The roadmap can be used as a guide to the content delivered in the BUP XP Plug-In.

### About XP

Extreme Programming is an instance of an Agile Software Development method. XP is a method that is optimized for small to medium-sized project teams that fit a certain profile. It promotes rapid feedback and response to continual change. It is based upon the four values of simplicity, communication, feedback, and courage and is consistent with the values of agile software development.

Extreme Programming is an instance of an agile method for developing software. It is based upon the core principle of agility and consists of twelve practices that, when applied to an appropriate software development project, can produce high-quality software. If you are unfamiliar with the concepts surrounding XP, you should start by reading Agile Software Development.

### Characteristics of an XP Project

Extreme Programming or XP is a development process that can be used by small to medium-sized teams to develop high quality software within a predictable schedule and budget and with a minimum of overhead. Since XP relies heavily on direct and frequent communication between the team members, the team should be co-located. An ideal project for using XP would be one that has most of the following characteristics:

- A small to medium-sized team (fewer than 20 people on the complete team)
- Co-located, preferably in a single area with a large common space
- A committed, full-time, on-site customer or customer representative

### Phases and Iterations

An XP project is one that is based on rapid feedback through short iterations and frequent releases. BUP and XP share a fundamental belief that iterative development is the best way to deliver valuable software to your customers. The concept of phases, as usually described in a BUP configuration, is somewhat different. Decisions described in the BUP phases that define milestones occur, but they are not called specifically as defining phases. For a discussion of how the phases are related to an XP project, see the discussion of Phases.

### How to Get Started

This section provides a recommended way to approach XP for your project. You don't have to follow the steps as specified, but if you have little experience with XP, we recommend following them as closely as possible the first time.

Step | Do this ... | in order to...
--- | --- | ---
1 | Familiarize yourself with the motivation for using XP, the short description of XP, and the XP Practices | understand the fundamental principles of XP and how the practices support each other.
2 | Read the key concepts of Agile Software Development | understand the collaborative and social aspects of XP.
3 | Determine if XP is appropriate for your project by reviewing The Characteristics of an XP Project | decide if XP may be appropriate for your project.
4 | Read about the XP Environment. | prepare the physical and tool environment for your team.
5 | Read the Getting Started with XP guidelines. | get suggestions on how to start an XP project.