Scrum | это... Что такое Scrum? (original) (raw)

Разработка программного обеспечения

Процесс разработки ПО
Шаги процесса
АнализПроектированиеПрограммированиеДокументированиеТестирование
Модели
ИтеративнаяСпиральнаяКаскаднаяV-ModelDual Vee Model
Методологии
Agile (XP, Lean, Scrum, FDD и др.) • CleanroomOpenUPRADRUPMSFDSDMTDD
Сопутствующие дисциплины
Конфигурационное управлениеУправление проектамиУправление требованиями

Scrum — методология управления разработкой информационных систем для гибкой разработки программного обеспечения. Scrum чётко делает акцент на качественном контроле процесса разработки. Кроме управления проектами по разработке ПО Scrum может также использоваться в работе команд поддержки программного обеспечения (software support teams), или как подход управления разработкой и сопровождением программ: Scrum of Scrums.

Содержание

Историческая справка

Регби схватка (Scrum) между Newport и London Welsh в 1904

Подход впервые описали Хиротака Такэути[1] и Икудзиро Нонака[2] в статье The New Product Development Game (Гарвардский Деловой Обзор[3], январь-февраль 1986). Они отметили, что проекты, над которыми работают небольшие, кросс-функциональные команды, обычно систематически производят лучшие результаты, и объяснили это как «подход регби». В 1991 году ДеГрейс и Шталь в книге «Злые проблемы, справедливые решения»[4] ссылались на этот подход, как на Scrum (толкотня; схватка вокруг мяча (в регби)), спортивный термин, приведённый в статье Такэути и Нонакой. Кен Швабер[5] в начале 1990-х использовал подход, который привел Scrum в его компанию. Впервые метод Scrum был представлен на общее обозрение задокументированным, чётко сформированным и описанным совместно Швабером и Джефом Сазерлендом[6] на OOPSLA’96[7] (англ.) в Остине. Швабер и Сазерленд на протяжении следующих лет работали вместе, чтобы обработать и описать весь их опыт и лучшие практические образцы для индустрии в одно целое, в ту методологию, что известна сегодня как Scrum. Швабер объединил усилия с Майком Бидлом[8] в 2001 году, чтобы детально описать метод в книге «Agile Software Development with SCRUM»[9].

Определения

Скрам процессы

Скрам

Скрам (Scrum) — это набор принципов, на которых строится процесс разработки, позволяющий в жёстко фиксированные и небольшие по времени итерации, называемые спринтами (sprints), предоставлять конечному пользователю работающее ПО с новыми возможностями, для которых определён наибольший приоритет. Возможности ПО к реализации в очередном спринте определяются в начале спринта на этапе планирования и не могут изменяться на всём его протяжении. При этом строго фиксированная небольшая длительность спринта придаёт процессу разработки предсказуемость и гибкость.

Спринт

Спринт[10] — итерация в скрам, в ходе которой создаётся функциональный рост программного обеспечения. Жёстко фиксирован по времени. Длительность одного спринта от 2 до 4 недель. В отдельных случаях, к примеру согласно Scrum стандарту Nokia, длительность спринта должна быть не более 6 недель. Тем не менее, считается, что чем короче спринт, тем более гибким является процесс разработки, релизы выходят чаще, быстрее поступают отзывы от потребителя, меньше времени тратится на работу в неправильном направлении. С другой стороны, при более длительных спринтах команда имеет больше времени на решение возникших в процессе проблем, а владелец проекта уменьшает издержки на совещания, демонстрации продукта и т. п. Разные команды подбирают длину спринта согласно специфике своей работы, составу команд и требований, часто методом проб и ошибок. Для оценки объема работ в спринте можно использовать предварительную оценку, измеряемую в очках истории, где 1 очко истории приблизительно равно 1 человекодню. Предварительная оценка фиксируется в резерве проекта. На протяжении спринта никто не имеет права менять список требований к работе, внесенном в резерв проекта.

Резерв Проекта (Product backlog)

Резерв проекта — это список требований к функциональности, упорядоченный по их степени важности, подлежащих реализации. Элементы этого списка называются «пожеланиями пользователя» (user story) или элементами резерва (backlog items). Резерв проекта открыт для редактирования для всех участников скрам процесса.

Резерв спринта (Sprint backlog)

Резерв спринта — содержит функциональность, выбранную владельцем проекта из резерва проекта. Все функции разбиты по задачам, каждая из которых оценивается скрам-командой. Каждый день команда оценивает объем работы, который нужно проделать для завершения спринта[11].

Диаграмма сгорания задач (Burndown chart)

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

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

Существуют разные виды диаграммы:

Дополнительные определения

История спринта (Sprint Story)

Требуемую функциональность, которую добавляют в резерв часто называют историей. Зачастую история имеет следующую структуру: «Будучи пользователем <тип пользователя> я хочу сделать <действие>, чтобы получить <результат>». Такая структура удобна тем, что понятна как разработчикам так и заказчикам.

