Методика разработки в Интернете

metodika

В настоящий момент наиболее популярным подходом, применяемым при разработке сложных веб-приложений, является agile software development — гибкая методология разработки. Фактически, это целая связка подходов. Их общая идеология, принципы и ценности отражены в специальном документе Agile Manifesto. Сразу следует оговориться, что гибкая методология разработки не подойдет для крупных, транснациональных корпораций. Принципы Agile хороши для небольших веб-студий, когда взаимодействие между людьми происходит лицом к лицу.

Agile-разработка большого проекта разбивается на отдельные итерации. Каждая итерация состоит из проектирования, кодирования и тестирования и длится короткий срок времени, не более трех недель. Процесс очень гибкий. Заказчик может вносить коррективы в любое время в течение разработки. Более того, в рамках agile приветствуется постоянная обратная связь. Как правило, при гибкой методологии все команды физически работают в одном офисе. Люди и их взаимодействие в идеологии agile считаются приоритетнее инструментария и стандартов. Работающий продукт важнее идеальной документации к нему. Ежедневное взаимодействие с поставщиком (в его роли могут выступать клиент, бизнес-аналитик или менеджер проекта) приводит к частым обновлениям продукта (раз в неделю, а иногда и чаще).

Критики небезосновательно утверждают, что планирование и agile — это две несовместимые вещи. Жесткий план в рамках гибкой разработки невозможен. Иногда приходится менять всю философию программного продукта. Также критики говорят о зацикленности команд agile на принципе “если код работает — не трогай”, при котором часто не учитываются все возможные форс-мажорные обстоятельства. Порой бывает непросто дорабатывать созданный простейшим образом код, который содержит массу потенциальных уязвимостей и не учитывает огромное многообразие возможных факторов.

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