Пишем пользовательские сценарии

Preview:

DESCRIPTION

28 мая 2011 года, HackDay#16 (http://hackday.ru/).

Citation preview

Пишем пользовательские

сценарии

И в twitter заодно: @op

Моделииз подручных материалов

Мы — нация текста

Люди не читают?

Поиграть же хочется!

Должно быть интересно

Герой, обстановка,

завязка сюжета

Путь к цели, успех

Давайте напишемчто-нибудь

Ситуация: на телефоне закончились деньги.

Задача: пополнить счёт сотового телефона.

Предусловия: Пользователь — перед Терминалом.

[1] Пользователь сообщает Терминалу, что хочет пополнить счёт. [2] Терминал запрашивает у Пользователя номер телефона. [3] Пользователь сообщает Терминалу номер телефона. [4] Терминал удостоверяется, что номер телефона введён корректно и пополнение возможно. [5] Терминал запрашивает у пользователя банкноты для пополнения счёта. [6] Пользователь передаёт Терминалу банкноты. [7] Терминал удостоверяется, что принятые банкноты можно использовать, и пополняет счёт. [8] Терминал сообщает Пользователю об успехе пополнения и предлагает повторить операцию. [9] Пользователь сообщает Терминалу своё решение: повторить операцию (возврат на шаг [5]) или закончить работу.

Осторожно, тьма ошибок!

Не учтены технологические

ограничения:[2] Номера телефона недостаточно. Нынешние терминалы не умеют гарантированно определять оператора по номеру телефона.

[5] Терминал может «пережёвывать» банкноты только по одной штуке.

Ошибки. Это нормально.

Не учтены бизнес-

требования:[7] Размер комиссии зависит от суммы платежа. Таким образом, пополнение счёта «побанкнотно» воспринимается Пользователем как обман. Необходимо дать возможность пополнять счёт после передачи банкомату всех банкнот.

Ошибки. Это нормально.

Не учтены «ограничения среды» (в данном случае —

требования законодательства):

[4] Перед получением денег Терминал обязан предупредить Пользователя о размерах комиссии.

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

Ошибки. Это нормально.

Не учтены особенности

человеческого поведения:[9] Пользователь в этот момент

уже решил задачу. Наивно полагать, будто он захочет сообщать Терминалу, что закончил работу.

Ошибки. Это нормально.

Не проработаны отклонения от

базового сценария!

Ошибки. Это нормально.

[1] Пользователь сообщает Терминалу, что хочет пополнить счёт. [2] Терминал удостоверяется, что пополнение возможно, и запрашивает у Пользователя номер телефона и, если нужно, сотового оператора. [3] Пользователь сообщает Терминалу запрошенные данные. [4] Терминал удостоверяется, что данные введены корректно. [5] Терминал запрашивает у пользователя банкноту для пополнения счёта. [6] Пользователь передаёт Терминалу банкноту. [7] Терминал удостоверяется, что принятую банкноту можно использовать, и сообщает Пользователю размер внесённой в Терминал суммы. [8] Терминал предлагает пользователю выбор: продолжить вносить деньги в Терминал или пополнить счёт. [9] Пользователь делает выбор и либо продолжает вносить деньги в терминал (возврат на шаг [5]), либо распоряжается пополнить счёт (переход на шаг [10]). [10] Терминал пополняет счёт телефона Пользователя, выдаёт чек и сообщает Пользователю об успехе операции.

Так-то лучше?

Отклонения:[2], [3], [4], [5] Пользователь передумал пополнять счёт. Терминал даёт Пользователю возможность прервать сценарий на этих шагах.

[2] Пополнение невозможно по техническим причинам. Терминал сообщает Пользователю о невозможности операции. Может быть, тогда и не предлагать шаг [1]?

[4] Данные введены некорректно. Терминал сообщает Пользователю об ошибке и повторяет шаг [3].

[6] Пользователь долго ничего не передаёт терминалу. Терминал переходит в режим ожидания.

[7] Банкноту использовать нельзя. Терминал возвращает Пользователю банкноту и повторяет шаг [5].

[9] Пользователь долго не принимает решение. Терминал самостоятельно переходит на шаг [10].

[9] Пользователь передумал пополнять счёт. Интерфейсно решение не поддерживаем!

[10] Техническая ошибка при пополнении. Что делаем?

[11] Невозможно выдать чек (например, нет бумаги). Что делаем?

Почему не блок-схемы?

Вы пробовали их читать?

Зарождение картинок

[2] Терминал удостоверяется {*}, что пополнение возможно, и запрашивает {Form, пустая форма} у Пользователя номер телефона и, если нужно, сотового оператора. [3] Пользователь сообщает {Form, ввод данных} Терминалу запрошенные данные. [4] Терминал удостоверяется {Form, проверка данных}, что данные введены корректно.

Каждое действие участников пьесы должно быть поддержано

интерфейсом. Иногда отсутствующим :)

Ставим ссылку на прототип после каждого глагола.

Каждого!

[2] Терминал удостоверяется {*}, что пополнение возможно, и запрашивает {Form, пустая форма} у Пользователя номер телефона и, если нужно, сотового оператора. [3] Пользователь сообщает {Form, ввод данных} Терминалу запрошенные данные. [4] Терминал удостоверяется {Form, проверка данных}, что данные введены корректно.

Понаписали макулатуры

Сценарий комикса?

Жизнь↑

задача↓

система

Дальше можно рисовать

Спасибо за внимание

Ольга Павлова, UsabilityLabolga-pavlova.ru twitter @op

Презентацию вышлю всем желающим по почте — дёргайте.

Recommended