Понятие экстремального программирования (XP-процесс)
Экстрема́льное программи́рование (Extreme Programming, XP) — одна из гибких методологий разработки программного обеспечения. Авторы методологии — Кент Бек, Уорд Каннингем, Мартин Фаулер и другие, 1999 год.
XP-программирование - это облегченное программирование для средних и малых ИС.
Для больших ИС применение ХР не рекомендуется в связи с необходимостью глубокой проработки стратегии построения системы на начальном этапе.
Основная идея ХР заключается в высоком динамизме процесса разработки и максимально быстрой поставке заказчику первых вариантов системы, реализующих неполный набор функций.
ХР процесс включает большое количество итераций проектирования и разработки ИС. При этом каждая итерация включает следующую последовательность шагов:
кодирование;
тестирование;
выслушивание заказчика;
проектирование следующей итерации.
Большинство принципов ХР-программирования основано на здравом смысле и ориентировано только на выполнение требований заказчика. При этом разработчик не ставит перед собой цель разработки универсальной долгопринимаемой программы, а старается в максимально сжатые сроки выполнить первоочередные требования заказчика, а только затем в процесс сопровождения ИС дорабатывать дополнительные функции. Как правило, первый вариант ИС выполняет 1-2 функции, а в последующих вариантах добавляется последующие функции (по 1-2 функции).
ХР-программирование включает 12 методов, многие из которых желательно применять и в других технологиях. 12 методов можно сгруппировать на 4 категории:
Короткий цикл обратной связи (Fine scale feedback)
Разработка через тестирование (Test driven development) – непрерывное написание тестов для модулей, которые должны выполняться безупречно. Заказчики тоже пишут тесты для демонстрации законченности функций. Основной принцип: «тестируй, а затем кодируй». Этот принцип означает, что входным критерием для доработки программы является отказавший тестовый вариант.
Одним из минусов ХР-программирования, который, однако, позволяет реализовать саму идею ХР, является тестирование не на всем допустимом множестве исходных данных, а только на подмножестве данных, реально применяемых заказчиком (является базовым принципов ХР-программирования).
Игра в планирование (Planning game) – быстрое определение направления следующей итерации ПО путем оценки приоритетов системы и технических возможностей.
Заказчик всегда рядом (Whole team, Onsite customer) – в группе разработчиков всегда должен находиться представитель заказчика, который постоянно готов отвечать на возникшие вопросы.
Парное программирование (Pair programming) – весь код пишется двумя программистами, работающими на одном компьютере (резко повышает качество программирования).
Непрерывный, а не пакетный процесс
Непрерывная интеграция (Continuous Integration) – система интегрируется и строится много раз в день по мере завершения каждой задачи.
Рефакторинг (Design Improvement, Refactor) – система реструктуризируется без изменения ее внешнего поведения. Её цель устранить дублирование, улучшить взаимодействие и добавить гибкость системы (является базовым принципов ХР-программирования).
Частые небольшие релизы (Small Releases) – смена релизов с периодом от 2 до 4 недель.
Понимание, разделяемое всеми
Простота (Simple design) – проектирование выполняется настолько быстро, насколько это возможно на данном этапе.
Метафора системы (System metaphor) – вся разработка выполняется на основе простой общедоступной информации о том, как работает вся система.
Коллективное владение кодом (Collective code ownership) или выбранными шаблонами проектирования (Collective patterns ownership) – любой разработчик может улучшить код ИС в любое время.
Стандарт кодирования (Coding standard or Coding conventions) – всеми разработчиками должны выдерживаться единые правила, обеспечивающие одинаковое представление программного кода во всех частях ИС.
40-часовая рабочая неделя (Sustainable pace, Forty hour week) – нельзя её удваивать за счёт сверхурочных работ (резко снижается качество программирования).