Гибкая методология для мобильной разработки
Agile development is especially useful for mobile app development. The agile methodology provides our clients with a continuous feedback loop. Sourcebits mobile app design and development clients see milestones every 2–3 weeks. They aren«t left to wait until the very end of the project. Agile development for mobile apps means clients provide feedback every step of the way to ensure the success of the project. — Joe Chen, CTO, Sourcebits
Не секрет, что разработка под мобильные платформы имеет важные отличительные характеристики, относящиеся к большинству фаз жизненного цикла, такие как:
- необходимость короткого времени доставки продукта на динамичный рынок, и дальнейших постоянных обновлений;
- большое количество пользователей со всего мира;
- сложность в выявлении требований к приложению, в том числе по причине трудностей в идентификации стейкхолдеров;
- высокая вероятность изменений потребностей и ожиданий пользователей, и соответственно необходимости вносить изменения по ходу разработки;
- высокий темп технической эволюции — новые устройства, релизы ОС, ЯП, технологии мобильной связи & IoT, и пр.
Для того чтобы соответствовать этим характеристикам, снизить степень риска, и упорядочить процесс мобильной разработки — широко применяется методология Agile с ее адаптивным (допустимость частых изменений), итеративно-инкрементальным (обратная связь с заказчиком на каждой итерации, и множественные релизы), кооперативным (плотное сотрудничество разработчиков, заказчика и конечных пользователей) и простым (легко понять, менять и улучшать) подходом к разработке.
Agile
Agile — это серия подходов к разработке программных продуктов путем непрерывной и быстрой поставки ценного рабочего функционала самоорганизованной командой профессионалов в сотрудничестве с заказчиком.
Agile — это комбинированный вариант итеративной и спиральной моделей жизненного цикла: пошаговая разработка и наличие готовых фрагментов работающего ПО, взятые из итеративной модели + главенствующая роль человеческого фактора и анализ возможных рисков, взятые из спиральной модели.
Преимущества Agile, и причины, по которым ее применяют компании, хорошо были проилюстрированны в ряде известных исследований: State of Agile, CHAOS Report, Agile Quantitative Assessment.
State of Agile 2017: основные причины, по которым применяют Agile
Для более глубокого понимания Agile, хорошей идеей также будет ознакомиться с манифестом гибкой методологии разработки и ее 12 принципами.
Agile для мобильной разработки
Как было отмечено, Agile позволяет адаптировать процессы к неустойчивым потребностям мобильной области. Agile обеспечивает гибкость для понимания рынка, структурирования продукта, и его выпуска в короткие сроки.
За последние несколько лет был разработан ряд фрейморков, подходящих для применения в мобильной сфере: Mobile-D, MASAM, Hybrid, Scrum, SLeSS.
Эволюция гибкой методологии разработки для мобильного ПО (Источник изображения)
Scrum и SLeSS являются наиболее современными, при этом в основе SLeSS лежит тот же Scrum. Самая первая попытка адаптировать Agile для мобильной разработки — Mobile-D — также вызывает интерес, прежде всего по той причине, что включает в себя элементы инженерных практик XP.
Scrum и XP будут рассмотрены подробнее далее.
Scrum
Scrum — это одна из agile-методик, в которой создание продукта происходит в виде серии итераций фиксированной продолжительности. Методика делает акцент на качественном контроле процесса разработки, на управлении задачами в командной среде разработки.
В общем случае, Scrum предполагает работу над проектом короткими итерациями (обычно 2–4 недели), каждая из которых является уменьшенным вариантом проекта, и включает все задачи, необходимые для выдачи прироста по функциональности.
Каждый раз когда новая фича, модуль или обновление завершено, осуществляется тестирование. Благодаря тестированию во время разработки, возможные баги исправляются вовремя, что в итоге приводит к гораздо более стабильному продукту.
По окончанию итерации заказчик получает новую версию продукта, и, если требуется, проект или какая-либо его часть пересматривается. Здесь также учитывается обратная связь от конечных пользователей. Затем цикл реализации запускается снова. В итоге создается решение, которое максимально точно соответствует требованиям заказчика и востребовано рынком.
Процесс Scrum (Источник изображения)
Основные инструменты Scrum:
- Беклог продукта (Product Backlog);
- Пользовательские истории (User Stories);
- Планирование спринта (итерация в Scrum);
- Беклог спринта (Sprint Backlog);
- Доска задач (в виде физической или цифровой, например, внутри JIRA)
Пример доски задач
- Диаграмма сгорания задач (Burndown Chart);
- Быстрые совещания (стендапы);
- Обзор спринта (демо и ретроспектива).
XP
Agile-методика XP (Extreme Programming) сфокусирована на инженерной стороне развития продукта. Это системный подход к программированию. В то время как Scrum уделяет больше внимания управлению и выпуску, XP сосредоточена на процессе производства. XP включает практики, существенно улучшающие качество конечного продукта:
- Непрерывная интеграция (Continuous Integration (CI))
- Автоматизированное тестирование;
- Рефакторинг;
- Ревью кода;
- Парное программирование;
- Стандарты кодирования, и другие.
Адаптация методик
Довольно часто в мобильной разработке классические методики необходимо адаптировать с учетом особенностей проекта, команды и заказчика. Некоторые варианты такой адаптации:
- модификация временных рамок agile-практик. Например, сокращение времени спринта до 1 недели — как правило, заказчик приложения желает получать новые релизы, а команда получать feedback, как можно чаще. Другой пример: ретроспектива может быть раз в месяц или каждую итерацию, в зависимости от потребностей проекта;
- модификация реализации agile-практик. Например, проведение асинхронных стендапов через Slack/Stride/др. Если команда работает удаленно — это особенно актуально. Другой пример: в связи с зачастую «туманными» требованиями заказчика, и соответствующими трудностями команды при планировании работ, интересным смотрится Dual-Track Scrum;
- модификация набора agile-практик. Очевидно, что не всегда нужно включать в работу сразу все инструменты выбранной методики, особенно в стартапе. Поэтому сначала могут быть выбраны только самые необходимые и «работающие».
Что насчет Waterfall?
Стоит отметить, что нельзя сказать определенно о неприменимости традиционной водопадной методологии с ее последовательными фазами в мобильной разработке. Всё зависит от специфики конкретного проекта. Существуют примеры проектов (например, выполняющие сверх-критические работы; в совершенно новой области, требующей предварительных исследований; c большим размером, сложностью и длительностью срока разработки; государственные контракты), сущность которых противоречит принципам Agile, и тогда водопад — подходящий выбор. Однако таких проектов в коммерческой разработке очень мало.
Итог
Мобильный проект часто подвержен внутренним или внешним неопределенностям, таким как нечетко определенные требования или частое изменение потребностей пользователей, поэтому вполне благоразумно будет планировать его жизненный цикл, используя какую-либо agile-методику, или, как это часто бывает на практике, их сочетание. Хорошие результаты показало применение Scrum и XP.
Английская версия доступна здесь.
- Вольфсон Б. Гибкие методологии разработки, версия 1.2, 2012
- Corral, L., Sillitti, A., & Succi, G. Agile Software Development Processes for Mobile Systems, 2013
- Spataru A. Agile Development Methods for Mobile Applications, 2010
- http://sourcebits.com/app-development-design-blog/what-is-agile-development-for-mobile-apps
- https://www.infoworld.com/article/2624279/agile-development/agile-programming-10-years-on--did-it-deliver-.html