Остановка спринта (Abnormal Termination)

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

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

Очки за пользовательскую историю

Абстрактная метрика оценки сложности истории, которая не учитывает затраты в человекочасах. Обычно используют одну из следующих шкал: ряд Фибоначчи (1,2,3,5,8,13,21,34,55); линейную шкалу (1,2,3,4 … n); степень двойки (1,2,4,8 … 2n); размеры одежды (XS, S, M, L, XL).

Задачи истории спринта (Sprint Story Tasks)

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

Критерий готовности (Definition of Done (DoD))

Критерии, определяющие степень готовности элемента из журнала пожеланий пользователя.

Скорость команды

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

Роли в скрам-процессе

По методике Scrum в производственном процессе есть определенные роли, разбитые на 2 группы «свиней» и «кур». Эти названия были использованы из-за шутки[12]

Свинья идёт по дороге. Курица смотрит на нее и говорит: «А давай откроем ресторан!» Свинья смотрит на курицу и отвечает: «Хорошая идея, и как ты хочешь его назвать?» Курица думает и говорит: «Почему бы не назвать 'Яичница с беконом'?». «Так не пойдёт», — отвечает свинья, «ведь тогда мне придётся полностью посвятить себя проекту, а ты будешь вовлечена только частично.»

Свиньи создают продукт, тогда как куры заинтересованы, но не настолько — ведь им всё равно, будет ли проект удачным или нет, на них это мало отразится. Требования, пожелания, идеи и влияние кур принимаются во внимание, но им не разрешают непосредственно включаться в ход скрам-проекта.

Основные роли (Core roles) в методологии скрам («Свиньи»)

«Свиньи» полностью включены в проект и в скрам-процесс.

Дополнительные роли (Ancillary roles) в методологии скрам («Куры»)

Артефакты

Обязательные поля

Дополнительные поля

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

Встречи

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

Происходит в начале новой итерации Спринта.

Ежедневное совещание (Daily Scrum meeting)

В течение совещания каждый член команды отвечает на 3 вопроса:

Скрам над скрамом (Scrum of Scrums)

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

Обзор итогов спринта (Sprint review meeting)

Проводится после завершения спринта.

Ретроспективное совещание (Retrospective мeeting)

Проводится после завершения спринта.

Средства управления проектами поддерживающие скрам

Примечания

  1. en:Hirotaka Takeuchi
  2. en:Ikujiro Nonaka
  3. Harvard Business Review
  4. Leslie Hulet Stahl: Wicked Problems, Righteous Solutions: A Catalog of Modern Engineering Paradigms Yourdon Press Computing Series, 1990 (первое издание) ISBN 0-13-590126-X
  5. en:Ken Schwaber
  6. en:Jeff Sutherland
  7. OOPSLA 2006
  8. Mike Beedle
  9. Agile software development with Scrum. — Prentice Hall, 2002. — ISBN 0-13-067634-9
  10. Sprint — рывок; бросок; бег на короткую дистанцию; спринт
  11. Agile Project Management with Scrum, Ken Schwaber, Microsoft Press, January 2004, 163pp, ISBN 0-7356-1993-X
  12. page 7

Ссылки

Литература

Просмотр этого шаблона Разработка программного обеспечения
Известныедеятели Кент БекГради БучФред Брукс • Barry Boehm • Уорд КаннингемОле-Йохан Даль • Том Демарко • Эдсгер Вибе ДейкстраДональд КнутМартин ФаулерЧарльз Энтони Ричард Хоар • Watts Humphrey • Майкл Джексон • Ивар Якобсон • Craig Larman • James Martin • Мейер Бертран • Дэвид Парнас • Winston W. Royce • James Rumbaugh • Никлаус ВиртЭдвард ЙорданСтив Макконнелл
Процесс Анализ требованийПроектированиеПрограммированиеТестированиеВнедрениеСопровождениеФормальные методыСтадии разработки
Концепции Моделирование данных • Архитектура ПОФункциональная спецификация • Язык моделирования • ПарадигмаМетодологияПроцесс разработкиКачество • Обеспечение качества • Структурный анализ)
Направления Программирование (Аспектно-ориентированноеОбъектно-ориентированноеПроблемно-ориентированное) • ОнтологияСервис-ориентированная архитектураОценка затрат на разработку
Моделиразработки AgileCleanroomCASEИтеративная разработкаRUPOpenUPRADScrumMSFСпиральнаяКаскаднаяXPV-ModelDual Vee ModelDSDM
Другие модели CMMCMMIДанных • Function model • IDEFИнформационная • Metamodeling • Object model • View model • UML
Прочее Информатика • Инженерия (Компьютерная • Организационная) • История разработки ПО • Документирование • Управление (КонфигурационноеПроектамиПрограммамикачеством) • ЭргономикаСистемотехникаОбратная разработкаВерсии