Экстремальное программирование — что это? Речь идет о новой методологии разработки программных продуктов в условиях ограниченного количества ресурсов, финансирования, кадров, других негативных моментах. Когда при этом требования к качеству, скорости создания ПО остаются неизменными или становятся выше, чем при благоприятных условиях.
Подход дает возможность эффективно работать при скоплении негативных факторов без ущерба конечному результату. Поэтому он и носит такое название. С другой стороны, экстремальным такое программирование именуют за счет мобилизации ресурсов команды, доведения их до предельной точки — экстремума.
Для чего нужно экстремальное программирование?
Популяризатором подхода Extreme Programming выступает Кент Бек, который выдвинул и оптимизировал его в середине 90-х годов прошлого века, пока работал над крупным приложением для компании Chrysler. Результатом наработок стало создание принципиально новой методологии XP. Подобный подход преследовал сразу 4 цели:
- Экономия времени. За счет оптимизации рабочего процесса разработчики могут выполнить проект с опережением сроков или успеть вовремя без ущерба качеству конечного программного продукта.
- Экономия кадровых, финансовых ресурсов. Суть — по-максимуму использовать имеющиеся ресурсы, оптимизировать процессы, чтобы затратить как можно меньше усилий. Благодаря подходу есть шанс обойтись малыми кадрами, грамотно распределив задачи между программистами команды.
- Повышение качества программного обеспечения. Методика XP предполагает постоянное тестирование продукта на всех этапах его создания. Благодаря чему появляется возможность поймать баги, неточности выполнения, ошибки. Исправить их на ходу и создать наиболее действенный, оптимизированный код. Что скажется на процессе, сроках последующей доработки проекта, а также скорости, качестве его выполнения на устройстве конечного пользователя. Позволит скорее использовать программный продукт без дополнительных затрат и усилий по коррекции, доработке.
- Выполнение требований конечного пользователя. Удовлетворение его потребностей. Поскольку команда общается не столько с заказчиком, который ставит задачу, направляет техническое задание. Сколько с будущими пользователями продукта, которые участвуют в обсуждении промежуточных результатов в качестве членов фокус-групп.
Технологии подобного плана используются при недостатке ресурсов или при желании оптимизировать работу команды, скорее добиться результата. Это не догма, не принципиальная замена старым парадигмам, а один из вариантов решения повседневных рабочих вопросов. Выгодная альтернатива.
Кому подойдет подобный подход?
Экстремальное программирование подойдет нескольким категориям разработчиков:
- Небольшим коллективам из нескольких человек. Если задание выполнимо для столь незначительного количества кадров.
- Командам самостоятельных программистов, которые занимаются созданием собственных продуктов или работают как сторонние разработчики на аутсорсе, выполняют заказы для компаний, частных лиц.
- Штатным разработчикам, специализированным IT-компаниям средней руки, если организация желает оптимизировать процессы создания программных продуктов, добиться экономии денег, времени.
- Большим компаниям, организациям, для которых оптимизация рабочего процесса и тщательный контроль над ним — жизненно важный вопрос из-за обилия кадров. Возможной путаницы при постановке задачи, любых изменениях.
Теоретически, технология подойдет любым командам, группам создателей приложений. Однако специалисты выделяют ряд формальных критериев, которых нужно придерживаться, выбирая подходящую методологию.
Экстремальное программирование подойдет в следующих случаях:
- Требования к системе недостаточно понятны или могут измениться.
- Разработчики обладают высоким профессиональным уровнем, квалификацией, необходимыми знаниями, ответственностью.
- Есть возможность быстро уточнять характер требований у заказчика. С другой стороны, контактировать с будущими пользователями программного продукта. Для целей оперативной, качественной разработки формируют специальные фокус-группы, которые плотно сотрудничают с членами команды. Работа с непосредственными пользователями играет основную роль.
В то же время, XP не подходит для решения вопросов проекта, если:
- Команда слишком велика, ее численно превышает 50 человек. Часть кадровых ресурсов не будет задействована. Большого смысла в экономии не остается. Есть возможность привлечь больше специалистов и польза от XP сводится к нулю.
- Объем работ четко определен и финансирование невозможно увеличить даже в минимальных пределах.
- Технические требования к конечной системе жестко регламентированы. Инициатива специалистов по программированию жестко ограничена или полностью исключена.
- XP подойдет при реализации большей части проектов самостоятельными командами, коллективами в рамках небольших частных фирм-разработчиков ПО.
Основные приемы
Суть методологии можно описать 12-ю принципами:
Тестирование
Многоуровневая система тестирования программного кода. Требует выработки четких принципов проверки того или иного сегмента будущего продукта. Подобный вариант позволяет сократить итоговую продолжительность работы над проектом. Поскольку ошибки исправляются на ходу. С другой стороны, процесс тестирование требует, чтобы код содержал комментарии. Сам по себе протоколируется. Следовательно, если продолжить работу над проектом через неделю, месяц, потребуется минимум времени на понимание сути написанного.
Исправление багов, если они появятся уже после перерыва и продолжения разработки.
Четкое планирование
Процесс начинается с постановки задания и создания примерного плана разработки с указанием графика реализации каждой части. По мере того, как задача становится все более четкой, план меняется, дополняется. Программисты получают как общие сведения, так и конкретные указания, которым должны следовать. Подобный подход позволяет держать руку на пульсе и четко понимать, на какой стадии находится команда. Следовательно, любые заминки, организационные проблемы, путиница исключены.
Плотный контакт с заказчиком
Согласно философии extreme programming заказчиком выступает не тот, кто платит за работу, а конечный пользователь приложения, системы. Для эффективной работы требуется постоянный контакт с пользователями. Они участвуют в тестировании промежуточных версий. Тот же, кто оплачивает счета и ставит техническое задание, участвует в разработке как проверяющий конечного результата.
Парное участие
Особый способ организации рабочего коллектива. Над программированием системы работают пары специалистов за одним компьютером. Один занимается подготовкой самого кода, решением вопроса. Другой — следит за точностью выполнения, видит всю картину целиком. При необходимости пары меняются местами: один наблюдает и корректирует, другой занимается созданием, пишет код.
Продолжительность работ каждой команды жестко не регламентируется. В течение дня команды могут меняться. Ротация позволяет сделать так, чтобы каждый программист имел представление не только о своем сегменте системы, но и обо всем программном продукте в целом.
Повторяющиеся итерации
Обычный подход к созданию системы предполагает, что проект окажется запущен для выполнения только один раз, после того как будет написана последняя строчка кода. XP же требует, чтобы проверка работоспособности системы проводилась несколько раз, по мере выполнения каждого крупного шага. Это позволит быстрее выявить ошибки, ускорить отладку приложения.
Рефакторинг или переработка кода
После выполнения каждой задачи специалисты проводят ревизию написанного кода. А затем ищут варианты его оптимизации, чтобы повысить скорость работы программы и облегчить ее выполнение на компьютере или ином устройстве пользователя. Благодаря этому, системы, созданные по принципам XP, считаются более легковесными, а также надежными и безопасными.
Ранний релиз конечного продукта
Сторонники XP стараются всеми силами сократить продолжительность разработки и как можно скорее выпустить первую версию системы. Это позволяет удовлетворять потребности бизнеса. Заказчик получает первые результаты (прибыль, оптимизацию рабочих процессов) гораздо раньше, чем при прочих вариантах разработки.
В то же время, создатели также могут рассчитывать на раннюю обратную связь. Учитывать мнение пользователей и заказчика при проектировании новых версий приложения. Релизы выпускаются часто, с указанием новых функций или особенностей программного обеспечения. Что делает процесс более эффективным, а само ПО — дружественным потребителю и полезным заказчику.
Простое проектирование
Проектирование системы проводится в несколько этапов, с учетом меняющихся условий. Сторонники XP считают, что заблаговременно строить подробный план не имеет смысла.
Достаточно набросать его по основным направлениям, а затем дополнять и дорабатывать по мере того, как задача становится четче. Благодаря этому, есть возможность сэкономить время проектировании, а также увеличить его эффективность.
Разработка метафоры системы
Речь идет об архитектуре системы, описании ее формы и внутренней структуры. Экстремальное программирование требует более четкого, детального описания архитектуры и при необходимости — коррекции информации.
Жесткие стандарты оформления кода
Программисты, члены команды должны придерживаться одних и тех же стандартов оформления программного кода. Пользоваться одними и теми же принципами. Это позволит упростить понимание между разработчиками, особенно в условиях больших коллективов. Ускорить процессы разработки, а также исключить вероятность недопонимания и задержек при длительном перерыве в работе над тем или иным модулем.
Коллективная работа
Специалистам предоставляется значительная свобода. Каждый может вносить предложения поменять тот или иной фрагмент кода. Также несет ответственность за весь проект целиком.
Так удается повысить осведомленность специалистов, вовлеченность участников. С другой стороны, тут есть и свои подводные камни.
Еще один момент касается трудовых прав специалистов, касается жесткого графика работы, без неоплачиваемых сверхурочных.
Как внедрить?
Чтобы внедрить XP требуется соблюдение нескольких условий:
- Программисты обладают высокой квалификацией, ответственностью и соответствующим уровнем знаний. Не новички.
- Команда менее 50-и человек.
- Заказчик дает достаточную свободу действий, возможность самостоятельного решения технических вопросов.
Преимущества и недостатки
Среди преимуществ XP:
- Высокая скорость разработки. Оперативнее на 20−50% и свыше в отличие от стандартного подхода.
- Эффективность работы.
- Возможность решать рабочие задачи в изменяющихся условиях.
- Минимальные расходы ресурсов на доработку системы благодаря частым релизам, полноценному тестированию.
Минусы:
- Большая роль заказчика, конечного пользователя без которого работа будет недостаточно эффективной.
- Потребность в широкой инициативе.
- Необходимость в высокой квалификации программистов, которые участвуют в разработке по принципам XP.
Экстремальное программирование — удобный вариант, когда нужно решить задачу быстро, в сложных условиях и с минимальными расходами. Но этот подход не идеален, имеет свои условия использования. При его реализации нужно проявлять максимум осторожности.