Архитектурный манифест: Применение гибкой разработки, часть 1Источник: IBM
ВведениеВ последние годы наблюдается устойчивый рост популярности гибкой разработки, и многие компании размышляют над тем, как воспользоваться выгодами процессов и методов гибкой разработки. И хотя я не проповедую гибкость, методы гибкой разработки подтвердили свою выгоду при использовании в определенных типах организаций и проектов. В обсуждениях процессов разработки и связанных с ними проблем гибкая разработка уже давно стала горячей темой, поскольку:
Гибкая разработка годится не для всех организаций или клиентов. Существуют определенные критерии, которые делают гибкую разработку более пригодной для одних организаций, чем для других. И, как всегда, только люди делают процесс реально осуществимым (а люди бывают разные). В этой колонке я опишу критерии, которые помогут вам оценить, пригодна ли гибкая разработка для вашей организации. Вы узнаете о выгодах, которые сулит гибкая разработка, и о "человеческом" факторе процесса гибкой разработки. Что такое гибкая разработкаДля начала давайте определим, что мы понимаем под словом "гибкая разработка". Существует множество различных гибких методов разработки. Все они фокусируются на личном общении и быстрых циклах выпуска и нацелены на выпуск работающего фрагмента программы в кратчайшие сроки. Методы гибкой разработки являют собой попытку сокращения бюрократизма процесса разработки и обеспечения выпуска работающей программы, реализующей наиболее важные требования клиента. Кто-то может сказать, что гибкая разработка - это голос разума в полностью бюрократизированной и документированной пустыне процесса разработки, но это не совсем так. Все зависит от обстоятельств. Вопреки распространенному мнению, разработчики, придерживающиеся гибких методов, - это вовсе не бунтари, пишущие программы без всяких правил и ограничений. "Ковбойское программирование" свидетельствует об отсутствии дисциплины и плохом управлении и является признаком непрофессионализма. Если в вашей компании (или того хуже - в вашей группе) есть такие "ковбои", сделайте все возможное для изменения этой ситуации, хотя бы ради своих клиентов. При описании гибкой разработки часто рассказывают типичную историю о двухлетнем проекте, разработкой которого занималась небольшая группа (скажем, из пяти человек). Если бы эта группа использовала традиционный каскадный метод, показанный на рисунке 1, у нее ушло бы от двух до трех месяцев на детальную проработку всех требований. Затем группа проанализировала бы эти требования. За анализом требований последовала бы разработка системы, в том числе и архитектуры. К этому времени заказчик внес бы первые измерения, что активизировало бы процесс управления изменениями. Процесс управления изменениями сам по себе требует некоторой переработки требований, дополнительного анализа и, возможно, дополнительного проектирования. Через шесть или семь месяцев группа, наконец, будет готова к реализации. Как вы уже можете догадаться, клиент может внести еще какие-то изменения, которые снова пройдут через процесс управления изменениями. Не поймите меня превратно - существуют ситуации, когда иного пути просто нет - например, в критически важных системах или системах жизнеобеспечения. Рисунок 1. Традиционная каскадная разработка
Если бы группа в этом примере использовала гибкий подход, показанный на рисунке 2, она бы грубо набросала требования, которые были бы представлены в виде, позволяющем владельцам проекта определить их приоритеты. Затем владельцы и разработчики проекта совместно выбрали бы из требований небольшую группу функций и реализовали их за несколько итераций, которые заняли бы от двух до трех недель каждая. За пару итераций они создали бы работающую версию приложения, после чего владельцы проекта смогли бы приступить к его опробованию или применению. Еще через пару итераций приложение уже обладало бы базовыми функциями и было бы готово к запуску. Рисунок 2. Первая итерация процесса гибкой разработки
Показанный на рисунке 2 гибкий метод дает рабочую версию программы за меньшее время, чем было бы потрачено только на проработку приложения при использовании каскадного метода. Это рабочее приложение содержит лишь базовые функции, но уже работает. Иметь рабочую версию приложения (пусть даже содержащую лишь основные функции) очень полезно, поскольку вы можете начать его использование, тем самым ускоряя бизнес-процессы, или выпустить бета-версию коммерческой услуги и начать привлечение клиентов. В следующем разделе мы обсудим выгоды гибких процессов разработки. Принципы и выгодыЕсли ваша организация не получит от гибких методов никаких выгод, то в их применении нет смысла. Для упрощения обсуждения выгод перечислим принципы гибкой разработки:
Возможно, вы уже задумались, применимы ли принципы гибкой разработки или самоорганизующиеся группы к вашей организации. Это с неизбежностью порождает следующий важный вопрос. Готова ли ваша организация к гибкой разработке?Адаптация к методам гибкой разработки легче проходит в организациях, которые обладают определенными характеристиками. Как впервые отметил Дэвид Коэн (David Cohen) с соавторами, эти характеристики таковы:
Несколько лет назад я работал в компании, которая использовала упрощенную версию IBM Rational Unified Process (RUP). Применяемый процесс был близок по характеристикам к гибкой разработке, хотя мы и не называли его таковым. Я рассказывал об итерациях, о методах их использования и о том, почему они хороши. Но по какой-то причине реакция людей была прохладной. Позже менеджер проекта объяснил, что под "итерацией" люди понимали многократное выполнение одной и той же работы в связи с неясностью требований. Предшествующий опыт заставлял их оставаться глухими к моим речам. Тогда я понял, что как бы вы ни были подготовлены, процессы в конечном итоге реализуются людьми, знание послужного списка которых играет очень важную роль. |