В статье автор анализирует гибкие методологии разработки программного обеспечения, такие как Agile, Scrum, Kanban. Выделяет преимущества и недостатки для Scrum, Kanban.
Ключевые слова: agile, scrum, kanban, гибкая методология, разработка программного обеспечения, спринт, требования, управление проектом.
Развитие информационных технологий с каждым годом все стремительнее набирает обороты, появляется большое количество крупных проектов по разработке программного обеспечения, растет профессиональный уровень команды (сюда входит: менеджер проекта, группа анализа, группа тестирования, группа разработки), и вместе с этим выходит на новый уровень информатизация общества. Однако не всегда получается разработать качественный программный продукт, который бы удовлетворял потребностям Заказчика и информационного общества в целом. Поэтому важно уделять внимание одной из составляющих процесса разработки программного обеспечения — управлению проектом. От правильного построения данного процесса зависит выполнение работ в срок, бюджет проекта, качество программного продукта.
Главными проблемами разработки являются незапланированные изменений требований в уже реализованном функционале, неправильное распределение должностных обязанностей, постоянно появляющиеся небольшие доработки, поэтому современная разработка требует правильного и эффективного построения взаимодействия между участниками, и для этого необходимо сделать правильный выбор методологии разработки.
Методология разработки — это совокупность структурированных правил, в которых определяется порядок реализации поставленных задач команде разработки, оценка и контроль со стороны руководителя.
Прежде чем подробнее рассмотреть методологии, представленные на рынке, необходимо определить этапы жизненного цикла [2]:
- Формирование идеи будущего программного продукта (вне зависимости от новизны на ИТ- рынке);
- Структурирование идей, полученных из различных источников (формирование требований);
- Разработка дизайна для будущего ПО;
- Разработка ПО (входит backend, frontend);
- Тестирование (входит функциональное, нагрузочное тестирование и т. д.);
- Внедрение (включает в себя также развертывание на рабочих местах пользователей);
- Сопровождение (включает в себя техподдержку ПО);
- Закрытие.
На основе жизненного цикла программного обеспечения определим гибкие модели разработки.
Наиболее популярными гибкими моделями разработки является: Agile, Scrum, Kanban. Данные методологии нацелены на быструю разработку (1–2 недели), чтобы минимизировать риски и правильно распределить силы команды, поэтому в зависимости от специфики проекта и команды можно сделать выбор в ту или иную сторону.
Agile — итеративный поход к управлению разработки программного обеспечения. Главная особенность заключается в том, чтобы помочь создать направление движения в постоянно меняющихся и появляющихся новых требований к Системе, без отклонения от намеченного пути [3].
Популярность использования гибкой методологии Agile по сравнению с 2017 годом только возрастает, но используется еще не во всех отраслях экономики [6]. Иллюстрация представлена на Рис. 1.
Рис. 1. Диаграмма использования Agile в России
По сравнению с 2017–2018 годами на 7 % выросло использование гибкой методологии, это значит, что качество программного продукта будет со временем вырастать еще больше. Также существенно уменьшился процент компаний, которые в промежуток с 2017–2018 года не планировали использовать Agile. На данный период времени, есть около 30 % компаний, которые не сформировали четкой позиции по использованию гибкой методологии разработки, это может быть связано с негативным опытом использования другими командами внутри компании или имеют мало информации о данной методологии [6].
Выделим 4 основные идеи Agile [1]:
- Взаимодействие между участниками команды ставится выше, чем процессы (включает в себя: личные встречи с каждым членом команды для повышения эффективности и корректировки рабочего процесса);
- Главной целью является программный продукт, документация уходит на второй план (правильно работающий готовый продукт является оценочным средством для определения успешности проекта);
- Постоянное взаимодействие с Заказчиком важнее, чем согласованные условия договора (общение представителей Заказчика с командой разработки положительно сказывается на программном продукте т. к. делается только нужный и правильно работающий функционал);
- Готовность к изменениям (изменения в функционале программного продукта присутствует постоянно, приветствуется даже в конце разработки)
На основе философии Agile вытекают гибкие методологии Scrum, Kanban.
Scrum — методология, главная цель которой наладить взаимодействие команд друг с другом (к слову, scrum с английского «схватка», элемент игры), поэтому участники команд, работающие по такой методологии, проводят частые встречи для обсуждения процесса, организовывают работу, используют определенные инструменты, анализируют свои неудачи и успехи, совершенствуют свои навыки [5].
Выделим 3 главные особенности Scrum [8]:
- Выделяются спринты (с английского «рывок) с фиксированной продолжительностью на весь период проекта, максимум длительности до 4 недель;
- На каждый спринт выделяется определенное количество задач, которые необходимо реализовать команде (формируется по важности и объему, т. к. некоторые задачи реализуются за 2–3 спринта);
- Ежедневно по 15 минут проводятся встречи с командой, где каждый участник рассказывает о том, что ему удалось сделать за один рабочий день, что не получилось и что планирует сделать;
- После каждого спринта функционал размещается на продуктивном стенде, где Заказчик может оценить выполненную работу.
Недостатки Scrum [8]:
- Большое количество совещаний с командой, помимо ежедневных 15 минутных встреч;
- Узкая специализация методов
Kanban — главная особенность методологии это выполнение всех задач точно в срок, жесткое фиксирование количество задач, которые нужно выполнить за данный промежуток времени, использование доски, к которой имеют доступ все члены команды. Доска может делится на 3 части: задачи в очереди, задачи в разработке, выполненные задачи [7].
Выделим 3 основных принципа Kanban [4]:
- Визуализация задач (доска на разбита на разделы, в каждом из которых представлены задачи);
- Составление плана приоритетности задач;
- Жесткое ограничение по одновременному выполнению задач;
Недостатки Kanban [7]:
- Отсутствует возможность долгосрочного планирования;
- Невозможно отследить выполнение задач и эффективность по отдельному сотруднику;
- Уровень команды должен быть высоким, если один из участников тормозит процесс, то это скажется на других и на конечном результате
Таким образом, использование гибкой методологии разработки в первую очередь зависит от приоритетов и возможности команды.
Наиболее популярными гибкими моделями разработки является: Agile, Scrum, Kanban.
Главная особенность Agile заключается в том, чтобы помочь создать направление движения в постоянно меняющихся и появляющихся новых требований к Системе, без отклонения от намеченного пути.
Главная особенность Scrum частые встречи для обсуждения процесса, правильная организация работ, использование множества инструментов, анализ своих неудач и успехов, совершенствование навыков.
Главная особенность Kanban выполнение всех задач точно в срок, жесткое фиксирование количество задач, которые нужно выполнить за данный промежуток времени, использование доски, к которой имеют доступ все члены команды.
Литература:
- Гибкая методология разработки [электронный ресурс] — Режим доступа: https://ru.wikipedia.org/
- Жизненный цикл разработки ПО [электронный ресурс] — Режим доступа: https://beqa.pro/blog/sdlc/
- Atlassian Agile Coach [электронный ресурс] — Режим доступа: https://www.atlassian.com/ru/agile
- Atlassian Agile Coach Kanban [электронный ресурс] — Режим доступа: https://www.atlassian.com/ru/agile/kanban/boards
- Atlassian Agile Coach Scrum [электронный ресурс] — Режим доступа: https://www.atlassian.com/ru/agile/scrum
- Agile Software Development Гибкая методология разработки [электронный ресурс] — Режим доступа: https://www.tadviser.ru/index.php/ %D0 %A1 %D1 %82 %D0 %B0 %D1 %82 %D1 %8C %D1 %8F:Agile_software_development
- Kanban/Agile/Scrum/Lean- гибкие методологии разработки [электронный ресурс] — Режим доступа: https://vc.ru/u/752307-karina-gorbunova/218436-kanban-agile-scrum-lean-gibkie-metodologii-razrabotki
- Scrum: что это и зачем нужно [электронный ресурс] — Режим доступа: https://scrumtrek.ru/blog/agile-scrum/3777/scrum-chto-eto/