Строя аналитические модели вариантов использования, я на определённом этапе стал сомневаться в том, что делаю это правильно. Поэтому решил привести Вам простой пример и выслушать ваши замечания. Что бы не вдаваться в детали рассмотрим основной поток варианта использования "Создать первую учётную запись":
1. Система предлагает пользователю ввести параметры учётной записи
2. Пользователь вводит параметры учётной записи и выбирает "Создать"
3. Система создаёт новую учётную запись и добавляет её в список учётных записей
4. Система сообщает пользователю, что учётная запись создана
План по этому варианту использования был таков:
1. Выделить роли и сущности
2. Построить аналитическую диаграмму иллюстрирующую реализацию этого варианта использования используя эти роли и сущности
3. Произвести классификацию ролей и соотнести их с одним из классов анализа
4. Построить аналитическую диаграмму иллюстрирующую реализацию этого варианта использования используя получившиеся классы анализа и сущности
Вот, что получилось:
Примечание:
1. Логику работы интерфейса и связанные с неё сущности и роли не рассматриваем;
2. Если кратность не указана, то она равна единице;
3. Пользователя на диаграммах не показываем;
1) Выделить роли и сущности:
1. [Интерфейс] Система предлагает пользователю ввести параметры учётной записи
2. [Интерфейс] Пользователь вводит параметры учётной записи и выбирает "Создать"
3. [Роль ] Система создаёт новую учётную запись
4. [Роль ] Система добавляет новую учётную запись в список учётных записей
5. [Интерфейс] Система сообщает пользователю, что учётная запись создана
Сущности: Система, Учётная запись, Список учётных записей
Роли: выше...
2) Построить аналитическую диаграмму иллюстрирующую реализацию этого варианта использования используя эти роли и сущности:
Здесь пиктограммами управляющих классов обозначены роли!
3) Произвести классификацию ролей и соотнести их с одним из классов анализа:
Поскольку обе роли описывают операции с учётными записями, я назвал соответствующий класс анализа "Менеджер учётных записей", и объединил обе роли в одну операцию "Создать учётную запись". Подразумевая, что создание учётной записи, автоматически означает её добавление в список учётных записей.
4) Построить аналитическую диаграмму иллюстрирующую реализацию этого варианта использования используя получившиеся классы анализа и сущности:
Здесь, я использовал стереотип "collaboration" и зависимость "trace", пытаясь подчеркнуть, что класс "Менеджер учётных записей" является результатом кооперации ролей "Создать учётную запись" и "Добавить учётную запись в список учётных записей".
Теперь вопросы которые меня волнуют:
1) Учётная запись — структура хранящая информацию о пользователе и его параметрах аутентификации. Список учётных записей — структура хранящая несколько Учётных записей. Я обозначил понятия Учётная запись и Список учётных записей, как сущность. Что вы об этом думаете?
2) На первой диаграмме, роли "Создать учётную запись" необходимо иметь доступ к структуре Учётная запись для того, чтобы пользователь смог ввести данные и её заполнить. А роли "Добавить учётную запись в список учётных записей" необходимо иметь доступ как к Учётной записи, так и к Списку учётных записей для его модификации. При этом Список учётных записей содержит несколько Учётных записей, что обозначается на диаграмме с помощью кратности и навигации. Правильно-ли я обозначил этот момент
В данном случае смущает, что Учётная запись и Список учётных записей находятся в отношении агрегации. Должно-ли это повлиять на отображение ассоциаций на аналитических диаграммах?
3) Я использую на аналитических диаграммах навигацию. Нормально-ли это или лучше отложить до проектирования?
4) Верно-ли я использовал кооперацию("collaboration") на диаграмме?
5) В статьях в интернете я видел, что на аналитических моделях используют обозначения отношений(композиция, агрегация и т.п.) и сообщения. Стоит-ли так делать?
Вообще хотелось бы услышать, как правильно оформить аналитическую диаграмму данного варианта использования, а так-же послушать ваши за и против. Ведь это всегда очень полезно
Здравствуйте, Cynic, Вы писали:
C>Вообще хотелось бы услышать, как правильно оформить аналитическую диаграмму данного варианта использования, а так-же послушать ваши за и против. Ведь это всегда очень полезно
>> Как правильно оформлять аналитические диаграммы?
Так, чтобы ими было удобно пользоваться. Кто будет ими пользоваться и для каких целей?
Я, обычно, для UC рисую диаграмму деятельности (activity). То, что показано в примере, вроде как "robustness" называется. По ICONIX используется на разрыве между анализом и архитектурой.
Этими диаграммами и самими UC пользуется архитектор + скрум-мастер.
Диаграмма сущностей — рисую раньше, когда хочу разобраться с предметной областью.
Я попробую взять один UC с реального проекта и с диаграммами на свой сайт выложу, но не обещаю, что успею в этом году.
Здравствуйте, Мемега, Вы писали:
М>Я попробую взять один UC с реального проекта и с диаграммами на свой сайт выложу, но не обещаю, что успею в этом году.
Жду с нетерпением
Здравствуйте, Cynic, Вы писали:
C>Здравствуйте, Мемега, Вы писали:
М>>Я попробую взять один UC с реального проекта и с диаграммами на свой сайт выложу, но не обещаю, что успею в этом году.
C>Жду с нетерпением
Сегодня вечером займусь
Здравствуйте, Мемега, Вы писали:
М>Сегодня вечером займусь
Ну и где
Я уже заждался.
Я понял по картинкам с вашего сайта, что вы пользуетесь Enterprise Architect. Хотел Вас попросить кинуть какой нибудь завершенный проект для Enterprise Architect, чтобы я подсмотрел Ваши идеи
Здравствуйте, Cynic, Вы писали:
C>Здравствуйте, Мемега, Вы писали:
М>>Сегодня вечером займусь
C>Ну и где Я уже заждался.
C>Я понял по картинкам с вашего сайта, что вы пользуетесь Enterprise Architect. Хотел Вас попросить кинуть какой нибудь завершенный проект для Enterprise Architect, чтобы я подсмотрел Ваши идеи
Дайте рабочий мейл, плиз, т.к. указанный в профайле не реагирует. Скину документ, нет времени оформлять на сайте
Здравствуйте, Мемега, Вы писали:
М>Дайте рабочий мейл, плиз, т.к. указанный в профайле не реагирует. Скину документ, нет времени оформлять на сайте
O-o-ops
Всё нормально с мылом, это спам-фильтр хулиганит