|
|
|
Апрель 9, 2009
08:02 pm - Два аджайла, Scrum, XP, и немного RUPа. Частые вопросы Выкристаллизовалось.
Что такое Agile?
Тут есть некоторая путаница. Аджайла два.
Agile(1) - это семейство различных методологий под одним общим "зонтичным" названием. Все Agile-методологии характеризуются примерно общей культурой и ценностями, хотя расхождения имеются. В целом, можно сказать, что культура ориентирована на командную работу и человека, а также на частое деливери. Принципы Agile сформулированы в манифесте гибкой разработки.
Проверить, принадлежит ли ваша методология семейству Agile, невозможно. Такие критерии не сформулированы. К сожалению, сам манифест не может служить таким определением, так как, во-первых, слишком размыт, во-вторых, направлен против Waterfall. Практически любой Code&Fix проект при некоторой широте души вполне соответствует всем сформулированным в нем принципам.
Во многом, это абстракция, так как изначально в семейство Agile некоторые методологии попали почти по знакомству, а другие не попали по недоразумению. Так, например, RUP нигде не противоречит принципам agile, а значит может быть включена в это семейство. Более того, вы можете придумать свой подход и объявить его "Agile" и вам за это ничего не будет.
Существует множество методологий, входящих в семейство Agile. Самыми популярными из них являются Scrum и Extreme Programming (XP). Поскольку Scrum и XP не противоречат друг другу, часто речь идет о методологии "Scum + XP". Эти методологии являются более или менее определенными. Так, например, вы можете пройти тест на соответствие Scrum (т.н. Nokia Test) или XP.
Если вы "прошли" такой тест, то можете смело заявить, что работаете по Agile.
К настоящему моменту Agile-сообщество наработало огромное количество практик, облегчающих разработку ПО и в общем и целом находящихся в контексте культуры и принципов Agile. Эти практики не принаджежат никакой конкретной методологии семейства Agile, хотя в реальной жизни, разумеется, активно используются, в том числе в рамках этих методологий. Так, например, User Stories, придуманные Майком Коном, не принадлежат Scrum формально, хотя достаточно часто даже являются частью официального тренинга "Certified Scrum Master". То же самое относится к Plainning Poker, FIT/FITNESSE, ретроспективе, практикам управления релизом и т.д.
Теперь что такое agile(2). Очень часто применить Scrum и XP или другую определенную методологию в чистом виде невозможно по тем или иным причинам. В этом случае внедряется некоторый процесс, заимствующий практики и принципы из других методологий Agile семейства, плюс какие-то практики из других методов. Часто такую методологию называют "agile". Например, "мы работаем по agile". Никаких тестов, которые могут установить однозначно принадлежность проекта этой группе по понятным причинам нет.
Это порождает массу спекуляций. Так, например, можно ли взять одну практику из XP и заявить, что вы работаете по agile? Очевидно, нет. Однако, этим сплошь и рядом пользуются, чтобы оправдать, например, отсутствие документации в проекте. "Почему у вас нет требований?" - "А мы по agile работаем!" Область применимости Agile
Можно более или менее четко определить применимость "чистого" Scrum и XP. * Относительно небольшие команды (до 10 человек). * Проекты, не являющиеся life-critical и из нерегулируемого бизнес-домена. * Не Fix Price проекты * Не длительный цикл тестирования * Не распределенная разработка
Является ли это ограничениями для всех методологий семейства Agile? Нет. Например, FDD (feature driven development) создавался как раз для больших проектов фиксированной цены. Однако, у FDD есть другие ограничения, в частности на бизнес домен.
Понятно, что в сложных случаях остается возможность заимствовать некоторые практики из методологий семейства Agile. Такие проекты можно назвать agile (c маленькой буквы). Более того, индустрия наработала общие подходы к решению таких задач. Например, если вы погуглите в сторону Scaling Agile, вы увидите огромное количество работ, посвященных практикам работы в больших и распределенных проектах.
Такие проекты также называются работающими "по agile", однако никаких способов выяснить это, как уже говорилось, не существует. Является ли Agile чем то новым в разработке ПО?
И да и нет. С одной стороны, практически все практики гибкой разработки существовали и до появления agile-методологий. Например, итеративность впервые упомнянута в работе Боэма. Ретроспективы были введены в практику давно (см Норман Керт). Автоматизация тестирования, разумеется, существовала задолго до появления XP. Парное программирование, я уверен, применяли так или иначе все, вне зависимости от методологии, хотя и для отдельных задач.
Можно утверждать, что практически все отдельные элементы agile-методик применялись и раньше. Agile выводит их на новый уровень. Дело в том, что их взаимное воздействие и активное применение действует на команду сильнее, чем просто отдельное использование практик. Тотальное использование Unit Tests сильно облегчается TDD и просто необходимо для эффективного рефакторинга. В этом случае возможна Emerging Acrhitecture. Совместное планирование в Scrum обеспечивает общую ответственность за результат, что работает только в случае полной прозрачности работы внутри итерации (Daily Scrum и Demo) и коррекции процесса по ходу работы (Ретроспектива).
Сами практики благодаря активному использованию в последнее время отточились и заматерели. Вы можете найти множество книг и тренингов, посвященных тем или иным аспектам и нюансам использования практик. Какая методология лучше - Agile или RUP?
Некорректно сравнивать Agile и RUP из-за полной неопределенности первого. Какая методология лучше - Scrum+XP или RUP?
Вполне возможна модификация процесса, в которой есть элементы Scrum и RUP. Ваш процесс сможет пройти Nokia Test и при этом будет исполтьзовать шаблоны и роли RUP. Более того, есть открытый проект в рамках Eclipse, где разрабатывается процесс OpenUP. Он развивается под сильным влиянием Scrum и RUP. На практике, однако, такие гибриды встречаются редко.
Если мы внедряем "чистый" Scrum или XP в области применимости этих методологий, то эффективность, по ощущениям пробовавших это делать команд, будет выше, чем в случае традиционных методологий. Проверить это на практике невозможно. Вы не сможете создать 2 проекта с асболютно идентичными начальными условиями.
Остаются статистические методы. Однако их тоже можно поставить под сомнение. Дело в том, что на успех проекта влияет множество факторов. Например, если вы донельзя "урежете" бюджет проекта, то вне зависимости от методологии он будет неуспешеым. Если вы наймете плохих программистов, то проект, опять таки, будет неуспешным. Если вы делаете невозможный проект, то он будет неуспешным. И так далее. Эти факторы очень сильные. Эффект от использования той или методологии находится где-то в пределах погрешности таких статистических измерений.
|
Comments:
Супер! Ты знаешь, я как раз после вашей беседы с Вячеславом на конференции хотел что-то подобное написать - про размытость Agile и про неприменимость спора RUP и Agile. Правда, я как раз думал на манифест опереться для определения Agile, но ты прав, под него и code&fix попадёт. Здорово :) Как говорится, ППКС :)
![[User Picture]](http://l-userpic.livejournal.com/80407190/10317623) | | From: | zibsun |
| Date: | Апрель 10, 2009 12:28 pm none (UTC) |
|---|
| | | (Link) |
|
Спасибо :-) ЗА ППКС пришлось лазить в google :-)
Зря не запостил ответ на каждый вопрос отдельным постом. А то про все есть чего добавить/оспорить, и может каша получиться. Особенно, если у Славы будет время высказать свое мнение.
![[User Picture]](http://l-userpic.livejournal.com/80407190/10317623) | | From: | zibsun |
| Date: | Апрель 10, 2009 12:45 pm none (UTC) |
|---|
| | | (Link) |
|
Серьезно? Давай, буду постить кусочками.
Давай, а я пока разомну свою комментировалку :)
![[User Picture]](http://l-userpic.livejournal.com/80407190/10317623) | | From: | zibsun |
| Date: | Апрель 10, 2009 12:48 pm none (UTC) |
|---|
| | | (Link) |
|
|
|