SCRUM - это командная разработка проектов. Следовательно, нужна команда, каждый участник которой всегда в курсе происходящего на проекте.
Вначале хозяин проекта (product owner) составляет список пользовательских историй (user stories), в которых описывает функциональность проекта с точки зрения пользователя. Например "Страница добавления записи в блог". Здесь он также может подробно описать механизм работы истории. Полный список пользовательских историй называется задолженность проекта (product backlog) - то есть список того, что должно быть в проекте, но еще нет.
Роль хозяина проекта может играть менеджер, если заказчик не может лично присутствовать в офисе и обсуждать с командой все вопросы. В таком случае менеджер должен тесно общаться с заказчиком, чтобы точно представлять проект и знать ответы на все возможные вопросы, или уметь получить оперативные ответы от заказчика.
Каждой истории должна быть назначена важность (business points), то есть важность истории с точки зрения логики работы проекта. У любых двух историй не может быть одинаковая важность. Все истории могут быть упорядочены по важности. Выставляется в числах (желательно целых). Всегда надо оставлять запас между двумя значениями важности, чтобы между ними можно было вставить еще несколько пользовательских историй.
Когда задолженность составлена, команда на собрании оценивает каждую историю в баллах (story points). Происходит это посредством игры Покер для планирования (planning poker):
Каждому участнику команды раздаются карты 0, 1/2, 1, 2, 3, 5, 8, 13. (В полном варианте к ним добавляются еще карты 20, 40, 100, "чашка кофе", "?".) Баллы на картах означают сложность истории. Причем, чем сложнее история, тем менее точно ее можно оценить. Поэтому значения на картах возрастают не линейно. Ведущий зачитывает историю и ее описание, участники команды выкладывают карты с оценками рубашкой вверх. Когда все карты выложены, они переворачиваются, и если оценки совпадают, то истории назначается оценка. Если нет, то история обсуждается снова, и опять выкладываются карты. Так повторяется пока оценки не совпадут.
Когда все истории оценены, начальное планирование считается завершенным, и разработка переходит в стадию спринтов (sprints). Каждый спринт длится от 1-й до 4-х недель. Для планирования спринтов надо знать производительность команды, то есть, сколько работы в баллах она может выполнить за спринт. В качестве баллов можно брать часы, дни, абстрактные величины.
В первый спринт попадают истории, суммарное количество баллов которых не превышает производительности команды за спринт в баллах. Если остается несколько свободных баллов, то спринт можно дополнить историями с меньшей важностью из остального списка, логически связанными с основными историями спринта.
Таким образом, уже вначале проекта можно составить план на все спринты. Он будет приблизительным, но может дать понятие о количестве работ в проекте, что поможет достаточно точно оценить проект.
SCRUM процесс
Все вышеперечисленное может занять очень много времени.
Далее переходим на стадию спринта. После начала спринта нельзя менять требования и список пользовательских историй. Все истории разбиваются на задачи (tasks). Каждый день команда устраивает короткие скрам-встречи (scrum meetings), на который обсуждаются 3 вопроса:
- что сделано?
- что будет сделано?
- какие проблемы возникли?
Текущее положение дел отмечается в диаграмме сгорания спринта (sprint burndown chart). По оси Х откладываются дни, в течение которых происходит спринт. По оси Y - количество оставшихся баллов до окончания спринта. Идеальный спринт - когда линия от верхнего левого края спускается к концу спринта к правому нижнему.
По окончании спринта проводится ретроспектива с подведением итогов спринта.
Затем планируется новый спринт с учетом результатов только что завершенного спринта.
По окончании всех спринтов происходит стадия завершения проекта.
Термин SCRUM пришел из регби, где он означает схватку (scrum), которая назначается при нарушении правил или остановке игры.
|