Снова об экстремальном программировании
Поводом для написания данной статьи стал организованный в конце апреля компанией RUSSEE семинар изобретателя экстремального программирования (eXtreme Programming, XP) Кента Бека. Идея экстремального программирования не нова — ей уже почти десять лет, но в последнее время этой идее уделяют все более серьезное внимание не только руководители проектов, но и поставщики различного инструментария для разработчиков.
Причиной роста популярности идеи экстремального программирования и методологий разработки приложений, в той или иной степени использующих ее, является появление все большего числа заказчиков, бизнес которых быстро изменяется, а вместе с ним, естественно, меняются и требования к информационной поддержке бизнеса, то есть к программному обеспечению. Да и капризность некоторых заказчиков, меняющих свои требования просто потому, что до появления первой версии приложения им было совершенно неясно, чего же им все-таки хочется, нынче явление нередкое.
Основная идея XP
Создатели многих стандартных методологий разработки приложений придерживаются так называемой модели водопада, основная идея которой заключается в последовательном прохождении различных этапов жизненного цикла разработки программного обеспечения. Сначала заказчик однозначно формулирует свои требования, затем осуществляются планирование работы, проектирование данных и приложений, собственно создание кода, тестирование и внедрение. Такой подход оправдан во многих случаях, и при тщательном управлении требованиями, планировании и проектировании вероятность создания качественного программного обеспечения действительно высока. Но иногда требования за время производства продукта настолько меняются, что он становится непригодным для применения, — бывает, что заказчик не в состоянии адекватно сформулировать свои требования, не видя работающего продукта, да и автоматизируемые процессы могут изменяться. В этом случае модель водопада может оказаться неприемлемой и в конечном счете превратится в набор дорогостоящих итераций, связанных с отражением в продукте изменившихся требований.
Основная идея экстремального программирования заключается в нетрадиционном процессе создания приложений: вместо отдельных фаз планирования, анализа и проектирования продукта с расчетом на долгосрочную перспективу все эти работы выполняются постепенно в ходе разработки. Работа над проектом сводится к частому выпуску отдельных версий продукта (релизов) с постепенно нарастающим набором функций, при этом для каждого релиза определяется необходимый для реализации в нем набор функций, и в процессе работы над версией осуществляются и планирование, и проектирование, и реализация, и тестирование.
Основные принципы XP
Помимо частого выпуска релизов, к принципам XP относятся:
- строгое общее расписание работы;
- программирование парами — задачи для каждого релиза решают пары программистов, работающих за одним компьютером;
- строгое отсутствие сверхурочной работы;
- регулярные совещания, на которых принимаются решения о том, что именно следует реализовывать дальше и как распределять работу в группе;
- наличие представителя заказчика в составе группы.
Особое внимание в XP уделяется постоянному тестированию, причем не только кода, но и идей. Любой новый код интегрируется в существующее приложение не позднее чем через несколько часов после создания, после чего приложение собирается в единое целое, прогоняются все тесты, и если хотя бы один из них не выполняется корректно, то внесенные изменения отменяются.
Перечисленные правила следуют из более общих принципов XP, таких как:
- принцип быстрой обратной связи — быстрое получение сведений от заказчика об изменениях в бизнесе и о том, что следует изменить в приложении;
- принцип приемлемой простоты — каждая проблема решается самым простым из возможных способов;
- принцип постепенного изменения — предпочтение серии небольших изменений одному глобальному; принцип качественной работы.
Впрочем, при необходимости можно и нарушить какое-то из правил — в XP нет догм.
Человеческий фактор
Отметим, что подход Кента Бека к разработке приложений предполагает не только организационно-технические принципы. Не меньшее внимание в XP уделяется построению взаимоотношений как внутри команды, так и вне ее. Залогом успеха экстремального программирования являются доверительные отношения между членами команды и, что более важно, между разработчиками и заказчиками. Необходимо открытое общение между заказчиками и разработчиками, честное обсуждение проблем и ошибок.
Еще один важный принцип — понимание того, что для успеха разработки нужен позитивный настрой и не допустимы дефекты и некачественная работа, что разработчик несет ответственность за результат и должен соблюдать сроки выполнения заданий. Современные тенденции развития индустрии разработки — сокращение сроков реализации проектов и увеличение доли проектов, выполняемых в рамках договоров, — обусловливают предъявление к командам разработчиков жестких требований.
Немного личных впечатлений
На семинаре Кента Бека я пообщалась с руководителями проектов, внедрившими XP в своих компаниях. В основном они довольны результатами, и это лишний раз подтверждает, что методологии, основанные на XP, могут приводить к успеху, если применяются в нужном месте, в нужное время и в соответствии с основными принципами. Если честно, мне стало по-хорошему завидно — при достаточно большом опыте руководства проектами у меня пока не было такой возможности. Но, честное слово, очень хотелось бы попробовать.