2. Если меню на указанную дату уже существует, то
2.1 Система сообщает менеджеру, что меню на указанную дату уже существует
2.2 Возврат к шагу 1 основного потока
3. Иначе
Если основной поток занимает больше 7-10 строк, я предпочитаю выносить даже мелкие ветвления в альтернативные потоки. Здесь можно было бы так сделать.
И ещё мне нравится стиль описания ветвлений, когда в точке ветвления (2) пишется что-то типа:
"1. Менеджер меню делает запрос на создание меню на определенную дату.
2. Система проверяет существование меню на указанную дату.
3. Система выводит новое меню с входящим в него списком стандартных блюд."
, а остальная часть ветвления выносится в альтернативный поток.
3.7 Система выводит блюда, относящиеся к данной категории.
3.8 Менеджер меню выбирает блюда из выбранной категории и при желании меняет цену.
Небольшое дополнение... В конце пункта 3.7 я бы дописал что-то типа ", в том числе их цену, заданную при формировании меню ранее", а в конце 3.8 ", а система сохраняет цену блюда". Иначе непонятно что за цену можно изменить, откуда она изначально берётся и появится ли изменённая цена при формировании меню в следующий раз?
3.9 Система отображает изменения.
Разве если менеджер изменит цену на экране, то это изменение может на нём не отобразиться? Или имеется ввиду что-то другое и нужно уточнить пункт?
4 Если менеджер меню желает сменить категорию блюда то система сохраняет выбранные блюда и возврат к шагу 3.6
Я бы написал после 3.5:
Пока Менеджер меню не инициировал сохранение меню, он имеет возможность:
- Инициировать смену категории блюд и выбрать одну из предложенных (возврат к 3.5). Если Менеджер меню выбирает категорию блюда, то Система выводит блюда, относящиеся к данной категории, в том числе их цену, заданную при формировании меню ранее.
- Выбрать блюда из заданной категории, при желании изменить их цену и добавить в меню.
И возврат не к 3.6, а к 3.5.
5 Если Менеджер меню хочет сменить тип меню то система сохраняет выбранные блюда и возврат к шагу 3.4
Если верить этому пункту, то мы можем добавить в меню блюда категорий, не разрешённых новым типом меню (на который меняем). Так не должно быть?
Альтернативные потоки:
...
Предусловия: Дата превышает текущую дату более чем на 14 дней.
Нужно указать где именно производится проверка на выполнение условия. На каком шаге и какого потока.
Альтернативные потоки:
...
Постусловия: возврат к вводу даты.
Это не постусловие, а описание поведения системы. Нужно указать с какого шага какого потока продолжается выполнение. А постусловие может отражать описание какого-то состояния некоего объекта, которое можно проверить.
- 1 по типу меню (который есть свойство блюда)
Как я понял прямой связи с блюдом не должно быть. Будет связь между типами меню и категориями многие-ко-многим и между категориями и блюдами (один-ко-многим или многие-ко-многим). Я не прав?
- 2 по категории (с учетом заданного порядка - от первых к напиткам) категория тоже свойство блюда.
Кем задан этот порядок и в каком порядке должны располагаться категории между первыми и напитками? Сначала салаты, а потом вторые или наоборот?
4. Ну и проверку на даты я бы не стал включать как альтернативные потоки. Просто контроль при создании меню и все.
То есть в основном потоке написать что система не даёт задать дату, не соответствующую таким-то требованиям?