Аджайл глоссарий

В мире Agile-разработки, где скорость, гибкость и эффективность играют решающую роль, понимание основных терминов и концепций является ключом к успешной работе. Ниже приведен глоссарий, объясняющий основные термины Agile (Аджайл) с краткими и понятными определениями. Он поможет как новичкам, так и опытным практикам Agile в их повседневной работе, обеспечивая ясность и точность в общении и понимании.

Приемочное тестирование
Приемочное тестирование – это формальная проверка, которая проводится для определения, соответствует ли система установленным критериям приемлемости, позволяя клиенту принять или отклонить систему.

Методология гибкой разработки ПО
Гибкая разработка программного обеспечения (Agile Software Development) акцентирует внимание на сотрудничестве и гибкости в реагировании на изменения на протяжении всего цикла разработки. Основные принципы включают простоту кода, частое тестирование и поэтапное предоставление функциональности приложения после каждой итерации.

Обработка отставания
Обработка отставания (Backlog Refinement) – это процесс добавления новых пользовательских историй в отставание, переориентация существующих историй по мере необходимости, разбиение крупных историй на более мелкие задачи. Команда проводит сеанс обработки отставаний один раз за итерацию, вместо периодического анализа в течение всего цикла.

Нарушение сборки
Нарушение сборки (Build Break) – это ситуация, когда изменения, внесенные в репозиторий исходного кода, приводят к сбоям в процессе сборки. Это требует немедленных действий со стороны разработчиков для исправления сборки и избежания проблем для остальных членов команды.

Процесс сборки
Процесс сборки (Build Process) – это последовательность шагов, которые история проходит от создания до развертывания. Процесс определяет, каким образом предоставляется программное обеспечение, включая различные этапы и проверку качества на каждом этапе.

График выгорания (Burn-down Chart)
График выгорания — это инструмент, который отображает общее количество оставшихся часов в течение дня. Он позволяет наглядно увидеть, как команда продвигается в выполнении задач, запланированных на спринт. По оси X отображаются дни в спринте, а по оси Y — оставшееся количество усилий.

Курица (Chicken)
В Scrum термин «курица» используется для обозначения человека, заинтересованного в проекте, но не принимающего активного участия в работе над задачами в текущей итерации. Курицы могут наблюдать за работой команды, но у них нет права голоса.

Непрерывная интеграция (Continuous Integration, CI)
Непрерывная интеграция — это практика, в рамках которой члены команды регулярно интегрируют свою работу (например, каждый час или как минимум раз в день). Каждая интеграция проверяется автоматизированным сборочным процессом, который также выполняет тестирование, чтобы быстро и автоматически обнаруживать ошибки интеграции. Главная цель непрерывной интеграции — избежать проблем с интеграцией кода, которые могут замедлить разработку.

Межфункциональная команда (Cross-functional Team)
Межфункциональная команда состоит из членов с различными функциональными навыками и специализациями, необходимыми для разработки проекта от начала до конца. Это позволяет команде работать над проектом без необходимости зависеть от внешних ресурсов.

Клиент (Client)
Клиент обычно определяется как лицо, группа лиц или организация, которые являются получателями или пользователями продукта. Клиенты могут быть как внутренними, так и внешними по отношению к организации, их представители могут представлять отдельные лица, отделы или целые группы.

Ежедневный Standup
Ежедневный стендап — это короткое ежедневное совещание команды, которое проводится в начале каждого дня. Обычно его длительность составляет от 5 до 15 минут, и участники стоят, чтобы подчеркнуть его краткость и эффективность.

«Готово» (Definition of Done, DoD)
«Готово» — это условие, при котором продукт считается завершенным и готовым к принятию. Определение этих критериев является обязанностью всей команды, включая бизнес. Обычно устанавливаются три уровня «Готово», в зависимости от степени завершенности работы.

Готово (Done)

Готово. Разработано, работает на платформе разработчика.

Готово. Проверено путем запуска модульных тестов, просмотра кода и т. д.

Готово. Качество подтверждено функциональными тестами, обзорами и т. д.

Точные критерии того, что составляет «Готово», варьируются для удовлетворения конкретных потребностей различных организаций и инициатив.

Эпик (Epic)

Эпик — это очень большой пользовательский запрос, который впоследствии разбивается на более мелкие истории. Эпики часто используются для включения новых идей и смежных историй, которые будут разработаны в последующих спринтах. Они помогают Agile-командам эффективно управлять и улучшать свои продукты.

Оценка (Estimation)

Оценка — это процесс согласования историй или задач в отставании продукта. В гибких проектах оценка выполняется командой, ответственной за предоставление работы.

Экстремальное программирование (Extreme Programming, XP)

XP — это гибкая методология разработки программного обеспечения, направленная на улучшение качества программ и оперативную реакцию на изменяющиеся требования клиентов. Основные принципы XP включают в себя частые выпуски в короткие циклы разработки, парное программирование, модульное тестирование, непрерывную интеграцию и многое другое.

Функция (Feature)

Функция — это согласованная бизнес-функция или атрибут программного продукта или системы. Она обычно состоит из нескольких детальных требований и служит основой для организации историй.

Последовательность Фибоначчи (Fibonacci Sequence)

Последовательность чисел, в которой следующее число получается путем сложения двух предыдущих. Она используется для оценки размеров историй в Agile, например, в методе покер-планирования.

Помеха (Impediment)

Помеха — это препятствие, мешающее членам команды работать максимально эффективно. Каждый член команды имеет возможность объявить о помехе на ежедневном стендовом совещании. Задача Scrum Master — устранить помехи как можно быстрее, чтобы обеспечить эффективную работу команды.

Итерация (Iteration)

