Экстремальное программирование

Наиболее концентрированно идеи быстрой разработки программ оказались выражены в подходе экстремального программирования (ехtreme programming) (http//www.extremprogramming.org). Две основные черты, присущие быстрым разработкам, являются базовыми и в этом подходе. Методы, объединённые в данном подходе, не являются принципиально новыми. Однако именно их рациональное объединение и совокупное использование даёт существенные результаты и успешно выполненные проекты [Бек 2000] Наибольшую пользу подход экстремального программирования может нести в разработке небольших систем, требования к которым четко не определены и вполне могут измениться.

Подход начинается с того, что проводится анализ назначения системы и определения первоочередной функциональности. В результате составляется список историй — возможных применений системы. Каждая история должна быть ориентирована на определенные задачи бизнеса, которые можно решать с помощью количественных показателей. Наконец, ценность истории определяется материальными и временными затратами на ее разработку командой разработчиков.

Заказчик выбирает истории для очередной итерации, основываясь на их значимости для проекта и ценности. Для первой версии системы заказчик определяет небольшое количество логически связанных наиболее важных историй. Для каждой следующей версии выбираются наиболее важные истории из числа оставшихся (рис. 17).

Рис. 17. Работа над проектом на основе экстремального программирования

 

Одним из существенных методов данного подхода является функциональное тестирование. Существуют две особенности процесса тестирования.

Программисты сами пишут тесты для тестирования программы. Эти тесты пишутся до начала кодирования.

Уверенность в нормальной работе каждого отдельного теста постепенно формирует у разработчиков уверенность в нормальной работе системы в целом.

Цель каждой итерации (рис. 18) — включить в версию несколько новых историй. На собрании по планированию итерации определяется, какие именно истории будут реализованы и каким образом это будет сделано командой разработчиков.

Рис. 18. Итерация

 

Коллективное владение кодом в процессе разработки (рис. 19) означает возможность для каждого программиста в любое время усовершенствовать любую часть кода в системе, если это необходимо. Программист берёт на себя ответственность за решение определённых задач. В случае возникновения вопросов о разрабатываемой задаче, может быть проведено короткое (15 –минут) собрание с присутствием заказчика.

Рис.19. Разработка

 

Для того чтобы выполнить задачу, ответственный за нее программист должен найти себе партнера (рис. 20). Окончательный код всегда пишется двумя программистами на одной рабочей станции.

Рис. 20. Коллективное владение кодом

 

Добавим еще, что экстремальное программирование уделяет значит внимание организации офисного пространства, отмечая существенное влияние окружающих условий на работу программистов.