Приглашаем всех желающих посетить бесплатные пробные занятия по курсам МВА и профессиональной подготовки. Занятия проходят в реальных группах, никаких постановочных занятий. Ознакомиться с расписанием пробных занятий, выбрать заинтересовавшее и зарегистрироваться на него можно здесь
Внедрение методологии Agile в проектах разработки систем автоматизации
Расулов Р.Т.
выпускник группы MBA CIO-17
Школа IT-менеджмента
АНХ при Правительстве РФ
Введение
Проекты разработки систем автоматизации, как и любые другие проекты, имеют стандартный набор ограничений: сроки, ресурсы, бюджет, качество. Как и в других проектах, в проектах разработки программного обеспечения стоит задача оптимизации этих показателей.
Данная тема особенно актуальна в условиях текущего экономического кризиса, существенно ограничивающего IT-бюджеты и усилившего конкуренцию на рынке разработки заказного программного обеспечения.
В нестоящее время особенно важны технологии и методологии, которые позволяют оперативно и эффективно создавать новые инструменты, при этом на первое место выходят технологии и методологии, которые позволяют с минимальными затратами достигать бизнес-целей заказчика.
Происходящие на рынке изменения требуют внедрения новых подходов к созданию программного обеспечения. Если раньше представители заказчика работали с выделенными аналитиками, которые передавали их требования разработчикам, то теперь компании стремятся напрямую вовлекать заинтересованные стороны в дискуссию с первых же этапов планирования и разработки ПО. Активные обсуждения и согласования на основании бизнес-задач дают возможность оперативно выявлять потребности заказчика. Таким образом, вырабатывается новая стратегия, предусматривающая совместную работу над требованиями. Чем раньше – на этапах планирования архитектуры, разработки дизайна – выявляются ошибки, тем дешевле обходится их исправление и стоимость всей разработки ПО.
Данная работа посвящена оптимизации процесса разработки систем автоматизации за счет более эффективного использования ресурсов, повышения качества выполнения работ и снижения сроков путем применения методологии Agile, предлагаемой как расширение методологий, построенных по итеративному принципу и нацеленной на быструю и эффективную разработку инновационных продуктов.
Agile характеризуется облегченными, неформальными и высоко адаптивными процессами разработки, берущими основу в теории хаоса, теории систем, системном мышлении, системной динамике, теории двойных циклов обучения, обучающих организаций, адаптивных систем и базируется на четырех основных принципах: итеративная разработка, получении обратной связи, ограничение числа участников команд (групп) разработки, гибкость технологий разработки.
В настоящее время методология Agile достаточно популярна и может восприниматься как путь решения большинства проблем, существующих в проектах разработки ПО, однако, это далеко не так – данная методология эффективна далеко не всегда. В понимании и применении ключевых принципов Agile существуют серьезные проблемные зоны. При внедрении необходимо избежать риска погони за невозможным и направить усилия в направлении, дающем реальные результаты.
Цель исследования – выработка критериев, позволяющих определить эффективность применения методологии Agile в проектах разработки систем автоматизации.
В работе проводится сравнительный анализ методологий разработки с точки зрения применимости в различных условиях, даны конкретные рекомендации по применению методологии Agile в проектах разработки система автоматизации и разобраны типичные ошибки и проблемы, возникающие при внедрении Agile.
Методологической базой для исследований стали публикации в литературе, методики по внедрению методологий разработки программного обеспечения, а также публикации в открытых источниках и статистические исследования, данные о ходе выполнения проектов компании Luxoft (разработчик №1 высокотехнологичного ПО в Восточной и Центральной Европе, «The Black Book of Outsourcing» аналитическая компания Datamonito, 2009) [1].
Современные методологии разработки программного обеспечения
Хотя спектр методологий применяемых в настоящее время при разработке программного обеспечения и систем автоматизации весьма широк, так или иначе, все они сводятся к 2 моделям: водопадной и итеративной. Если рассматривать методологии не с точки зрения разбиения на стадии выделения ролей и артефактов, производимых в процессе разработки, а с точки зрения получения значимых результатов и эффективности, имеет смысл сравнивать методологии по степени итеративности и степени формальности в оформлении разработки.
Если рассмотреть наиболее распространенные на данный момент в России методологии разработки, то можно получить следующее распределение:
Большая степень итеративности способствует минимизации рисков, связанных со временем выхода продукта и соответствия ожиданиям заказчика.
Большая степень формализации способствует получению заранее известного результата, дает возможность осуществления формального контроля, однако, не дает гарантий соответствия результатов реальным потребностям на момент окончания разработки.
Эффективность Agile
Статистика улучшения качественных показателей в результате применения Agile-практик:
Особенности методологии Agile
Методология Agile – набор практик, обеспечивающий достижение значимых результатов в минимально короткие сроки и направлена на сокращение издержек, связанных с производством ненужных артефактов, а также на обеспечение работы в условиях изменения требований.
В отличии от других итеративных методологий, Agile делает упор на коммуникации, выводит на первый план команду разработки, а также задает структуру итерации.
Основной метрикой Agile-методов является рабочий продукт. Отдавая предпочтение непосредственному общению, Agile-методы уменьшают объем письменной документации по сравнению с другими методами.
Методология базируется на следующих принципах, зафиксированных в Agile Manifest:
1. Люди и их взаимодействие важнее, чем процессы и инструменты;
2. Работоспособное ПО важнее, чем обширная и детальная документация;
3. Сотрудничество с заказчиком важнее, чем переговоры по условиям контракта;
4. Реагировать на изменения важнее, чем следовать плану.
Agile-методология более других позволяют вносить изменения с гораздо меньшими усилиями и уровнем затрат. Agile-разработка хорошо подходит как для проектов, требования к которым эволюционируют в процессе разработки, так и когда заказчику бывает трудно полностью сформулировать требования с самого начала.
Важным аспектом для Agile-проекта является то, что вовлеченность клиента в разработку ПО не ограничивается лишь первой стадией формирования требований. Методология предполагает продолжительное активное участие на всех этапах и обязательную поддержку со стороны руководства. Постоянное привлечение к процессу конечных пользователей является неотъемлемым условием успешного завершения проекта и свидетельствует о высокой практической ценности подхода, гарантирующего наиболее полный охват всех необходимых изменений.
Особенности применения Agile при разработке систем автоматизации
Проекты разработки систем автоматизации характеризуются, как правило, большой продолжительностью и объемом работ. Разработка детальных спецификаций на всю систему в начале проекта в таких условиях довольно затруднительна и малоэффективна. В такой ситуации проще применять итеративный подход начав с разработки высокоуровневой архитектуры, отвечающей целям и соответствующей особенностям бизнеса и детализировать требования в процессе разработки системы. При наличии ресурсов, система может быть разделена на модули, работа над которыми может вестись параллельно.
Итеративный, инкрементальный подход Agile хорошо подходит для решения подобной задачи. Преимущество Agile в данном случае обусловлено следующими факторами, являющимися честью методологии:
– Фиксированная длительность итерации
– Значимый результат в конце каждой итерации
– Непрерывная интеграция
Все это позволяет синхронизировать работу над отдельными модулями, регулярно получая значимые для бизнеса результаты.
Ориентируясь на Agile, при разработке архитектуры необходимо помнить об особенностях подхода, которые накладывают жесткие ограничения на разрабатываемую архитектуру: видение полной картины всеми членами команды, гибкость важнее, чем следование плану. Данные ограничения приводят к тому, что функционал, над которым работают отдельные команды, должен быть достаточно независим.
Составляющие успешного внедрения
К ключевым факторам успешного внедрения Agile в проектах автоматизации можно отнести:
– следование рекомендациям по планированию
– использование методов улучшения и адаптации
– наличию системы мотивации, нацеленной на поддержание работы в команде
– наличие эффективной коммуникационной среды
Методы планирования
В Agile применяется 2-х уровневое планирование: высокоуровневое планирование релиза и низкоуровневое планирование итерации.
План релиза характеризуется долгим (несколько месяцев) горизонтом планирования, относительно высокой погрешностью и относительно низкой степенью детализации. План итерации напротив, характеризуется коротким периодом времени, и обладает высокой точностью и степенью проработки.
В классическом варианте методологии устанавливается относительно небольшая (1,5 - 4 месяца) длительность релиза. Релизы определяются датой, темой, запланированным набором features. При этом переменной величиной является объем работ, а не дата или качество. Для обеспечения данного принципа осуществляется приоритизация требований, высокоприоритетные требования реализуются в первую очередь. Планирование осуществляется таким образом, чтобы в конце каждой итерации осуществлялся прирост полезной функциональности. Данный подход позволяет обеспечить: ранний отклик пользователя, частую интеграцию системы, соблюдение сроков релиза, лучшее соответствие требованиям рынка. Ключевым является принцип обеспечения ответственности со стороны команды за выполненную работу в конце итерации. Для этого команда должна учувствовать в создании плана итерации и связывать себя обязательствами по его выполнению.
Разработка требований откладывается на как можно более поздний момент времени, который зависит от критичности требования для проекта и типа требований. При планировании релиза требования базируются на идентификации наиболее важных возможностей системы и разрабатываются до степени, при которой можно сделать предварительную оценку «по порядку величины». При планировании итерации осуществляется проработка требований до степени, при которой можно сделать разумную оценку длительности.
Методы улучшения и адаптации
Ключевым фактором в проектах, осуществляемых по методологии Agile, является раннее и постоянное тестирование. Тестирование не может быть отложено и должно стартовать с первой итерации. Интеграционное и тестирование рекомендуется проводить как можно чаще. Раннее начало тестирования приводит к раннему обнаружению проблем, раннему выявлению рисков, повышению качества.
Процесс работы организуется так, что вся команда рассматривает результаты процесса, делает это часто, делает из этого выводы, настраивает процесс для улучшения результатов в следующей итерации. При этом, чем короче итерация, тем интенсивнее обучение.
Система мотивации и корпоративная культура
Три из четырех постулатов Agile-манифеста имеют непосредственное отношение к коммуникациям внутри проектной команды и коммуникациям с заказчиком: Люди и их взаимодействие важнее, чем процессы и инструменты; Сотрудничество с заказчиком важнее, чем переговоры по условиям контракта; Реагировать на изменения важнее, чем следовать плану.
Эффективное следование данным принципам возможно только при правильной мотивации команды и наличию в компании корпоративной культуры, поддерживающей командную работу. Традиционная аттестация и система премирования часто создают конкуренцию. Важно помнить о том, что если попытки менеджера создать среду, способствующую командной работе, вступают в противоречие с системой аттестации компании, члены коллектива будут делать то, на что их ориентирует система аттестации.
Один из постулатов традиционной системы аттестации и вознаграждения: индивидуальную эффективность можно однозначно и достоверно оценить. Это истинно только в том случае, если эффективность каждого конкретного человека может быть объективно измерена и практически нет взаимозависимости разных работ. В проектах разработки программного обеспечения, особенно с применением Agile, это условие не может быть соблюдено. Таким образом, система мотивации в первую очередь должна поддерживать достижение общих целей. Важным аспектом является корпоративная культура, которая может стать источником нематериальной мотивации.
Коммуникативная среда
Аспект коммуникаций крайне важен для любого проекта разработки программного обеспечения, но в Agile он является ключевым. Эффективная коммуникация достигается за счет применения техник эффективной проектной коммуникации (Scrum- и Scrum of Scrum-митинги, демонстрации, ретроспективы) и применения программных продуктов адаптированных для поддержки коммуникации в проектах, выполняемых по методологии Agile: системы управления требованиями, дефектами, задачами, документацией.
Заключение
Хотя в целом Agile-проекты выводятся на рынок на быстрее, чем ПО, выполненное по традиционным методам разработки, а индекс продуктивности (количество функционала, выполненного одним разработчиком) в них выше, методология применима далеко не всегда.
Применение Agile может дать отрицательный эффект:
– в инфраструктурных проектах, со сложным процессом поддержки;
– в проектах, требующих длинного формального цикла подтверждения результатов;
– в случае невозможности коммуникации с конечными пользователями и стейкхолдерами проекта или отсутствии экспертизы в предметной области у членов команды;
– если члены команды не готовы к постоянным изменениям в методах и характере работы, не обладают достаточной квалификацией, личностной или профессиональной зрелостью.
При этом, в отсутствии вышеперечисленных факторов, в проектах, требующих быстрого получения значимых результатов, инновационных проектах и проектах с высокой вероятностью изменения требований, Agile-практики крайне эффективны. Agile может эффективно применяться как в проектах базирующихся как на Tile and Materials, так и на Cost-Reimbursable и Fixed-Price контрактных моделях.
Методология применима как в локальных проектах, так и в проектах с географически-распределенными командами, способна улучшить коммуникации между заказчиком и командой разработки, процессы отслеживания статуса, управление конфигурациями, решить проблемы неточного планирования.
Ссылки
- Luxoft - #1 IT Outsourcing Provider in Eastern and Central Europe in the 2008 Black Book of Outsourcing, 06/2009, http://www.luxoft.com/press/press_release_article.html?id=8609
- Version One (2008), "State of Agile Development 2008" survey, www.versionone.com, 9(7).
- David F. Rico, What is the Return on Investment (ROI) of Agile Methods? Sept.08, www.davidfrico.com, 7 (7(5)).
- Ambler S.W. (2006), Agile adoption rate survey:March 2006. Retrieved September 17, 2006, from http://www.ambysoft.com/downloads/surveys/AgileAdoptionRates.ppt
Copyright © 2009 Расулов Р.Т.
- Войдите на сайт для отправки комментариев