Здравствуйте, Кирилл Лебедев, Вы писали:
КЛ>Здравствуйте, Predicate, Вы писали:
P>>Положим, нужно построить диаграмму юзкейсов простой игры, рафинируем требования (из как бы ТЗ) до 4х пунктов:
КЛ>Вообще, юзкейсы лучше оформлять в виде текста — это позволяет их лучше структурировать. Представлять юзкейс в виде диаграммы выгодно в том случае, когда он уже хорошо структурирован. Диаграмма — лишь дополнительная иллюстрация.
P>>- игрок может начать новую игру
КЛ>Ваш юзкейс я бы описал таким образом:
КЛ>Прецедент 1. Выбор действия.
КЛ>Действующие лица: Программа, Пользователь.
КЛ>
КЛ>Программа предлагает Пользователю выбрать действие.
КЛ>Пользователь выбирает действие "Начать новую игру".
КЛ>Пользователь выбирает действие "Продолжить существующую игру".
КЛ>Пользователь выбирает действие "Рестарт игры".
КЛ>
P>>Плюс к этому, "рестарт игры" инклюдит в себя "начать новую игру", но юзкейс "ввести имена игроков" уже в случае рестарта игры не должен активироваться (а он инклюжен в "начать новую игру", и, следовательно, по транзитивности, инклюжен и в "рестарт игры"). Т.е. получается, что юзкейсы включаются в другие юзкейсы, но при этом имеют прямую связь с актантом (т.к. все 4-е либо активируются пользователем, либо принимают ввод от пользователя). Что нужно сделать? Как правильно?
КЛ>Расписываю далее (из примеров, думаю, будет понятно решение).
КЛ>Прецедент 2. Начать новую игру.
КЛ>Действующие лица: Программа.
КЛ>
КЛ>Программа создаёт новую игру.
КЛ>Программа начинает созданную игру.
КЛ>
КЛ>Прецедент 3. Рестарт игры.
КЛ>Действующие лица: Программа.
КЛ>
КЛ>Программа начинает созданную игру.
КЛ>
КЛ>Прецедент 4. Создать новую игру.
КЛ>Действующие лица: Программа, Пользователь.
КЛ>
КЛ>Программа предлагает Пользователю ввести имя игрока.
КЛ>Пользователь вводит имя игрока.
КЛ>Программа запоминает имя игрока.
КЛ>
Хм... а корректно ли, что в данном случае Прецедент 4 инклюдится в Прецедент 2 (и транзитивно в Прецедент 1), и при этом имеет прямую ассоциацию с актантом Пользователь? Хотя инициатором последней связи выступает в данном случае не Пользователь, а Программа. Т.е. получается этакое "зацикливание"... не должно ли это быть одним прецедентом (с точки зрения атомарности)?
И такой еще вопрос: в предложенном варианте получается, что Прецедент 1 следует оформить как имеющего два расширения? ("Начать новую игру" и "Рестарт игры", т.к. "Продолжить существующую игру" — как бы основной процесс)