At some point within the XP process, the code typically grows so unstructured or unscalable (or both) that you need to rewrite it. At this point, it makes sense to use a RAD-like process for the redesign. The main RAD component that will help you here is its design phase. Start with a design phase in which you determine how to reimplement the existing product's features, then develop a plan for reimplementing the product iteration by iteration. You can decide whether to use other elements of RAD, such as CASE tools, by considering their benefits and drawbacks on a project-by-project basis.
If you can produce at least a basic design at the beginning of your project, we recommend that you start with RAD, then build into it the most useful practices from XP. For example, you could build into the implementation phase practices such as code reviews, coding standard enforcement, and unit testing. You could also rearrange the development team's work area in such a way that permits developers to engage in pair programming for problem solving and challenging implementation tasks. To further your error-prevention efforts, you could integrate PSP into the process to help developers recognize and prevent their most common coding mistakes.
In my opinion, the key to improving software reliability and reducing development time is not following any particular process, but rather ensuring that your process suits your project and includes practices that aggressively prevent errors. Each error you prevent translates to not just one fewer bug that you need to find and remove later in the project's lifecycle, but hundreds. The more effectively you prevent errors during the development process, the sooner you will be able to release reliable products.
1Error-prevention and static-analysis tools mentioned in the article are developed by Parasoft.