- •1. Знакомство с прецедентами
- •Что такое прецеденты
- •Зачем нужны прецеденты
- •Прецедент Покупка лимонада
- •Дополнительные прецеденты
- •Включение прецедента
- •Расширение прецедента
- •Анализ прецедента
- •Представление модели прецедента
- •Модель автомата по продаже лимонада
- •2. Использование диаграмм прецедентов
- •Отслеживание действий в сценариях
- •3. Визуализация взаимосвязей прецедентов
- •Включение
- •Расширение
- •Обобщение
- •Группировка
- •4. Роль диаграмм прецедентов в процессе анализа
- •5. Пример использования модели прецедентов
- •Изучение предметной области
- •Работа с пользователями
- •Описание прецедентов
- •Уточнение деталей
- •6. Резюме
- •Вопросы и ответы
- •Задание
Прецедент Покупка лимонада
Исполнителем в данном прецеденте является покупатель, желающий приобрести стакан лимонада. Он инициирует сценарии, опуская монету в автомат. Затем он выбирает сорт лимонада. Если все идет нормально, автомат выдает ему стакан с выбранным напитком.
Помимо последовательности выполняемых действий заслуживают внимания также и другие факторы. Какие предусловия необходимы для реализации сценария Покупка лимонада? Наиболее очевидным является ощущение жажды. Какие постусловия реализуются после выполнения сценария? Самым очевидным является наличие лимонада у покупателя.
Рис. 1. Прецедент определяет набор сценариев для достижения цели, полезной исполнителю. В рассматриваемом примере одним из прецедентов является Покупка лимонада
Является ли описанный сценарий единственным для прецедента Покупка лимонада? Мне приходят в голову и другие сценарии. Возможно, выбранный покупателем сорт лимонада отсутствует или у покупателя нет точной суммы, соответствующей стоимости покупки. Как автомат должен обрабатывать эти сценарии?
Давайте вернемся к сценарию, когда требуемый сорт лимонада отсутствует. Он является альтернативным при реализации этого прецедента. Пользователь инициирует прецедент, опуская монету в автомат. Затем он выбирает сорт лимонада. Поскольку выбранный сорт отсутствует, покупателю выдается соответствующее сообщение. В идеале пользователю нужно предложить выбрать другой сорт лимонада или вернуть деньги. Пользователь выберет другой сорт лимонада или потребует вернуть деньги. Постусловием этого сценария является полученный стакан лимонада или возвращенные деньги.
Возможен, конечно, и еще один ход событий. При отсутствии определенного сорта лимонада сообщение об этом отображается непрерывно до новой заправки автомата. В этом случае пользователю даже не придется опускать монету. Клиенту, для которого разрабатывается автомат, больше должен понравиться первый сценарий. Если покупатель уже опустил монету, то он, скорее всего, закажет другой сорт лимонада, а не потребует вернуть деньги.
Теперь рассмотрим сценарий отсутствия нужной суммы. Как обычно, пользователь инициирует прецедент и выбирает сорт лимонада. Допустим, требуемый сорт лимонада имеется. Тогда автомат должен выдать стакан лимонада и сдачу. Если сдача отсутствует, автомат должен вернуть деньги с предложением опустить точную сумму. Предусловие для этого сценария совпадает с предыдущим. Постусловием является стакан лимонада со сдачей либо возвращенная сумма денег.
Еще одной возможностью при отсутствии сдачи является постоянное отображение сообщения с просьбой опускать точную стоимость покупки. Это сообщение должно оставаться до тех пор, пока в автомат не добавят мелочи для выдачи сдачи.
Дополнительные прецеденты
Мы рассмотрели пример с автоматом по продаже лимонада с точки зрения потребителя — покупателя. Другие пользователи дополняют картину эксплуатации автомата. Этот автомат обслуживает специалист, пополняющий запасы лимонада, и инкассатор. Зачастую такие функции выполняет один и тот же человек. Названные специалисты реализуют еще два прецедента: Заправка автомата и Сбор денег.
Рассмотрим прецедент Заправка автомата. Специалист инициирует этот прецедент через заданные интервалы времени (скажем, раз в две недели). Он разблокирует систему защиты автомата (возможно, специальным ключом), открывает автомат и заполняет емкости для сиропа. Затем пополняет запас мелочи для сдачи. После этого он закрывает автомат и включает систему защиты. Предусловием этого прецедента является истечение заданного интервала времени, а постусловием — новый запас продукта для продажи.
Прецедент Сбор денег инициируется также по истечении заданного интервала времени. Он включает ту же последовательность действий, что и Заправка автомата. Специалист разблокирует автомат, открывает его, забирает деньги, закрывает и блокирует автомат. Предусловием является истечение интервала времени, а постусловием — деньги в руках инкассатора.
Заметим, что при описании прецедента нас не интересует способ его реализации. В рассматриваемом примере мы не касаемся внутреннего устройства автомата. Не важно также как работает механизм дозировки или выполняется процесс оплаты. Мы описываем, как автомат выглядит с точки зрения пользователя.
Основной задачей этого этапа является описание набора прецедентов для разработчиков автомата по продаже лимонада. Если разработчики знают, чего ожидают от автомата покупатели, специалисты по заправке и инкассаторы, то разработают автомат, удовлетворяющий требованиям всех этих групп пользователей.
