Ты мешаешь иерархическое представление требований и ВИ. Так нельзя.
От неба к маллюскам. Шаг верхнего уровня детализируется ВИ нижнего уровня. Разве ВИ не являются иерархией? Хотя практической пользы от ВИ "работать с программой" не увидел.
Добавил 5 новых ВИ:
- Посмотреть состояние счета
- Посмотреть историю событий в системе
- Посмотреть историю совершенных торгов
Их я посчитал подфункциями.
Вариант Использования №06 "
Посмотреть состояние счета"
Основное действующее лицо: Пользователь
Область действия: система.
Уровень: подфункция
Главный успешный сценарий:
1. Приложение отображает состояние счета на текущую дату.
2. Пользователь выбирает дату на которую смотреть состояние счета.
3. Приложение запрашивает у сервера данные за определенную дату.
4. Сервер запрашивает данные у Клиринга.
5. Клиринг предает данные серверу.
6. Сервер передает данные приложению.
7. Приложение отображает состояние счета за выбранную дату.
Расширения:
На любом этапе произошел разрыв связи между приложением и сервером
а1. Приложение делает недоступными свои функции пока соединение не восстановится.
На любом этапе произошел разрыв связи между сервером и Клирингом.
а1. Сервер уведомляет приложение о разрыве связи.
а2. Приложение делает недоступными свои функции.
и ВИ "Общаться по чату" уровня "цели пользователя"
Вариант Использования №09 "
Общаться по чату"
Основное действующее лицо: Пользователь
Область действия: клиентская программа.
Уровень: цели пользователя.
Главный успешный сценарий:
1.Приложение отображает сообщения за последнюю неделю.
2.Пользователь пишет и отправляет сообщение.
3.Приложение отправляет сообщение серверу.
4.Сервер рассылает сообщение всем Пользователям.
5.Это продолжается пока Пользователь не закроет чат.
Расширения:
На любом этапе произошел разрыв связи между приложением и сервером
а1. Приложение делает недоступными свои функции пока соединение не восстановится.
Объединил "Подписаться на данные" и "Поставить данные"
ВИ №4 "
Поставить данные"
Основное действующее лицо: Поставщик Данных (ПД)
Область действия: система.
Уровень: цель пользователя.
Предусловие: Между сервером и ПД установлено соединение.
Главный сценарий:
1.Сервер отправляет ПД заявку на данные.
2.ПД оформляет постоянную подписку* на конкретные данные.
3.ПД передает данные серверу.
4.
Сервер обновляет данные у Пользователей.5.Пока подписка действует ПД продолжает передавать данные серверу.
Расширения:
1.Происходит разрыв соединения:
2.ПД исключает сервер из всех подписок.
3.Сервер снова соединяется с ПД.
4.Сценарий запускается сначала.
2а ПД оформляет единовременную подписку**
Комментарии:
*Постоянные подписки могут быть: Price Update, Order State, Fill details for an order.
**Единовременные могут быть: Price, Commodity, Contract, Trader, Order, Fill, Charts.
ВИ №05 "
Обновить данные"
Основное действующее лицо: Пользователь (П)
Область действия: система
Уровень: подфункция.
Предусловие: Пользователь вошел в систему, Сервер получил новые данные от Поставщика Данных.
Главный сценарий:
1. Сервер проходит по списку пользователей и проверяет каким Пользователям необходимы новые данные.
2. Сервер отсылает Пользователю новые данные.
3. Приложение отображает Пользователю новые данные.
Расширения:
НЕТ
"Обновить данные" получается подфункция ВИ "Поставить данные". Странно, что у ВИ "Поставить данные" основное действующее лицо Поставщик Данных, а у ВИ "обновить данные" - Пользователь. Наверное, я тут чего-то наворотил не того.
Вообще, не могу ухватить ВИ относящиеся к данным.
Например, логично было бы, что в ВИ где получают данные от Клиринга, например "Посмотреть состояние счета". Шаг "5. Клиринг предает данные серверу" означал бы ссылку на ВИ "Поставить данные". Но они же разного уровня, один "подфункция", другой "цели пользователя". По-видимому ВИ написаны с ошибкой.
Или, например, ВИ "Войти в систему " шаги 8 и 9 ведут на "Поставить данные" и "Обновить данные", как-то не уверен что это правильно.
Нужно детализировать:
- какие данные получают
Не уверен где их расписывать...
Добавить шаги в местах где передаются данные, такие как "Войти в систему", поподробнее расписать "запросить список commodities, список контрактов"? Или добавить шаг к "Вставить заявку" допустим "1. Пользоватль выбирает контракт", который будет детализирован в ВИ уровня подфункции? Например:
ВИ "Выбрать контракт".
1. Приложение запрашивает Сервер о списке контрактов
2. Сервер передает последний список приложению.
3. Приложение отображает список Пользователю.
4. Пользователь выбирает контракт.
Расширения2а Список не удовлетворяет представлению о "свежести"
2а1. Сервер запрашивает последний список контрактов у Клиринга.
2а2. Клиринг передает список серверу.
Диаграмма и красивый файл в виде chm прилагаются: