# UML. Спецификация вариантов использования (прецедентов)
https://glebradchenko.susu.ru/courses/bachelor/engineering/2013/SUSU_SE_08_UML_UseCase.pdf
https://studfile.net/preview/1712530/page:4/
Дальнейшее развитие модели поведения системы предполагает описание прецедентов. Типичное описание содержит следующие разделы:
* Имя прецедента
* Идентификатор прецедента (встречается не всегда)
* Краткое описание;
* Участвующие субъекты (акторы, иногда разделяются на основных и второстепенных);
* Предусловия, необходимые для инициирования прецедента;
* Основной поток событий;
* Альтернативный поток событий;
* Постусловия, определяющие состояние системы, по достижении которого прецедент завершается.
**Основной поток** описывает «идеальный» ход развития событий в прецеденте.
**Альтернативные потоки** могут перехватывать ошибки, ответвления и прерывания основного потока.
Основной поток *всегда начинается с действий главного актера*, направленных на инициацию прецедента.
## Запись основного потока
* Удачным способом начала потока можно считать следующую форму записи:
`Прецедент начинается, когда <актер> <действие>.`
Например, `Прецедент начинается, когда покупатель выбирает товар`
* Каждый этап потока прецедента должен быть выражен в следующей форме:
`<номер> <ктолибо> <совершает некоторое действие>.`
* Альтернативные потоки могут быть заменены с помощью ключевого слова **Если**
```
1. Прецедент начинается, когда Покупатель выбирает товар
2. Если Покупатель выбирает товар у которого есть дополнительные товары
2.1 Менеджер предлагает дополнительные товары
3. Если Покупатель выбирает товар которого нет в наличии
3.1 Менеджер предлагает оформить заказ
```
* Альтернативные потоки могут не возвращаться в основной поток после
выполнения, т.к. обрабатывают ошибки, исключительные ситуации и т.п.
* Для алтернативных потоков оформляется отдельная спецификация. Структура аналогична основной, только идентификатор следующего уровня (например, если у основного потока ID 2., то у альтернативного 2.1)
В итоге должна получиться таблица (правая колонка, слева описание):
|
--|------
*Имя прецедента* | Прецедент: Выбор товара
*Идентификатор прецедента* | ID 1
*Краткое описание* | Краткое описание Покупатель выбирает товар в магазине автосервиса
*Акторы, вовлеченные в прецедент* | Главные акторы: Покупатель Второстепенные акторы: Менеджер
*Состояние системы на начало прецедента* | Предусловия: нет
*Фактические этапы прецедента* | Основной поток: 1. Прецедент начинается, когда Покупатель выбирает товар 2. Если Покупатель выбирает товар у которого есть дополнительные товары 2.1 Менеджер предлагает дополнительные товары 3. Если Покупатель выбирает товар которого нет в наличии 3.1 Менеджер предлагает оформить заказ
*Альтернативные потоки* | Альтернативные потоки: 2.1 Менеджер предлагает дополнительные товары 3.1 Менеджер предлагает оформить заказ
*Состояние системы после окончания прецедента* | Постусловия 1. Покупатель выбрал товар 2. Покупатель отказался от покупки
|
-|------
Прецедент | Оформление заказа
Идентификатор | ID 2
Краткое описание | Покупатель оформляет заказ на товар, которого нет в наличии
Главные акторы | Покупатель
Второстепенные акторы | Менеджер
Предусловия | Покупатель выбрал товар
Основной поток | 1. Прецедент начинается, когда Покупатель оформляет заказ 2. Менеджер принимает заказ
Альтернативные потоки | нет
Постусловия | 1. Покупатель оставил заказ