Пишем пользовательские сценарии
DESCRIPTION
28 мая 2011 года, HackDay#16 (http://hackday.ru/).TRANSCRIPT
![Page 1: Пишем пользовательские сценарии](https://reader033.vdocuments.site/reader033/viewer/2022061523/555e19b9d8b42a99188b57b7/html5/thumbnails/1.jpg)
Пишем пользовательские
сценарии
И в twitter заодно: @op
![Page 2: Пишем пользовательские сценарии](https://reader033.vdocuments.site/reader033/viewer/2022061523/555e19b9d8b42a99188b57b7/html5/thumbnails/2.jpg)
Моделииз подручных материалов
![Page 3: Пишем пользовательские сценарии](https://reader033.vdocuments.site/reader033/viewer/2022061523/555e19b9d8b42a99188b57b7/html5/thumbnails/3.jpg)
Мы — нация текста
![Page 4: Пишем пользовательские сценарии](https://reader033.vdocuments.site/reader033/viewer/2022061523/555e19b9d8b42a99188b57b7/html5/thumbnails/4.jpg)
Люди не читают?
![Page 5: Пишем пользовательские сценарии](https://reader033.vdocuments.site/reader033/viewer/2022061523/555e19b9d8b42a99188b57b7/html5/thumbnails/5.jpg)
Поиграть же хочется!
![Page 6: Пишем пользовательские сценарии](https://reader033.vdocuments.site/reader033/viewer/2022061523/555e19b9d8b42a99188b57b7/html5/thumbnails/6.jpg)
Должно быть интересно
![Page 7: Пишем пользовательские сценарии](https://reader033.vdocuments.site/reader033/viewer/2022061523/555e19b9d8b42a99188b57b7/html5/thumbnails/7.jpg)
Герой, обстановка,
завязка сюжета
![Page 8: Пишем пользовательские сценарии](https://reader033.vdocuments.site/reader033/viewer/2022061523/555e19b9d8b42a99188b57b7/html5/thumbnails/8.jpg)
Путь к цели, успех
![Page 9: Пишем пользовательские сценарии](https://reader033.vdocuments.site/reader033/viewer/2022061523/555e19b9d8b42a99188b57b7/html5/thumbnails/9.jpg)
Давайте напишемчто-нибудь
![Page 10: Пишем пользовательские сценарии](https://reader033.vdocuments.site/reader033/viewer/2022061523/555e19b9d8b42a99188b57b7/html5/thumbnails/10.jpg)
Ситуация: на телефоне закончились деньги.
Задача: пополнить счёт сотового телефона.
Предусловия: Пользователь — перед Терминалом.
![Page 11: Пишем пользовательские сценарии](https://reader033.vdocuments.site/reader033/viewer/2022061523/555e19b9d8b42a99188b57b7/html5/thumbnails/11.jpg)
[1] Пользователь сообщает Терминалу, что хочет пополнить счёт. [2] Терминал запрашивает у Пользователя номер телефона. [3] Пользователь сообщает Терминалу номер телефона. [4] Терминал удостоверяется, что номер телефона введён корректно и пополнение возможно. [5] Терминал запрашивает у пользователя банкноты для пополнения счёта. [6] Пользователь передаёт Терминалу банкноты. [7] Терминал удостоверяется, что принятые банкноты можно использовать, и пополняет счёт. [8] Терминал сообщает Пользователю об успехе пополнения и предлагает повторить операцию. [9] Пользователь сообщает Терминалу своё решение: повторить операцию (возврат на шаг [5]) или закончить работу.
Осторожно, тьма ошибок!
![Page 12: Пишем пользовательские сценарии](https://reader033.vdocuments.site/reader033/viewer/2022061523/555e19b9d8b42a99188b57b7/html5/thumbnails/12.jpg)
Не учтены технологические
ограничения:[2] Номера телефона недостаточно. Нынешние терминалы не умеют гарантированно определять оператора по номеру телефона.
[5] Терминал может «пережёвывать» банкноты только по одной штуке.
Ошибки. Это нормально.
![Page 13: Пишем пользовательские сценарии](https://reader033.vdocuments.site/reader033/viewer/2022061523/555e19b9d8b42a99188b57b7/html5/thumbnails/13.jpg)
Не учтены бизнес-
требования:[7] Размер комиссии зависит от суммы платежа. Таким образом, пополнение счёта «побанкнотно» воспринимается Пользователем как обман. Необходимо дать возможность пополнять счёт после передачи банкомату всех банкнот.
Ошибки. Это нормально.
![Page 14: Пишем пользовательские сценарии](https://reader033.vdocuments.site/reader033/viewer/2022061523/555e19b9d8b42a99188b57b7/html5/thumbnails/14.jpg)
Не учтены «ограничения среды» (в данном случае —
требования законодательства):
[4] Перед получением денег Терминал обязан предупредить Пользователя о размерах комиссии.
[8] На любую денежную операцию необходимо выдавать чек. Это действие нужно явно прописать в сценарии, не скрывая его за словосочетанием «сообщает об успехе пополнения».
Ошибки. Это нормально.
![Page 15: Пишем пользовательские сценарии](https://reader033.vdocuments.site/reader033/viewer/2022061523/555e19b9d8b42a99188b57b7/html5/thumbnails/15.jpg)
Не учтены особенности
человеческого поведения:[9] Пользователь в этот момент
уже решил задачу. Наивно полагать, будто он захочет сообщать Терминалу, что закончил работу.
Ошибки. Это нормально.
![Page 16: Пишем пользовательские сценарии](https://reader033.vdocuments.site/reader033/viewer/2022061523/555e19b9d8b42a99188b57b7/html5/thumbnails/16.jpg)
Не проработаны отклонения от
базового сценария!
Ошибки. Это нормально.
![Page 17: Пишем пользовательские сценарии](https://reader033.vdocuments.site/reader033/viewer/2022061523/555e19b9d8b42a99188b57b7/html5/thumbnails/17.jpg)
[1] Пользователь сообщает Терминалу, что хочет пополнить счёт. [2] Терминал удостоверяется, что пополнение возможно, и запрашивает у Пользователя номер телефона и, если нужно, сотового оператора. [3] Пользователь сообщает Терминалу запрошенные данные. [4] Терминал удостоверяется, что данные введены корректно. [5] Терминал запрашивает у пользователя банкноту для пополнения счёта. [6] Пользователь передаёт Терминалу банкноту. [7] Терминал удостоверяется, что принятую банкноту можно использовать, и сообщает Пользователю размер внесённой в Терминал суммы. [8] Терминал предлагает пользователю выбор: продолжить вносить деньги в Терминал или пополнить счёт. [9] Пользователь делает выбор и либо продолжает вносить деньги в терминал (возврат на шаг [5]), либо распоряжается пополнить счёт (переход на шаг [10]). [10] Терминал пополняет счёт телефона Пользователя, выдаёт чек и сообщает Пользователю об успехе операции.
Так-то лучше?
![Page 18: Пишем пользовательские сценарии](https://reader033.vdocuments.site/reader033/viewer/2022061523/555e19b9d8b42a99188b57b7/html5/thumbnails/18.jpg)
Отклонения:[2], [3], [4], [5] Пользователь передумал пополнять счёт. Терминал даёт Пользователю возможность прервать сценарий на этих шагах.
[2] Пополнение невозможно по техническим причинам. Терминал сообщает Пользователю о невозможности операции. Может быть, тогда и не предлагать шаг [1]?
[4] Данные введены некорректно. Терминал сообщает Пользователю об ошибке и повторяет шаг [3].
[6] Пользователь долго ничего не передаёт терминалу. Терминал переходит в режим ожидания.
[7] Банкноту использовать нельзя. Терминал возвращает Пользователю банкноту и повторяет шаг [5].
[9] Пользователь долго не принимает решение. Терминал самостоятельно переходит на шаг [10].
[9] Пользователь передумал пополнять счёт. Интерфейсно решение не поддерживаем!
[10] Техническая ошибка при пополнении. Что делаем?
[11] Невозможно выдать чек (например, нет бумаги). Что делаем?
![Page 19: Пишем пользовательские сценарии](https://reader033.vdocuments.site/reader033/viewer/2022061523/555e19b9d8b42a99188b57b7/html5/thumbnails/19.jpg)
Почему не блок-схемы?
Вы пробовали их читать?
![Page 20: Пишем пользовательские сценарии](https://reader033.vdocuments.site/reader033/viewer/2022061523/555e19b9d8b42a99188b57b7/html5/thumbnails/20.jpg)
Зарождение картинок
![Page 21: Пишем пользовательские сценарии](https://reader033.vdocuments.site/reader033/viewer/2022061523/555e19b9d8b42a99188b57b7/html5/thumbnails/21.jpg)
[2] Терминал удостоверяется {*}, что пополнение возможно, и запрашивает {Form, пустая форма} у Пользователя номер телефона и, если нужно, сотового оператора. [3] Пользователь сообщает {Form, ввод данных} Терминалу запрошенные данные. [4] Терминал удостоверяется {Form, проверка данных}, что данные введены корректно.
Каждое действие участников пьесы должно быть поддержано
интерфейсом. Иногда отсутствующим :)
![Page 22: Пишем пользовательские сценарии](https://reader033.vdocuments.site/reader033/viewer/2022061523/555e19b9d8b42a99188b57b7/html5/thumbnails/22.jpg)
Ставим ссылку на прототип после каждого глагола.
Каждого!
[2] Терминал удостоверяется {*}, что пополнение возможно, и запрашивает {Form, пустая форма} у Пользователя номер телефона и, если нужно, сотового оператора. [3] Пользователь сообщает {Form, ввод данных} Терминалу запрошенные данные. [4] Терминал удостоверяется {Form, проверка данных}, что данные введены корректно.
![Page 23: Пишем пользовательские сценарии](https://reader033.vdocuments.site/reader033/viewer/2022061523/555e19b9d8b42a99188b57b7/html5/thumbnails/23.jpg)
Понаписали макулатуры
![Page 24: Пишем пользовательские сценарии](https://reader033.vdocuments.site/reader033/viewer/2022061523/555e19b9d8b42a99188b57b7/html5/thumbnails/24.jpg)
Сценарий комикса?
![Page 25: Пишем пользовательские сценарии](https://reader033.vdocuments.site/reader033/viewer/2022061523/555e19b9d8b42a99188b57b7/html5/thumbnails/25.jpg)
Жизнь↑
задача↓
система
![Page 26: Пишем пользовательские сценарии](https://reader033.vdocuments.site/reader033/viewer/2022061523/555e19b9d8b42a99188b57b7/html5/thumbnails/26.jpg)
Дальше можно рисовать
![Page 27: Пишем пользовательские сценарии](https://reader033.vdocuments.site/reader033/viewer/2022061523/555e19b9d8b42a99188b57b7/html5/thumbnails/27.jpg)
Спасибо за внимание
Ольга Павлова, UsabilityLabolga-pavlova.ru twitter @op
Презентацию вышлю всем желающим по почте — дёргайте.