- Рекомендации по написанию спецификаций вариантов использования
- Имя варианта использования
- ID варианта использования
- Краткое описание
- Действующие лица
- Предусловия и постусловия
- Основной поток
- Пример 1
- Пример 1а
- Альтернативные потоки (ветвления и повторения)
- Условный выбор — Если
- Пример 2
- Повторение в потоке
- Пример 3
- Пример 4
- Моделирование альтернативных потоков
- Пример 5
- Пример 6
- Пример 7
- Выявление альтернативных потоков
- Использование диаграммы вариантов использования UML при проектировании программного обеспечения
- Диаграмма вариантов использования
- Построение диаграммы
- Связи между элементами
- Отношение ассоциации
- Отношение обобщения
- Отношение включения
- Отношение расширения
Рекомендации по написанию спецификаций вариантов использования
UML не определяет единых правил для создания спецификации вариантов использования или прецедентов (кому, что нравится). Однако существует ряд шаблонов, которыми Вы можете воспользоваться. Шаблон от Алистера Коберна. Шаблон от Карла Вигерса. Шаблон от RUP. Шаблон от ICONIX. Шаблон от OpenUP. И т.п. В конце концов Вы можете изобрести свой собственный шаблон. Нужно лишь придерживаться максимальной простоты.
Ниже будут представлены рекомендации и примеры вариантов использования на базе следующего шаблона:
Имя варианта использования
Нет стандарта.
Рекомендуем начинать с глагола или глагольной группы (отглагольного существительного). Например, Выплатить налог с оборота или Выплата налога с оборота.
Не смешивайте оба стиля в одной модели.
Является уникальным идентификатором в рамках модели ВИ
ID варианта использования
Суррогат идентификатора. Используется для облегчения и краткости при описании ссылок
Краткое описание
Изложение цели или сути варианта использования.
Один абзац.
Действующие лица
Каждый ВИ всегда инициируется одним ДЛ.
Но в разные моменты времени один и тот же вариант использования может быть инициирован разными ДЛ.
Любое действующее лицо, которое может инициировать вариант использования, является основным действующим лицом. Все остальные ДЛ — второстепенные.
Предусловия и постусловия
Ограничения
Предусловия определяют в каком состоянии должна находится система, чтобы запуск ВИ был возможным
Постусловия определяют, какие условия будут истинными после завершения ВИ
Рекомендуется явно указывать на отсутствие перд- и постусловий. Например, словом Нет.
Основной поток
«Идеальный» ход развития событий.
Все идет, как ожидается и хочется
Нет ошибок, отклонений, прерываний или ответвлений
Первый шаг рекомендуем записывать, так: 1. ВИ начинается, когда
Шаблон записи шага —
Пример 1
ВИ: Оплатить налог с оборота
ID: 1
Краткое описание:
Выплата налога с оборота в Налоговое управление по окончанию налогового периода
Основное действующее лицо:
Время (Таймер)
Второстепенные действующие лица:
Налоговое управление
Предусловия:
1. Конец налогового периода
Основной поток:
1. ВИ начинается в конце налогового периода
2. Система определяет сумму Налога с оборота, которую необходимо выплатить Налоговому управлению
3. Система посылает электронный платеж в Налоговое управление.
Постусловия:
1. Налоговое управление получает соответствующую сумму Налога с оборота
Альтернативные потоки:
Нет.
Если использование времени (или таймера) в качестве действующего лица вызывает затруднение в понимании, мы предлагаем другой вариант примера 1
Пример 1а
ВИ: Оплатить налог с оборота
ID: 1
Краткое описание:
Выплата налога с оборота в Налоговое управление по окончанию налогового периода
Основное действующее лицо:
Бухгалтер
Второстепенные действующие лица:
Налоговое управление
Предусловия:
1. Конец налогового периода
Основной поток:
1. ВИ начинается, когда Бухгалтер выбирает опцию «оплатить налог с оборота»
2. Система определяет сумму Налога с оборота, которую необходимо выплатить Налоговому управлению
3. Система посылает электронный платеж в Налоговое управление.
Постусловия:
1. Налоговое управление получает соответствующую сумму Налога с оборота
Альтернативные потоки:
Нет.
Альтернативные потоки (ветвления и повторения)
Сначала рассмотрим ситуацию простых ветвлений и повторений. Стоит отметить, что спецификация UML не определяет способа представления ветвления и повторения в потоке.
Ветвления потока или повторения в потоке можно сократить, уменьшая число вариантов использования, но пользоваться этим надо умеренно!
Условный выбор — Если
Пример 2
ВИ: Управлять торговой корзиной
ID: 2
Краткое описание:
Покупатель меняет количество товаров в корзине
Основные действующие лица:
Покупатель
Второстепенные действующие лица:
Нет
Предусловия:
1. Содержимое корзины для покупок является видимым
Основной поток:
1. ВИ начинается, когда Покупатель выбирает товарную позицию в корзине
2. Если Покупатель выбирает «удалить позицию»
2.1. Система удаляет позицию из корзины
3. Если Покупатель вводит новое количество
3.1. Система обновляет количество товаров в корзине
Постусловия:
Нет
Альтернативные потоки:
Нет.
Повторение в потоке
Пример 3
ВИ: Найти продукт
ID: 3
Краткое описание:
Система ищет некоторые продукты на основании критерия поиска, заданного Покупателем, и выводит их на экран для Покупателя
Основные действующие лица:
Покупатель
Второстепенные действующие лица:
Нет
Предусловия:
Нет
Основной поток:
1. ВИ начинается, когда Покупатель выбирает опцию «найти продукт»
2. Система запрашивает у Покупателя критерий поиска.
3. Покупатель вводит запрашиваемый критерий.
4. Система ищет продукты, соотвествующие критерию Покупателя.
5. Если система находит соответствующие продукты, тогда
5.1. Для каждого найденного продукта
5.1.1. система выводит на экран миниатюрное представление продукта
5.1.2. система выводит на экран краткое описание продукта
5.1.3. система выводит на экран цену продукта
6. Иначе
6.1. Система сообщает Покупателю о том, что соответствующие продукты не найдены.
Постусловия:
Нет
Альтернативные потоки:
Нет
Пример 4
ВИ: Показать данные о компании
ID: 4
Краткое описание:
Система выводит данные о компании для Покупателя
Основные действующие лица:
Покупатель
Второстепенные действующие лица:
Нет
Предусловия:
Нет
Основной поток:
1. ВИ начинается, когда Покупатель выбирает опцию «показать данные о компании»
2. Система выводит на экран веб-страницу с данными о компании.
3. Пока Покупатель просматривает данные о компании
3.1. Система воспроизводит некоторую фоновую мелодию
3.2. Система отображает специальные предложения в баннере
Постусловия:
1. Система показала данные о компании
2. Система воспроизвела фоновую мелодию
3. Система показала специльные предложения
Альтернативные потоки:
Нет
Моделирование альтернативных потоков
У каждого ВИ есть один основной поток и может быть множество альтернативных потоков.
Альтернативные потоки часто не возвращаются в основной поток ВИ. Это связано с тем, что они обычно обрабатывают ошибки и исключения основного потока и имеют другие постусловия.
Альтернативные потоки можно задокументировать в конце ВИ или отдельно. Здесь будет представлен второй вариант.
Спецификация альтернативного потока подобна спецификации всего ВИ.
Альтернативные потоки могут быть инициированы тремя разными способами:
1. вместо основного потока. Такая ситуация часто возникает в вариантах использования типа CRUD (Create, Read, Update, Delete)
2. после определенного этапа основного потока
3. в любой момент в ходе выполнения основного потока
Пример 5
ВИ: Создать новую учетную запись Покупателя
ID: 5
Краткое описание:
Система создает новую учетную запись для Покупателя
Основные действующие лица:
Покупатель
Второстепенные действующие лица:
Нет
Предусловия:
Нет
Основной поток:
1. ВИ начинается, когда Покупатель выбирает опцию «создать новую учетную запись Покупателя»
2. Пока данные Покупателя недействительны
2.1. Система просит Покупателя ввести его данные, включая адрес электронной почты, пароль и еще раз пароль для его подтверждения
2.2. Система проверяет действительность данных Покупателя
3. Система создает новую учетную запись для Покупателя
Постусловия:
Новая учетная запись создана для Покупателя
Альтернативные потоки:
Неверный email адрес
Неверный пароль
Отмена
Пример 6
Альтернативный поток: Создать новую учетную запись Покупателя:Неверный email адрес
ID: 5.1
Краткое описание:
Система сообщает Покупателю, что он ввел недействительный адрес электронной почты
Основные действующие лица:
Покупатель
Второстепенные действующие лица:
Нет
Предусловия:
Покупатель ввел недействительный адрес электронной почты
Альтернативные потоки:
1. АП начинается после шага 2.2 основного потока
2. Система сообщает Покупателю, что он ввел недействительный адрес электронной почты
Постусловия:
Нет
Пример 7
Альтернативный поток: Создать новую учетную запись Покупателя:Отмена
ID: 5.2
Краткое описание:
Покупатель отменяет процесс создания учетной записи
Основные действующие лица:
Покупатель
Второстепенные действующие лица:
Нет
Предусловия:
Нет
Альтернативные потоки:
1. АП начинается в любой момент времени
2. Покупатель отменяет создание учетной записи
Постусловия:
1. Новая учетная запись не была создана для Покупателя
Выявление альтернативных потоков
Изучите каждый шаг основного потока
Выделите возможные альтернативы основному потоку
Ошибки, которые могут возникнуть в основном потоке
Прерывания, которые могут случиться в конкретной точке основного потока
Прерывания, которые могут произойти в любой точке основного потока
Документируйте только самые важные альтернативные потоки
Данную статью оформил участник Сообщества Системных Аналитиков Эдуард Галиаскаров.
Источник
Использование диаграммы вариантов использования UML при проектировании программного обеспечения
Проектирование – один из важных шагов при разработке программы, который очень часто игнорируется начинающими разработчиками. Обычно они пытаются удержать всё в голове или, в лучшем случае, записать некоторые важные сведения на листе бумаги. Как результат, у них нет чёткого плана дальнейших действий, и проект может быть отложен в долгий ящик.
Обычно при проектировании разработчики изображают систему графически, поскольку человеку легко разобраться в таком представлении. Именно поэтому вместо написания громоздких текстов про каждую возможность будущей программы разработчики строят различные диаграммы для описания своих систем. Это помогает им не забывать, что нужно реализовать в программе, и быстро вводить в курс дела своих коллег.
Сегодня мы разберемся с тем, как использовать диаграмму вариантов использования UML (англ. «Unified Modeling Language») – стандартизированный язык моделирования при проектировании программ.
Данная статья предназначена для начинающих разработчиков и для разработчиков, не знакомых с UML, поэтому никаких предварительных знаний о диаграмме вариантов использования не требуется. Со всеми необходимыми сведениями я познакомлю читателя по ходу статьи.
Когда разработчик создаёт своё приложение, он в первую очередь задумывается над двумя вопросами:
Что будет делать приложение?
Кто будет пользоваться этим приложением?
Некоторыми программами может пользоваться множество людей, поэтому часто необходимо выделять различные группы пользователей системы. У каждой такой группы могут быть свои права и возможности в системе.
Для того чтобы описать различные группы пользователей и их возможности в будущей программе, создаётся так называемая диаграмма вариантов использования.
Диаграмма вариантов использования
Диаграмма вариантов использования (англ. use-case diagram) – диаграмма, описывающая, какой функционал разрабатываемой программной системы доступен каждой группе пользователей.
По ходу этой статьи мы разберём элементы этой диаграммы, которые чаще всего применяются при построении, на множестве небольших примеров диаграмм и на примере одной большой диаграммы. Эта большая диаграмма будет использоваться при проектировании какой-нибудь программной системы. В качестве такой системы давайте выберем информационную систему для школы (можно рассматривать ее как сайт или как отдельное приложение). Пример, разумеется, демонстрационный и не претендует на законченность.
В этой системе можно выделить следующие группы пользователей:
Заместители директора есть, а где же сам директор?
В целом, в реальной жизни директор имеет множество обязанностей (пожалуй, не будем их перечислять). Однако в электронной системе каких-то особенных действий у него нет, поэтому мы не будем изображать его на нашей диаграмме.
Каждая из групп пользователей может пользоваться нашей системой по-своему.
Просматривать свои оценки
Размещать материалы для уроков
Выставлять оценки в электронный журнал
Классные руководители могут делать все то же самое, что и преподаватели плюс:
Составлять расписание родительских собраний
Заместители директора могут:
Публиковать посты с важной информацией
Кроме того, у системы есть функционал, который доступен всем группам пользователей. В разрабатываемой нами системе актуально будет добавить мессенджер, в котором можно будет быстро связываться с интересующим человеком. Получается, эта функциональность должна быть доступна каждому пользователю. Так и запишем. Все пользователи могут:
Получилось много пунктов, которые может быть сложно уложить в голове. Для того чтобы быстро ориентироваться в этих пунктах, мы и хотим научиться строить диаграммы вариантов использования.
А почему мы описываем так мало возможностей?
Заметьте, что на диаграмме мы хотим отобразить только ключевой функционал системы. Например, действия «войти в систему», «выйти из системы» или «восстановить пароль» могут присутствовать в любой системе, и их наличие не стоит дополнительно описывать, поскольку это загрязняет диаграмму несущественными элементами.
Вообще добавление некоторых действий на диаграмме зависит от глубины детализации. Если вам все же требуется изобразить некоторые стандартные действия, ничто не помешает быстро это сделать.
А теперь, когда мы выделили группы пользователей и функциональность системы, начнём строить диаграмму, чтобы зафиксировать и структурировать полученные данные.
Построение диаграммы
Каждая группа пользователей на диаграмме вариантов использования обозначается человечком, под которым записывается имя группы людей, которую он обозначает. Давайте изобразим группу пользователей «Преподаватели»:
Этот человечек обозначает всех преподавателей, которые будут пользоваться системой
Обратите внимание, что имя группы записывается в единственном числе. Символ человечка уже обозначает группу пользователей, поэтому не нужно дополнительно отражать это в имени.
В терминологии UML, этот человечек называется актёром (англ. «actor»). В общем случае, актёр обозначает любые сущности, использующие систему. Этими сущностями могут быть люди, технические устройства или даже другие системы.
Так же изобразим актёров для оставшихся групп пользователей:
Здесь изображены все группы пользователей, которые могут пользоваться нашей системой
Как я упоминал ранее, каждая группа пользователей использует определённые функции системы. На диаграмме вариантов использования функция системы изображается эллипсом, внутри которого записывается имя функции в форме глагола с пояснительными словами.
Этот эллипс представляет действие «Выставить оценки в электронный журнал»
В терминологии UML, этот эллипс называется вариантом использования (англ. «use-case»). В общем случае, вариант использования – набор действий, который может быть использован актёром для взаимодействия с системой.
Связи между элементами
На диаграммах UML для связывания элементов используются различные соединительные линии, которые называются отношениями. Каждое такое отношение имеет собственное название и используется для достижения определённой цели. В качестве справочной информации перечислю все виды отношений, которые мы будем использовать в этой статье.
Отношение ассоциации (англ. «association relationship»)
Отношение обобщения (англ. «generalization relationship»)
Отношение включения (англ. «include relationship»)
Отношение расширения (англ. «extend relationship»)
Отношение ассоциации
Мы хотим отображать на диаграмме информацию о том, какие варианты использования могут быть использованы каждым актёром. Сейчас, например, мы хотим показать, что выставлять оценки могут только преподаватели.
Изображаем на диаграмме информацию о том, что преподаватели могут выставлять оценки
Мы соединили актеров с вариантом использования с помощью сплошной линии без стрелки. Такая линия называется отношением ассоциации.
Отношение ассоциации предназначено только для соединения актёров и вариантов использования. Нет никакого смысла соединять отношением ассоциации двух актёров или два варианта использования.
Изображаем на диаграмме возможность покупателей оплачивать заказы
Если на диаграмме вариантов использования актёр соединен с вариантом использования с помощью отношения ассоциации, это означает, что данный актёр может выполнять действия, описанные вариантом использования.
Почему отношение ассоциации называется так и не иначе?
Чтобы лучше понять это отношение, вспомним, каким образом мы выделяли функционал для различных групп пользователей. Некоторые обязанности у нас ассоциируются с определённой группой людей, поэтому мы связываем актёров с ассоциируемыми с ними действиями.
Добавим еще вариантов использования и соединим их с соответствующими актёрами:
Первая версия диаграммы
Пока что наша диаграмма совсем не впечатляет, поэтому мы продолжим наполнять ее информацией. Заодно мы узнаем все возможности этого вида диаграмм.
Отношение обобщения
Заметим, что в нашей системе группы пользователей «Преподаватель» и «Классный руководитель» обладают схожими возможностями. Чтобы изобразить это на диаграмме, мы можем пойти одним из трёх путей:
Дублировать варианты использования, чтобы связать их с каждым схожим актёром (очевидно, неудачный вариант).
Соединить каждого актёра со всеми нужными вариантами использования. Это может породить множество пересечений линий, что не самым лучшим образом скажется на читаемости диаграммы.
Показать с помощью одного из видов отношений, что актёры связаны между собой. Это будет означать, что один из них может пользоваться всеми вариантами использования, с которыми соединён другой актёр.
Последний вариант похож на принцип повторного использования кода при написании программ или на наследование классов в ООП (Объектно-ориентированное программирование). Преимущество этого варианта в том, чтобы уменьшить количество связей на диаграмме.
Разумеется, мы воспользуемся третьим путём. В этом нам поможет, так называемое, отношение обобщения. Отношение обобщения обозначается сплошной линией с полой треугольной стрелкой.
Отношение обобщения означает, что некоторый актёр (вариант использования) может быть обобщён до другого актёра (варианта использования). Стрелка направлена от частного случая(специализации) к общему случаю.
Ниже представлены несколько примеров использования отношения обобщения.
Покупка горного и скоростного велосипеда — ЧАСТНЫЙ случай покупки велосипеда
Физическое лицо и юридическое лицо можно ОБОБЩИТЬ до обычного покупателя
Как можно заметить, отношение обобщения используется, чтобы показать, что одно действие является частным случаем другого действия или что одну группу людей можно обобщить до другой группы.
Вернёмся к нашему основному примеру. Изобразим отношение обобщения от актёра «Кл. руководитель» к актёру «Преподаватель».
На рисунке сверху сразу видно, насколько понятнее становится диаграмма при использовании отношения обобщения: исчезли все повторы вариантов использования и пересечения линий. Разумеется, это огромный плюс для тех, кто будет читать эту диаграмму в дальнейшем.
Давайте обратим внимание на действие «Узнать свои оценки». Логично предположить, что обучающиеся захотят не только знать список своих оценок, но и знать свою среднюю оценку за некоторый период времени или среднюю оценку по определённому предмету.
Изобразим это на диаграмме. Для этого создадим два варианта использования «Узнать среднюю оценку за некоторый период времени» и «Узнать среднюю оценку по предмету» и соединим их с вариантом использования «Узнать свои оценки» отношением обобщения.
Уточняем на диаграмме, что у обучающихся есть возможность узнать среднюю оценку за некоторый период времени и средний балл по некоторому предмету
Присоединим это к основной диаграмме:
Вторая версия диаграммы
Отношение включения
Для заместителя директора мы отмечали, что ему нужно составлять расписания. Условно расписание можно поделить на три категории:
Всё это составляется заместителем директора, поэтому покажем это на диаграмме. Для этого будем использовать отношение включения. Отношение включения обозначается пунктирной линией с V-образной стрелкой на конце, над стрелкой добавляется надпись “include”.
В общем случае, отношение включения используется, чтобы показать, что некоторый вариант использования включает в себя другой вариант использования в качестве составной части.
Когда мы используем отношение включения, мы подразумеваем, что составные варианты использования ОБЯЗАТЕЛЬНО входят в состав общего варианта использования.
Поясню смысл и этого отношения на небольшом примере. Когда пользователь сохраняет результаты своей работы в файл, он указывает место сохранения и расширение файла (например, если он редактировал фотографию в photoshop, он может сохранить ее в различных форматах). Этот процесс можно изобразить на диаграмме вариантов использования следующим образом:
Отношение включения используется для изображения составного действия
Снова вернёмся к нашему основному примеру.
Составление расписания ВКЛЮЧАЕТ в себя составление расписания занятий, мероприятий, каникул(обязательно)
Как итог, наша диаграмма принимает следующий вид:
Третья версия диаграммы
В целом, на этом можно остановиться. Хоть наш пример и демонстрационный, он немного отражает функциональность реального приложения. Тем не менее, остался еще один элемент, который мы не рассмотрели.
Отношение расширения
Нужно сказать, что в диаграммах вариантов использования применяется ещё один вид связи – отношение расширения. На мой взгляд, применение отношение расширения несколько специфично, поскольку неправильное его использование может запутать читателя диаграммы. Тем не менее, для полноты картины мы всё равно рассмотрим применение этого отношения на практике. В последний раз модифицируем нашу диаграмму!
Во время дистанционного обучения школьникам необходимо выполнять домашние задания и присылать их в виде архива или фотографий учителям. Получается, нужно добавить возможность прикреплять файл к сообщению в нашей системе. Чтобы отобразить это на диаграмме мы будем использовать отношение расширения. Отношение расширения обозначается пунктирной линией с V-образной стрелкой на конце (похоже на отношение включения), над стрелкой добавляется надпись “extend ”.
Зачем над пунктирными линиями добавлять надписи “include” и “extend”?
В UML пунктирная линия с V-образной стрелкой, в общем случае, называется отношением зависимости. Для диаграммы вариантов использования выделяют различные виды зависимостей: отношение включения и отношение расширения. Чтобы их различать, над стрелками пунктирной линией пишут “include” и “extend” соответственно.
Чтобы лучше понять этот тип отношений рассмотрим пример. Допустим, вы делаете заказ в сети быстрого питания. Вы хотите заказать бургер. Вам, скорее всего, вам предложат расширить ваш заказ картошкой фри или соусом. Давайте изобразим процесс заказа на диаграмме вариантов использования.
На диаграмме предполагается, что к заказу МОЖЕТ БЫТЬ добавлена картошка фри или соус (необязательно)
Два нижних варианта использования описывают возможные «расширения» для базового варианта использования. Исходя из этого примера, мы можем сделать важное замечание.
Можно сказать, что отношение расширения — это выборочное отношение включения. Если отношение включения обозначает, что элемент обязательно включается в состав другого элемента, то в случае отношения расширения это включение необязательно.
Понимание этого критически важно для грамотного использования этого вида отношений.
Вернёмся к нашему основному примеру. Мы хотим, чтобы действие «прикрепить файл к сообщению» расширяло действие «отправить сообщение». На диаграмме это изображается следующим образом:
Расширяем функционал отправки сообщений с помощью функции прикрепления файлов к сообщению (Необязательно прикреплять файл к каждому сообщению)
Как итог, получим такую диаграмму:
Четвёртая версия диаграммы
Вот и всё. Я постарался рассказать вам про все моменты построения диаграммы вариантов использования при проектировании программных систем. В следующем вашем проекте обязательно попробуйте построить данную диаграмму на стадии проектирования. Ваши усилия обязательно окупятся!
Что делать, если я путаюсь в направлении стрелок?
При построении диаграмм UML часто возникает путаница, в какую сторону направлена та или иная стрелка. Это пройдёт после небольшой практики. Общая рекомендация к запоминанию правильного направления стрелок на диаграмме вариантов использования: стрелка обычно направлена от «зависимого» объекта к «независимому» (от специального к общему). Например:
Проектирование программы ЗАВИСИТ от составления функциональных требований, обдумывания функционала программы, выделения групп пользователей ,потому что ВКЛЮЧАЕТ в себя эти этапы
Программист на каждом следующем уровне должности ПЕРЕНИМАЕТ знания с предыдущих уровней, без которых не может развиваться дальше. Получается, что актёры ЗАВИСЯТ от предыдущих ступеней
Тем не менее, в любом правиле есть исключение. Этим исключением является отношение расширение:
Если DLC было куплено, то игра зависит от контента, который содержится в нём. Наше правило «зависимости» рушится 🙁
Диаграммы очень просто изменять. Не нужно пугаться того, что требования к программе могут измениться или что вы что-то забыли отобразить на диаграмме. Вы можете добавить элементы к диаграмме, когда вам угодно.
Не нужно засорять диаграмму слишком мелкими действиями. Объедините все общие действия в одну группу под общим названием, чтобы было просто читать диаграмму.
Старайтесь не допускать пересечений соединительных линий. Это может затруднить чтение диаграммы для вас и для ваших коллег.
Не дублируйте варианты использования на диаграмме. Если приходится дублировать варианты использования, то элементы диаграммы надо постараться расставить по-другому.
Пользуйтесь специальными компьютерными программами для построения диаграмм. Это существенно упростит весь процесс моделирования.
Источник