понедельник, 25 апреля 2011 г.

Scrum - Как мы работаем с product backlog'ом

Product backlog – это основа Scrum’а. С него все начинается. По существу, product backlog является списком требований, историй, функциональности, которые упорядочены по степени важности. При этом все требования описаны на понятном для заказчика языке. Элементы этого списка мы будем называть "историями", user story, а иногда элементами backlog'а. Описание каждой нашей истории включает в себя следующие поля:

• – уникальный идентификатор – просто порядковый номер. Применяется для идентификации историй в случае их переименования.

Название – краткое описание истории. Например, “Просмотр журнала своих транзакций”. Оно должно быть однозначным, чтобы разработчики и product owner (владелец продукта) могли примерно понять, о чем идет речь, и отличить одну историю от другой. Обычно от 2 до 10 слов.

Важность (Importance) – степень важности данной задачи, по мнению product owner'а. Например, 10. Или 150. Чем больше значение, тем выше важность. o Я предпочитаю не использовать термин “приоритет”, поскольку обычно в этом случае 1 обозначает наивысший приоритет. Это очень неудобно: если впоследствии вы решите, что какая-то история еще более важна, то какой "приоритет" вы тогда ей поставите? Приоритет 0? Приоритет -1?

Предварительная оценка (initial estimate) – начальная оценка объема работ, необходимого для реализации истории по сравнению с другими историями. Измеряется в story point’ах. Приблизительно соответствует числу “идеальных человеко-дней”. o Спросите вашу команду: “Если собрать команду из оптимального количества людей, то есть не слишком большую и не слишком маленькую (чаще всего из двух человек), закрыться в комнате с достаточным запасом еды и работать ни на что не отвлекаясь, то, сколько дней тогда понадобится на разработку завершённого, протестированного продукта, готового к демонстрации и релизу? “. Если ответ будет “Для трёх человек, закрытых в комнате, на это потребуется 4 дня”, это значит, что изначальная оценка составляет 12 story point’ов.

o В этом случае важно получить не максимально точные оценки (например, для истории в 2 story point’а потребуется 2 дня), а сделать так, чтобы оценки верно отражали относительную трудоёмкость историй (например, на историю, оцененную в 2 story point’а потребует примерно в два раза меньше работы по сравнению с историей в 4 story point’а).

Как продемонстрировать (how to demo) – краткое пояснение того, как завершённая задача будет продемонстрирована в конце спринта. По сути, это простой тестовый сценарий типа “Сделайте это, сделайте то – должно получиться то-то”. o Если у вас практикуется Test Driven Development (разработка через тестирование или кратко TDD) , то это описание может послужить псевдокодом [пр. Переводчика: в программировании специальный способ записи любого алгоритма] для приемочного теста.

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

Product backlog (пример)

ID

Название

Важность

Предварительная оценка

Как продемонстрировать

Примечания

1

Депозит

30

5

Войти в систему, открыть страницу депозита, положить на счет €10, перейти на страницу баланса и проверить, что он увеличился на €10.

Нужна UML диаграмма последовательности. Пока что не стоит беспокоиться про шифрование данных.

2

Просмотр журнала личных транзакций

10

8

Войти в систему; перейти на страницу транзакций; положить деньги на счет; вернуться на страницу транзакций; проверить, что новая транзакция появилась в списке.

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

Мы экспериментировали и с другими полями, но в итоге именно эти 6 оказались для нас самыми применимыми.

Обычно product backlog хранится в Excel таблице с возможностью совместного доступа (несколько пользователей могут редактировать файл одновременно). Хотя официально документ принадлежит product owner’у, мы не запрещаем другим пользователям редактировать его. Ведь разработчикам довольно часто приходится заглядывать в product backlog, чтобы что-то уточнить или изменить оценку предполагаемых трудозатрат.

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


Книга: Scrum и XP: заметки с передовой (Хенрик Книберг)

2 комментария:

  1. Как по мне, про пункт "Как продемонстрировать" часто забывают

    ОтветитьУдалить
  2. У нас QC leader проводит demo, как по мне, это хорошая идея.

    ОтветитьУдалить