понедельник, 2 февраля 2009 г.

Agile: почему именно эта модель?

Клиент всегда прав (с Agile он прав очень часто)

К классическим моделям разработки относится водопадная [waterfall] модель. Её отличает строгая последовательность: составление плана - написание документации (под ключ) - проектирование - разработка - тестирование - ввод в эксплуатацию. В этой цепочке требования клиента должны быть жёстко описаны, и только после этого начинается работа над дизайном (архитектурой) проекта. Но кто может дать гарантию того, что требования не изменятся? Только сам клиент, но такая ситуация редка, да и невозможна, ибо заказчику не безразличны его вложения. В обратном случае вышло бы так: деньги я вложил, делайте как сочтёте нужным, а в конце меня всё устроит. Нонсенс! Требования меняются: как со стороны клиента (уточнения, пересмотры, пожелания), так и со стороны среды, в которой будет крутится продукт.

И вот здесь кроется коварство такой рельсовой модели: на согласование уходит порядочный промежуток времени, исписывается добротная стопка бумаги, наработки теряют смысл (по крайней мере для текущего проекта), начинается торговля между заказчиком и исполнителем.

В случае модели Agile существует постоянное взаимодействие разработчиков с клиентом, что направлено на снижение доли ошибки в требованиях и мгновенное реагирование на изменение последних.

Возврат инвестиций

Другая немаловажная ситуация связана с материальными вкладами клиента. Если что-то пойдёт не так, и заказчик пожелает разорвать отношения с разработчиком, то в случае водопадной модели он останется без денег и без ПО. Это почти наверняка так, поскольку цикл разработки не завершён, то есть, например, не проводилось тестирование, а следовательно, продукт сырой и никому не нужный. Что в случае с Agile? Здесь иначе, даже вот как: клиент с первых итераций получает работающее ПО (пусть и не обладающее всеми нужными функциями, но стабильное).

Другой момент - время разработки. Оно может составлять годы (когда проект очень крупный, а работа сверх-ответственная). Колебания среды (стандартов, аппаратного обеспечения) могут сыграть вполне состоявшуюся шутку. План, разработанный когда-то, оторванный во времени от проектирования и программирования, потеряет актуальность вот сейчас, когда мир изменился. Для водопадной модели это катастрофа, связанная с большими материальными и временными затратами.

Мыслить перспективой

Модель Agile исповедует работу небольшими итерациями, в которые входят работы из всех этапов проектирования: составление плана, анализ требований, разработка архитектуры, программирование, тестирования, ввод в эксплуатацию (только нагрузка на каждый вид работы разная от итерации к итерации: на первых шагах актуальна проработка прецедентов и требований; на других - программирование).

Ещё одна характерная черта - написание тестов - также происходит при участии заказчика. Тестовые модули определяют код, способствуют тому, чтобы последний принимал более простую форму: разработчики начинают задумываться, что же от них требуется, и искать лучший (читай лёгкий) путь для достижения этого. Таким образом, код пишется под тесты, а затем проверяется этими же самыми тестами. Разумеется, что звезду таким подходом не схватить, но оно и не требуется.

Вместо вывода.

Agile - ваш выбор (как клиента), если:

  • результат нужен как можно раньше
  • вы не знаете что вам нужно, но хотите узнать
  • вы желаете контролировать риски

7 комментариев:

Андрей комментирует...

Во-первых хотелось бы сказать что цвет текста совершенно аццтойный - нихера вапще не разоборать. Если имеется желание чтобы кто то заглянул сюда второй раз - то мне кажется логичней цвеовую схему как то сменить или сделать более контрастной.
Во-вторых - в тексте нету определения - что такое Agile. Я понял это не вполне.
В-третьих в жизни это неприменимо совсем. Заказчику проще не отдавать проект год, н потом уже показать работающий пример чем объяснять по 10 раз - а почему это не работает , а почему то , а мы же заказывали вот это, вот то. И .. нельзя получить частично работающую систему. Это как каша - она либо в тарелке, либо рядом. Третьего не надо.

Mikhail комментирует...

Спасибо за совет, буду менять.

Определение есть вот тут Agile software development. Модель разработки программного обеспечения

Насчёт последнего: есть клиенты, которые хотят всё и сразу, но готовые терпеть. Но есть такие, которые хотят держать руку на пульсе, контролировать процесс, быть вовлечёнными и направлять. В последнем случае они получают неполнофункциональное ПО, но ведь они сознательно на это идут. Начиная осваивать продукт уже сейчас, они сохраняют время на последующем внедрении и соответственно обучении персонала. Если же, написав ТЗ, составив перечень требований, проходит год, а затем в конце цикла разработки сдаётся проект клиенту, то у последнего могут быть вопросы типа: "А почему это так? Должно быть по другому" - или банально расходится мнение в видимости каких-то функций (ведь только заказчик знает, что ему нужно).
Посему вот что: клиент сам решает, как ему быть. Или он работает в команде с разработчиками (Agile), или доверяет им полностью (waterfall).

Андрей комментирует...

Ну тогда я не знаю примеров, когда бы разработка велась НЕ по принципам Agile. Сегодня все умеют считать деньги и понимают потребность в автоматизации.
Разработка НЕ по принципам Agile возможна только для проектов автоматизации, которые направлены не на собственно автоматизацию, а на увеличение капитализации компании. Например сюда относится чаще всего внедрение SAP R/3.

Анонимный комментирует...

From Spike to Sphin][:
Наконец добрался до твоих дебрей... Почитал, так сказать.
Про Агилу антиресно, признаюсь ,что читал увлеченно, хотя спать хотел.
Хвалю...
P.S. по ссылочке тоже прошел: http://xmages.net/out.php/i67065_1227081876939.jpg - как ты сказал, правда прикольная \смайл щерится\

Андрей комментирует...

Цвета стали гораздо приятней. НЕ потому что я фанат минималистичного светлого дизайна - а потому что просто читать стало комфортней и приятней.

Анонимный комментирует...

Искал чем бы продолжить обучение по проектированию и наткнулся на такую подборку, которая как раз в тему:

http://agileconsulting.ru/wiki/index.php?title=Agile_%D0%BA%D0%BD%D0%B8%D0%B3%D0%B8

Качнуть нельзя, но зато ясно что искать ;)

/МУХ/

Mikhail комментирует...

Интересный список литературы, спасибо. Как исходный пункт для поиска - выше всяких похвал. Из этого перечня уже читаю ряд книг.