Итерация — это период, который длится от 1 недели до 2 месяцев, в течение которого команда разработки Agile выполняет обновление завершенного программного обеспечения. Все этапы жизненного цикла системы (требования, дизайн, код и тестирование) должны быть завершены в ходе итерации и продемонстрированы для успешного принятия пользователем.

В начале итерации бизнес или владелец продукта определяет следующий (самый высокий приоритет) кусок работы для команды. Затем команда разработчиков оценивает уровень усилий и обязуется завершить сегмент работы во время итерации.

Канбан (Kanban)

Kanban — это инструмент, основанный на принципах бережливого производства и связанный с отраслью гибких практик, которую называют «Бережливая разработка ПО».

Основное различие между Kanban и Scrum заключается в том, что Scrum ограничивает выполняемую работу спринтами и лимитами, в то время как Kanban ограничивает количество работ, которые могут быть выполнены за один раз (например, N задач или N историй).

Бережливая разработка ПО (Lean Software Development)

Бережливая разработка программного обеспечения направлена на оптимизацию потока производства программного обеспечения.

Парное программирование (Pair Programming)

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

Свинья (Pig)

Свинья — это член команды, который отвечает за выполнение задачи в рамках активной итерации. В отличие от «Курицы», свиньи активно участвуют в проекте.

Покер планирования (Planning Poker)

Покер планирования используется для оценки усилий или относительного размера задач в области разработки программного обеспечения. Это вариант «широкополосного предсказателя» с использованием колоды карт, на которых указаны значения, представляющие количество квантов, необходимых для выполнения работы.

Продукт (Product)

Продукт — это набор функций, интегрированных и упакованных в версии программного обеспечения, которые представляют ценность для клиента или на рынке.

Владелец продукта (Product Owner)

Владелец продукта — это одна из ключевых ролей в Scrum. Обязанности владельца продукта включают в себя:

  • Установление целей и общего видения конечного продукта.
  • Мониторинг проекта.
  • Принятие решений о выпуске официального релиза.
  • Управление резервом продукта.

Резерв продукта (Product Backlog)

Резерв продукта — это список пожеланий, которые клиенты хотят реализовать в долгосрочной перспективе. Он содержит сборник историй и задач, над которыми команда будет работать в будущем.

Владелец продукта поддерживает этот список в соответствии с бизнес-приоритетами и потребностями. Элементы в резерве продукта должны соответствовать бизнес-плану.

Рефакторинг (Refactoring)

Рефакторинг — это изменение существующего кода программного обеспечения для улучшения его общего дизайна. Он обычно не влияет на наблюдаемое поведение программного обеспечения, а улучшает его внутреннюю структуру.

План-релиз (Release Plan)

План-релиза представляет собой график выпуска программного обеспечения в производство. Он содержит основные функции, которые будут предоставлены, а также соответствующие даты выпусков.

Ретроспектива (Retrospective)

Ретроспектива — это ограниченная по времени встреча членов команды в конце спринта, во время которой команда анализирует свою работу, чтобы определить, что удалось и что можно улучшить. Она является ключом к постоянному совершенствованию.

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

Scrum

Scrum состоит из серии коротких итераций, называемых спринтами, каждый из которых заканчивается поставкой готового программного обеспечения.

Команда Scrum (Scrum Team)

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

Команда Scrum несет ответственность за все работы и результаты.

ScrumMaster

ScrumMaster отвечает за поддержание Scrum-процесса и общего состояния команды. Он убеждается в том, что команда полностью функциональна и продуктивна, отсутствуют помехи, мешающие прогрессу команды, и организует церемонию Scrum.

Sprint (Спринт)

В разработке продукта, спринт представляет собой установленный период времени, в течение которого конкретная работа должна быть завершена и подготовлена к рассмотрению. Типичная длина спринта, как правило, составляет не больше 2х недель.

Задержка спринта (Sprint Backlog)

Список функций, пользовательских историй или задач, которые оттягивают рассмотрение продукта.

Планирование спринта (Sprint Planning)

Сессии планирования спринта проводятся непосредственно перед началом нового спринта. На этой сессии команда определяет задачи, которые необходимо достигнуть, и решить, сколько усилий им нужно приложить для завершения данной итерации. Участники — Scrum-мастер и команда Scrum.

Пользовательская история (User Story)

Пользовательская история можно рассматривать как требование, функцию, которая имеет некоторую ценность для бизнеса. Истории описывают работу, которая должна быть завершена. Истории являются основной единицей коммуникации, планирования и переговоров между Scrum-командой, владельцем бизнеса и владельцем продукта.

Истории состоят из следующих элементов:

  • Описание с точки зрения бизнеса
  • Размер, как правило, выражается в сюжетных точках (например, 1, 2, 3, 5)
  • Один или несколько критериев приемлемости, давая краткое описание того, как будет подтверждено история

Задача (Task)

Задачи представляют собой описания реальной работы, которую физическое лицо или пара делает для того, чтобы завершить историю. Они легко управляемые, выполнимые и отслеживаются. Как правило, в истории существует несколько задач.

Timebox (Временное ограничение)

Период времени, выделенный для достижения некоторой цели. В разработке, итерации и спринты являются примерами временных ограничений, которые ограничивают работу в процессе и стадии поэтапного прогресса.

Скорость продвижения (Velocity)

Сколько работы команда может завершить в итерации. Скорость часто измеряется в историях. Скорость также может измерять задачи в часах или эквивалентных единицах.

Работа в процессе выполнения (Work in Progress)

Любая работа, которая не была завершена, но уже была внесена в разработку данного проекта. Любое программное обеспечение, которое было разработано, но не развернуто в производстве можно считать работой в процессе выполнения.