Экстремальное программирование (eXtreme Programming – XP) – облегченный (подвижный) процесс (методология) , главный автор которой – Кент Бек (1999). Этот процесс ориентирован на группы малого и среднего размера, строящие ПО в условиях неопределенных или быстро изменяющихся требований. XP-группу образует до 10 сотрудников, которые размещаются в одном помещении.
Основная идея XP – устранить высокую стоимость изменений, характерную для приложений с использованием объектов, паттернов (типичное решение проблемы в определенном контексте) и реляционных БД. Это высокодинамичный процесс. Группа имеет дело с изменением требований на всем протяжении итерационного цикла разработки. Причем цикл состоит из очень коротких итераций. 4 базовых действий в XP-цикле:
Динамизм обеспечивается за счет: непрерывной связи с заказчиком и внутри группы, простоты (всегда выбирается минимальное решение), быстрой обратной связи, смелости в проведении профилактики возможных проблем. Многие принципы, используемые в любом процессе проектирования, в XP доведены до «экстремальных значений».
Extreme Programming (XP) is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements. As a type of agile software development, it advocates frequent "releases" in short development cycles (timeboxing), which is intended to improve productivity and introduce checkpoints where new customer requirements can be adopted.
Other elements of extreme programming include: programming in pairs or doing extensive code review, unit testing of all code, avoiding programming of features until they are actually needed, a flat management structure, simplicity and clarity in code, expecting changes in the customer's requirements as time passes and the problem is better understood, and frequent communication with the customer and among programmers. The methodology takes its name from the idea that the beneficial elements of traditional software engineering practices are taken to "extreme" levels, on the theory that if some is good, more is better.