Решил написать о сравнительно новой методике экстремального программирования - Agile, которая в последнее время на западе приобрела огромную популярность.
Начну с определения “Экстремальное программирование” по версии ru.wikipedia.org:
Экстремальное управление проектами — англ. Extreme project management (XPM) — метод управления очень сложными или неопределёнными проектами. От традиционных методов управления проектами XPM отличается открытым, гибким и недетерминистским подходом. Основное внимание уделяется человеческому фактору в управлении проектами, а не следованию запутанным техникам и строгому формализму. XPM является обобщением методик экстремального программирования.
Эта цитата дает общее понимание методики экстремального программирования, что же касается именно Agile, здесь имеем такой вариант:
Гибкая методология разработки (англ. Agile software development) — это концептуальный каркас, в рамках которого выполняется разработка программного обеспечения. Существует несколько подобных методик.
Написано очень красиво, но давайте разбираться в чем заключается этот “каркас” и какова выгода от его использования. Гибкая методология разработки подразумевает собой разделение всего обьема работы на более короткие отрезки - итерации. Итерация представляет собой программное решение, только в миниатюре. В начале определяются цели итерации, расставляются приоритеты, затем начинается работа. После того как предыдущие цели достигнуты, разработчики снова собираются, показывают текущее состояние заказчику, определяют новые цели, задания и реализуют их в следующей итерации. Еще одним интересным фактором является то, что команда разработчиков - самоорганизованная, то есть программисты сами выбирают и согласовывают задачи, которые будут решать в пределах реализации данного продукта.
Конкретный метод Agile - ориентирован на общение лицом к лицу, с помощью написания документов. Общение должно осуществляться как с заказчиком, так и разработчиками. Отдавая предпочтение непосредственному общению, Agile методы уменьшают объем письменной документации по сравнению с другими методами. Это привело к критике этих методов как не дисциплинированных.
При правильном использовании, Agile development позволяет быстро и качественно разрабатывать программные решения, но к сожалению такие методики не всегда применимы в реальных условиях работы. Все же стоит отметить, что некоторые компании успешно используют этот метод при разработке программ.
Очень интересную информацию о реальном применении Agile в команде разработчиков нашел здесь:
Команда не может мгновенно стать высокопродуктивной. Она обязательно проходит через несколько последовательных фаз развития:
Forming. Члены команды начинают осторожно присматриваться друг к другу. Они учатся работать друг с другом и пытаются понять свою роль в команде
Storming. После окончания разведки члены команды начинают сражаться за власть и контроль на проектом. Они практически никогда не могут согласится с друг другом, выражают недоверие и предубеждение. На этом этапе несколько лидеров формируют вокруг себя альянсы. Эта самая тяжелая, но к сожалению, неизбежная фаза формирования команды. Очень важно на этом этапе правильно управлять конфликтами
Norming. Борьба постепенно заканчивается, члены команды теперь знают друг друга достаточно хорошо и начинают понемногу доверять друг другу. На совместных обсуждениях они способны достигать консенсуса и принимать командные решения.
Performing. Команда самоуправляема и наконец может отвлечься от выяснения отношения и полностью посвятить себя проекту. Члены команды полностью доверяют друг другу и чувствуют ответственность друг перед другом. Команда начинает действовать как один человек: она может давать обещания и выполнять их. Она способна принимать решения руководствуясь стратегическими соображениями
Теперь становится понятно, почему некоторые Agile проекты имели проблемы на самом старте - они не смогли преодолеть стадию «Storming».
Подобным образом работает и методика разработки Scrum:

Рисунок дает понять основной принцип разработки.
Подробную информацию о данной методике можно найти здесь.
Надеюсь описания данных методик натолкнули вас на возможную оптимизацию при разработке программных продуктов. Желаю что б программирование не
стало слишком экстремальным ![]()
PS: Как я и обещал, я написал статью о Model-View-Controller.
13.01.2008 в 13:13
Интересно ходить на различные конференции на эту тему, там много интересных вещей “из первых уст”
13.01.2008 в 23:54
С самого начала ничего не понял. Очень понравилась фраза “Члены команды начинают осторожно присматриваться друг к другу”. Попробую прочитать еще пару раз:)
16.01.2008 в 18:31
Хм, интересно, хотя и очень хитро)
18.01.2008 в 04:39
Продолжайте проливать свет на сие. Заинтересовало.
19.01.2008 в 21:39
Интересное методика, Но, отложу статью на понедельник. Для более вдумчивого чтения.
Уж как-то немного непонятно. “как”?
20.01.2008 в 05:16
что именно “как” ?
03.02.2008 в 01:48
статья толковая, обновил свою БД свежей информацией
30.07.2008 в 13:08
Если можно, то хотелось бы узнать более подробно о том, какое место занимает тестирование во всем этом процессе. То есть, как часто происходит тестирование, завозятся ли ежедневные билды в течении всех 30 дней?
спасибо
И как обычно происходит планирование тестирования в связи с таким способом разработки. Если есть практика, поделитесь плиз
30.07.2008 в 15:36
К сожалению практиковать такие методы разработки еще не приходилось. Но в скором времени думаю смогу поделиться некоторой информацией по этому поводу.