# 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. Покупатель оставил заказ