Сценарий варианта использования uml

Проектирование – один из важных шагов при разработке программы, который очень часто игнорируется начинающими разработчиками. Обычно они пытаются удержать всё в г...

Проектирование – один из важных шагов при разработке программы, который очень часто игнорируется начинающими разработчиками. Обычно они пытаются удержать всё в голове или, в лучшем случае, записать некоторые важные сведения на листе бумаги. Как результат, у них нет чёткого плана дальнейших действий, и проект может быть отложен в долгий ящик.

Обычно при проектировании разработчики изображают  систему графически, поскольку человеку легко разобраться в таком представлении. Именно поэтому вместо написания громоздких текстов про каждую возможность будущей программы разработчики строят различные диаграммы для описания своих систем. Это помогает им не забывать, что нужно реализовать в программе, и быстро вводить в курс дела своих коллег.


Сегодня мы разберемся с тем, как использовать диаграмму вариантов использования UML (англ. «Unified Modeling Language») – стандартизированный язык моделирования при проектировании программ.

Данная статья предназначена для начинающих разработчиков и для разработчиков, не знакомых с UML, поэтому никаких предварительных знаний о диаграмме вариантов использования не требуется. Со всеми необходимыми сведениями я познакомлю читателя по ходу статьи.

Когда разработчик создаёт своё приложение, он в первую очередь задумывается над двумя вопросами:

  • Что будет делать приложение?

  • Кто будет пользоваться этим приложением?

Некоторыми программами может пользоваться множество людей, поэтому часто необходимо выделять различные группы пользователей системы. У каждой такой группы могут быть свои права и возможности в системе.

Для того чтобы описать различные группы пользователей и их возможности в будущей программе, создаётся так называемая диаграмма вариантов использования.

Диаграмма вариантов использования

Диаграмма вариантов использования (англ. use-case diagram) – диаграмма, описывающая, какой функционал разрабатываемой программной системы доступен каждой группе пользователей.

По ходу этой статьи мы разберём элементы этой диаграммы, которые чаще всего применяются при построении, на множестве небольших примеров диаграмм и на примере одной большой диаграммы. Эта большая диаграмма будет использоваться при проектировании какой-нибудь программной системы. В качестве такой системы давайте выберем информационную систему для школы (можно рассматривать ее как сайт или как отдельное приложение). Пример, разумеется, демонстрационный и не претендует на законченность.

В этой системе можно выделить следующие группы пользователей:

  • Обучающиеся

  • Преподаватели

  • Классные руководители

  • Заместители директора

Заместители директора есть, а где же сам директор?

В целом, в реальной жизни директор имеет множество обязанностей (пожалуй, не будем их перечислять). Однако в электронной системе каких-то особенных действий у него нет, поэтому мы не будем изображать его на нашей диаграмме.

Каждая из групп пользователей может пользоваться нашей системой по-своему.

Обучающиеся могут:

  • Смотреть расписание

  • Просматривать свои оценки

Преподаватели могут:

  • Размещать материалы для уроков

  • Выставлять оценки в электронный журнал

Классные руководители могут делать все то же самое, что и преподаватели плюс:

  • Составлять расписание родительских собраний

Заместители директора могут:

  • Составлять расписание

  • Публиковать посты с важной информацией

Кроме того, у системы есть функционал, который доступен всем группам пользователей. В разрабатываемой нами системе актуально будет добавить мессенджер, в котором можно будет быстро связываться с интересующим человеком. Получается, эта функциональность должна быть доступна каждому пользователю. Так и запишем. Все пользователи могут:

  • Отправлять сообщения

Получилось много пунктов, которые может быть сложно уложить в голове. Для того чтобы быстро ориентироваться в этих пунктах, мы и хотим научиться строить диаграммы вариантов использования.

А почему мы описываем так мало возможностей?

Заметьте, что на диаграмме мы хотим отобразить только ключевой функционал системы. Например, действия «войти в систему», «выйти из системы» или «восстановить пароль» могут присутствовать в любой системе, и их наличие не стоит дополнительно описывать, поскольку это загрязняет диаграмму несущественными элементами.

Вообще добавление некоторых действий на диаграмме зависит от глубины детализации. Если вам все же требуется изобразить некоторые стандартные действия, ничто не помешает быстро это сделать.

А теперь, когда мы выделили группы пользователей и функциональность системы, начнём строить диаграмму, чтобы зафиксировать и структурировать полученные данные.

Построение диаграммы

Каждая группа пользователей на диаграмме вариантов использования обозначается человечком, под которым записывается имя группы людей, которую он обозначает. Давайте изобразим группу пользователей «Преподаватели»:

Этот человечек обозначает всех преподавателей,
которые будут пользоваться системой

Этот человечек обозначает всех преподавателей,
которые будут пользоваться системой

Обратите внимание, что имя группы записывается в единственном числе. Символ человечка уже обозначает группу пользователей, поэтому не нужно дополнительно отражать это в имени.

В терминологии UML, этот человечек называется актёром (англ. «actor»). В общем случае, актёр обозначает любые сущности, использующие систему. Этими сущностями могут быть люди, технические устройства или даже другие системы.

Так же изобразим актёров для оставшихся групп пользователей:

Здесь изображены все группы пользователей, которые могут пользоваться нашей системой

Здесь изображены все группы пользователей, которые могут пользоваться нашей системой

Как я упоминал ранее, каждая группа пользователей использует определённые функции системы. На диаграмме вариантов использования функция системы изображается эллипсом, внутри которого записывается имя функции в форме глагола с пояснительными словами.

Этот эллипс представляет действие
"Выставить оценки в электронный журнал"

Этот эллипс представляет действие
«Выставить оценки в электронный журнал»

В терминологии UML, этот эллипс называется вариантом использования (англ. «use-case»). В общем случае, вариант использования – набор действий, который может быть использован актёром для взаимодействия с системой.

Связи между элементами

На диаграммах UML для связывания элементов используются различные соединительные линии, которые называются отношениями. Каждое такое отношение имеет собственное название и используется для достижения определённой цели. В качестве справочной информации перечислю все виды отношений, которые мы будем использовать в этой статье.

Отношение ассоциации (англ. "association relationship")

Отношение ассоциации (англ. «association relationship»)
Отношение обобщения (англ. "generalization relationship")
Отношение обобщения (англ. «generalization relationship»)
Отношение включения (англ. "include relationship")
Отношение включения (англ. «include relationship»)
Отношение расширения (англ. "extend relationship")
Отношение расширения (англ. «extend relationship»)

Отношение ассоциации

Мы хотим отображать на диаграмме информацию о том, какие варианты использования могут быть использованы каждым актёром. Сейчас, например, мы хотим показать, что выставлять оценки могут только преподаватели.

Изображаем на диаграмме информацию о том, что преподаватели могут выставлять оценки

Изображаем на диаграмме информацию о том, что преподаватели могут выставлять оценки

Мы соединили актеров с вариантом использования с помощью сплошной линии без стрелки. Такая линия называется отношением ассоциации.

Отношение ассоциации предназначено только для соединения актёров и вариантов использования. Нет никакого смысла соединять отношением ассоциации двух актёров или два варианта использования.

Изображаем на диаграмме возможность покупателей оплачивать заказы

Изображаем на диаграмме возможность покупателей оплачивать заказы

Если на диаграмме вариантов использования актёр соединен с вариантом использования с помощью отношения ассоциации, это означает, что данный актёр может выполнять действия, описанные вариантом использования.

Почему отношение ассоциации называется так и не иначе?

Чтобы лучше понять это отношение, вспомним, каким образом мы выделяли функционал для различных групп пользователей. Некоторые обязанности у нас ассоциируются с определённой группой людей, поэтому мы связываем актёров с ассоциируемыми с ними действиями.

Добавим еще вариантов использования и соединим их с соответствующими актёрами:

Первая версия диаграммы

Первая версия диаграммы

Пока что наша диаграмма совсем не впечатляет, поэтому мы продолжим наполнять ее информацией. Заодно мы узнаем все возможности этого вида диаграмм.

Отношение обобщения

Заметим, что в нашей системе группы пользователей «Преподаватель» и «Классный руководитель» обладают схожими возможностями. Чтобы изобразить это на диаграмме, мы можем пойти одним из трёх путей:

  1. Дублировать варианты использования, чтобы связать их с каждым схожим актёром (очевидно, неудачный вариант).

  2. Соединить каждого актёра со всеми нужными вариантами использования. Это может породить множество пересечений линий, что не самым лучшим образом скажется на читаемости диаграммы.

  3. Показать с помощью одного из видов отношений, что актёры связаны между собой. Это будет означать, что один из них может пользоваться всеми вариантами использования, с которыми соединён другой актёр.

Последний вариант похож на принцип повторного использования кода при написании программ или на наследование классов в ООП (Объектно-ориентированное программирование). Преимущество этого варианта в том, чтобы уменьшить количество связей на диаграмме.

Разумеется, мы воспользуемся третьим путём. В этом нам поможет, так называемое, отношение обобщения. Отношение обобщения обозначается сплошной линией с полой треугольной стрелкой.

Отношение обобщения означает, что некоторый актёр (вариант использования) может быть обобщён до другого актёра (варианта использования).  Стрелка направлена  от частного случая(специализации) к общему случаю.

Ниже представлены несколько примеров использования отношения обобщения.

Покупка горного и скоростного велосипеда -
ЧАСТНЫЙ случай покупки велосипеда

Покупка горного и скоростного велосипеда —
ЧАСТНЫЙ случай покупки велосипеда
Физическое лицо и юридическое лицо
можно ОБОБЩИТЬ до обычного покупателя
Физическое лицо и юридическое лицо
можно ОБОБЩИТЬ до обычного покупателя

Как можно заметить, отношение обобщения используется, чтобы показать, что одно действие является частным случаем другого действия или что одну группу людей можно обобщить до другой группы.

Вернёмся к нашему основному примеру. Изобразим отношение обобщения от актёра «Кл. руководитель» к актёру «Преподаватель».

На рисунке сверху сразу видно, насколько понятнее становится диаграмма при использовании отношения обобщения: исчезли все повторы вариантов использования и пересечения линий. Разумеется, это огромный плюс для тех, кто будет читать эту диаграмму в дальнейшем.

Давайте обратим внимание на действие «Узнать свои оценки». Логично предположить, что обучающиеся захотят не только знать список своих оценок, но и знать свою среднюю оценку за некоторый период времени или среднюю оценку по определённому предмету.

Изобразим это на диаграмме. Для этого создадим два варианта использования «Узнать среднюю оценку за некоторый период времени» и «Узнать среднюю оценку по предмету» и соединим их с вариантом использования «Узнать свои оценки» отношением обобщения.

Уточняем на диаграмме, что у обучающихся есть возможность узнать среднюю оценку за некоторый 
период времени и средний балл по некоторому предмету

Уточняем на диаграмме, что у обучающихся есть возможность узнать среднюю оценку за некоторый
период времени и средний балл по некоторому предмету

Присоединим это к основной диаграмме:

Вторая версия диаграммы

Вторая версия диаграммы

Отношение включения

Для заместителя директора мы отмечали, что ему нужно составлять расписания. Условно расписание можно поделить на три категории:

  1. Расписание занятий

  2. Расписание мероприятий

  3. Расписание каникул

Всё это составляется заместителем директора, поэтому покажем это на диаграмме. Для этого будем использовать отношение включения. Отношение включения обозначается пунктирной линией с V-образной стрелкой на конце, над стрелкой добавляется надпись “include”.

В общем случае, отношение включения используется, чтобы показать, что некоторый вариант использования включает в себя другой вариант использования в качестве составной части.

Когда мы используем отношение включения, мы подразумеваем, что составные варианты использования ОБЯЗАТЕЛЬНО входят в состав общего варианта использования.

Поясню смысл и этого отношения на небольшом примере. Когда пользователь сохраняет результаты своей работы в файл, он указывает место сохранения и расширение файла (например, если он редактировал фотографию в photoshop, он может сохранить ее в различных форматах). Этот процесс можно изобразить на диаграмме вариантов использования следующим образом:

Отношение включения используется для
изображения составного действия

Отношение включения используется для
изображения составного действия

Снова вернёмся к нашему основному примеру.

Составление расписания ВКЛЮЧАЕТ в себя составление
расписания занятий, мероприятий, каникул(обязательно)

Составление расписания ВКЛЮЧАЕТ в себя составление
расписания занятий, мероприятий, каникул(обязательно)

Как итог, наша диаграмма принимает следующий вид:

Третья версия диаграммы

Третья версия диаграммы

В целом, на этом можно остановиться. Хоть наш пример и демонстрационный, он немного отражает функциональность реального приложения. Тем не менее, остался еще один элемент, который мы не рассмотрели.

Отношение расширения

Нужно сказать, что в диаграммах вариантов использования применяется ещё один вид связи – отношение расширения. На мой взгляд, применение отношение расширения несколько специфично, поскольку неправильное его использование может запутать читателя диаграммы. Тем не менее, для полноты картины мы всё равно рассмотрим применение этого отношения на практике. В последний раз модифицируем нашу диаграмму!

Во время дистанционного обучения школьникам необходимо выполнять домашние задания и присылать их в виде архива или фотографий учителям. Получается, нужно добавить возможность прикреплять файл к сообщению в нашей системе. Чтобы отобразить это на диаграмме мы будем использовать отношение расширения. Отношение расширения обозначается пунктирной линией с V-образной стрелкой на конце (похоже на отношение включения), над стрелкой добавляется надпись “extend ”.

Зачем над пунктирными линиями добавлять надписи “include” и “extend”?

В UML пунктирная линия с V-образной стрелкой, в общем случае, называется отношением зависимости. Для диаграммы вариантов использования выделяют различные виды зависимостей: отношение включения и отношение расширения. Чтобы их различать, над стрелками пунктирной линией пишут “include” и “extend” соответственно.

Чтобы лучше понять этот тип отношений рассмотрим пример. Допустим, вы делаете заказ в сети быстрого питания. Вы хотите заказать бургер. Вам, скорее всего, вам предложат расширить ваш заказ картошкой фри или соусом. Давайте изобразим процесс заказа на диаграмме вариантов использования.

На диаграмме предполагается, что к заказу МОЖЕТ БЫТЬ
добавлена картошка фри или соус (необязательно)

На диаграмме предполагается, что к заказу МОЖЕТ БЫТЬ
добавлена картошка фри или соус (необязательно)

Два нижних варианта использования описывают возможные «расширения» для базового варианта использования. Исходя из этого примера, мы можем сделать важное замечание.

Можно сказать, что отношение расширения — это выборочное отношение включения. Если отношение включения обозначает, что элемент обязательно включается в состав другого элемента, то в случае отношения расширения это включение необязательно.

Понимание этого критически важно для грамотного использования этого вида отношений.

Вернёмся к нашему основному примеру. Мы хотим, чтобы действие «прикрепить файл к сообщению» расширяло действие «отправить сообщение». На диаграмме это изображается следующим образом:

Расширяем функционал отправки сообщений
с помощью функции прикрепления файлов к сообщению
(Необязательно прикреплять файл к каждому сообщению)

Расширяем функционал отправки сообщений
с помощью функции прикрепления файлов к сообщению
(Необязательно прикреплять файл к каждому сообщению)

Как итог, получим такую диаграмму:

Четвёртая версия диаграммы

Четвёртая версия диаграммы

Вот и всё. Я постарался рассказать вам про все моменты построения диаграммы вариантов использования при проектировании программных систем. В следующем вашем проекте обязательно попробуйте построить данную диаграмму на стадии проектирования. Ваши усилия обязательно окупятся!

Что делать, если я путаюсь в направлении стрелок?

При построении диаграмм UML часто возникает путаница, в какую сторону направлена та или иная стрелка. Это пройдёт после небольшой практики. Общая рекомендация к запоминанию правильного направления стрелок на диаграмме вариантов использования: стрелка обычно направлена от «зависимого» объекта к «независимому» (от специального к общему). Например:

Проектирование программы ЗАВИСИТ от составления
функциональных требований, обдумывания функционала программы,
выделения групп пользователей ,потому что ВКЛЮЧАЕТ в
себя эти этапы

Проектирование программы ЗАВИСИТ от составления
функциональных требований, обдумывания функционала программы,
выделения групп пользователей ,потому что ВКЛЮЧАЕТ в
себя эти этапы
Программист на каждом следующем уровне должности
ПЕРЕНИМАЕТ знания с предыдущих уровней,
без которых не может развиваться дальше. Получается,
что актёры ЗАВИСЯТ от предыдущих ступеней
Программист на каждом следующем уровне должности
ПЕРЕНИМАЕТ знания с предыдущих уровней,
без которых не может развиваться дальше. Получается,
что актёры ЗАВИСЯТ от предыдущих ступеней

Тем не менее, в любом правиле есть исключение. Этим исключением является отношение расширение:

Если DLC было куплено, то игра зависит от
контента, который содержится в нём.
Наше правило "зависимости" рушится :(

Если DLC было куплено, то игра зависит от
контента, который содержится в нём.
Наше правило «зависимости» рушится :(

Общие рекомендации:

  1. Диаграммы очень просто изменять. Не нужно пугаться того, что требования к программе могут измениться или что вы что-то забыли отобразить на диаграмме. Вы можете добавить элементы к диаграмме, когда вам угодно.

  2. Не нужно засорять диаграмму слишком мелкими действиями. Объедините все общие действия в одну группу под общим названием, чтобы было просто читать диаграмму.

  3. Старайтесь не допускать пересечений соединительных линий. Это может затруднить чтение диаграммы для вас и для ваших коллег.

  4. Не дублируйте варианты использования на диаграмме. Если приходится дублировать варианты использования, то элементы диаграммы надо постараться расставить по-другому.

  5. Пользуйтесь специальными компьютерными программами для построения диаграмм. Это существенно упростит весь процесс моделирования.

  • Что такое диаграмма вариантов использования?

    Диаграммы вариантов использования UML являются основной формой требований к системе/программному обеспечению для новых разрабатываемых программ. Цель диаграммы прецедентов — визуализировать, что система должна делать (что); на данном этапе не рассматривает, как (как) это сделать.

    Как только вариант использования определен, его можно представить в текстовом и визуальном представлении (т. е. в виде диаграммы вариантов). Ключевой концепцией моделирования вариантов использования является то, что оно помогает нам проектировать систему с точки зрения конечного пользователя. Это эффективный способ сообщить о поведении системы с точки зрения пользователя, указав все внешне видимые варианты поведения системы.

    Другими словами, использование системы необходимо рассматривать извне, то есть систему следует рассматривать не изнутри, а с более высокого уровня, чтобы определить функциональность, которую система должна предоставлять внешним акторам.

    Назначение диаграмм вариантов использования

    Диаграммы вариантов использования обычно разрабатываются на ранних стадиях разработки, и люди часто используют моделирование вариантов использования для следующих целей.

    • Укажите контекст системы
    • Зафиксируйте требования системы
    • Проверить архитектуру системы
    • Управляйте внедрением и создавайте тестовые примеры
    • Совместная разработка аналитиками, экспертами в предметной области и целевыми конечными пользователями

    Стандартная форма диаграммы прецедентов определена в унифицированном языке моделирования, как показано в примере диаграммы прецедентов ниже.

    Учебное пособие по диаграмме прецедентов

    ИЗМЕНИТЬ ЭТОТ ПРИМЕР ДИАГРАММЫ ВАРИАНТОВ ИСПОЛЬЗОВАНИЯ

    Элементы диаграммы вариантов использования

    Актеры

    Каждый вариант использования будет иметь как минимум одного действующего лица, под которым можно понимать как минимум одного участника (роль), который не обязательно является человеком, но может быть другой системой или устройством. Актер может взаимодействовать с более чем одним вариантом использования, а вариант использования может взаимодействовать с более чем одним актером.

    Действующие лица не обязательно являются людьми, т.е. пользователями, но на самом деле они могут быть и не людьми, т.е. системами или временем.

    Чаще всего пользователями являются люди, вовлеченные в диаграмму вариантов использования, такие как клиенты, сотрудники, руководители и т. д.

    Люди против нечеловеческих актеров

    Время от времени на систему воздействуют различные события для выполнения определенных функций в той или иной ситуации. Например, при прохождении аудита система заранее отправляет письмо, чтобы уведомить людей; так отправка письма осуществляется системой автоматически? Этот вариант использования на самом деле запускается по времени, тогда действующим лицом является Таймер; например, этот вариант использования можно рассматривать как «автоматически отправлять письмо в 5:00 каждый день», тогда актор, который запускает это событие — отправку письма — не система, а на самом деле актор-таймер

    Первичные и второстепенные актеры

    A primary actor is an actor that uses the system to achieve a goal. Use cases document the interactions between the system and actors to achieve the goals of the primary actor. Secondary actors are the actors that the system needs to assist in order to achieve the goals of the primary actor.

    • Actors may be primary or secondary. Primary actors initiate interactions with the system.
    • Secondary actors are typically called upon by the system for help and a secondary actor never initiates the use case.

    Note that: The symbol for an actor does not differentiate between a primary actor and a secondary actor; the difference must be inferred from the use case descriptions (also called use case narratives).

    For Example:

    A bank loan officer wants to review a customer’s loan application, and part of the process involves a real-time credit rating check.

    ИЗМЕНИТЬ ЭТОТ ПРИМЕР ДИАГРАММЫ ВАРИАНТОВ ИСПОЛЬЗОВАНИЯ

    • Используйте имя дела. Рассмотреть заявку на кредит
    • Главный актер. Кредитный специалист
    • Второстепенный актер. Система кредитного рейтинга

    Как определить актеров?

    Поскольку действующее лицо не обязательно является человеком, а может быть внешней системой, устройством или таймером, мы находим более конкретное действующее лицо, задавая следующие вопросы.

    • Кто будет использовать систему после ее разработки?
    • От кого или от каких других систем система должна будет получать данные?
    • Для кого или для каких других систем система будет предоставлять данные?
    • С какими другими системами будет связана система?
    • Кто будет поддерживать и администрировать систему?

    Эти вопросы помогают нам абстрагироваться от действующих лиц системы. Используя банкоматы в качестве примера, ответы на эти вопросы позволяют нам найти больше действующих лиц, т.е.

    • Оператор несет ответственность за техническое обслуживание и управление системой банкоматов.
    • Банкоматы также должны взаимодействовать с внутренними серверами для получения информации об учетных записях пользователей.

    Вариант использования

    Вариант использования представляет собой функциональность (обычно требование), которая, как ожидается, будет реализована системой. Детали варианта использования, кроме его уникального имени, визуально не представлены на диаграмме; эти детали приведены в описательной части (текстовом описании) варианта использования.

    Вариант использования — это список действий или шагов события, которые обычно определяют взаимодействие между ролями действующих лиц и системой для достижения цели. Сценарии использования — полезный метод для выявления, уточнения и организации системных требований. Вариант использования состоит из набора последовательностей возможных взаимодействий между системой и пользователем, которые определяют функциональные возможности, которые должны быть достигнуты, и решения для любых ошибок, которые могут возникнуть.

    Как определить варианты использования?

    Как только мы найдем акторов, мы можем определить варианты использования системы на основе акторов, в основном глядя на то, какие услуги нужны каждому актору от системы или как акторы используют систему. Идентификацию вариантов использования можно начать со следующих вопросов (для каждого участника).

    • Почему актеры используют систему?
    • Создает ли участник, изменяет, удаляет, получает доступ и хранит данные в системе? Если да, то как актор выполняет эти операции?
    • Уведомляет ли актор систему об определенных внешних событиях?
    • Уведомляет ли система актора об определенных внутренних событиях?

    Собрав все вышесказанное, диаграмму вариантов использования системы банкоматов можно представить следующим образом.

    Вариант использования представлен многоточием чего-то статического или динамического, задачи или системы.

    Системная граница

    Границы системы описывают систему, группируя варианты использования в прямоугольные границы, а границы системы в Visual Paradigm обеспечивают поведение ограничения вариантов использования.

    Актеры — это роли (актеры-люди или актеры, не являющиеся людьми), которые взаимодействуют с разрабатываемой системой. Следовательно, акторы должны быть размещены за пределами системных границ и взаимодействовать с вариантами использования, размещенными внутри системных границ.

    Обратите внимание, что: 

    Актер определяется границами системы. Если граница системы, которую мы хотим определить, ограничена самим банкоматом, то внутренний сервер является внешней системой и может быть абстрагирован как действующее лицо.

    Если граница системы, которую мы хотим определить, распространяется на всю банковскую систему, где и банкоматы, и внутренние серверы являются частью всей банковской системы, то внутренний сервер больше не абстрагируется как действующее лицо.

    Отношение

    Узнав об этих трех ключевых символах, продолжайте изучать отношения и рисовать диаграммы вариантов использования. Рисуется прямая связь между участником и пользовательским вариантом, и эта связь используется в виде линии без стрелок, указывающей на двустороннюю связь, называемую линией связи.

    Вариант использования можно разбить на несколько вариантов использования, которые связаны отношениями <<включить>>, <<расширить>> или <<обобщить>> (описано далее в этом посте).

    Связь канала связи

    Это представляет собой двустороннюю связь между действующим лицом и вариантом использования и, следовательно, является бинарным отношением.

    ИЗМЕНИТЬ ЭТОТ ПРИМЕР ДИАГРАММЫ ВАРИАНТОВ ИСПОЛЬЗОВАНИЯ

    <<Включить>> Связь

    Отношение включения означает, что вариант использования будет включать в себя другие варианты использования. Цель Include Relationship состоит в том, чтобы использовать Include Relationship, чтобы уменьшить повторение повторного описания одного и того же варианта использования. Если во многих прецедентах используется одна и та же функция части, то функция может быть выделена, а другие прецеденты могут быть включены в прецедент.

    Например, библиотекарю необходимо прочитать код для записи одолженной книги, когда книга выдается, а также необходимо прочитать код для записи возвращенной книги, когда книга возвращается, поскольку чтение кода является повторяющейся частью действия. , его можно сделать отдельным вариантом использования, и пусть заимствованная книга и возвращенная книга включают этот вариант.

    ИЗМЕНИТЬ ЭТОТ ПРИМЕР ДИАГРАММЫ ВАРИАНТОВ ИСПОЛЬЗОВАНИЯ

    Если вариант использования A включает в себя другой вариант использования B, то реализация A требует реализации B для выполнения своей задачи. Однако B не зависит от самого себя. То есть B не нужно ничего знать об A. B также может быть включен в любой другой вариант использования.

    <<Расширить>> отношения

    Если вариант использования B расширяет другой вариант использования A, то реализация A может условно включать реализацию B для выполнения своей задачи. То есть в некоторых случаях А может выполнить свою задачу без В. Однако в зависимости от описанных условий А может потребовать В. В этом случае В зависит от В. Однако в зависимости от описанных условий А может потребовать В В этом случае В зависит от А и не может существовать отдельно. По этой причине B нельзя распространить более чем на один вариант использования. Описание варианта использования A будет включать этапы выполнения, требуемые от B; эта точка называется точкой расширения.

    ИЗМЕНИТЬ ЭТОТ ПРИМЕР ДИАГРАММЫ ВАРИАНТОВ ИСПОЛЬЗОВАНИЯ

    Давайте рассмотрим еще один пример, когда система автоматически заказывает товары при отсутствии запасов, чтобы менеджеру не приходилось выполнять заказ напрямую. См. диаграмму вариантов использования ниже:

    ИЗМЕНИТЬ ЭТОТ ПРИМЕР ДИАГРАММЫ ВАРИАНТОВ ИСПОЛЬЗОВАНИЯ

    Отношение обобщения

    Обобщенное отношение похоже на обобщенное отношение объектно-ориентированного языка на диаграммах классов и может применяться к обобщению ролей (акторов) и вариантов использования.

    Например, в системе бронирования есть два типа методов бронирования: «забронировать билет по телефону» и «забронировать билет через Интернет», а также базовый вариант использования «забронировать билет», поэтому вы можете использовать обобщение для формирования случая, и добавьте <<essential>> к родительскому варианту использования (бронирование), чтобы указать обобщенную связь.

    ИЗМЕНИТЬ ЭТОТ ПРИМЕР ДИАГРАММЫ ВАРИАНТОВ ИСПОЛЬЗОВАНИЯ

    Обсудите отношения в диаграмме вариантов использования

    • На общей диаграмме вариантов использования мы представляем только отношения между действующими лицами и вариантами использования, т. е. коммуникационные связи между ними.
    • Кроме того, мы также можем описать обобщение между участниками и действующими лицами, а также отношения включения, расширения и обобщения между вариантами использования.
    • Мы используем эти отношения для адаптации существующей модели вариантов использования и извлечения некоторой общей информации для повторного использования, что упрощает поддержку модели вариантов использования.
    • Однако мы должны быть осторожны при выборе этих отношений в приложении. Как правило, эти отношения увеличивают количество вариантов использования и отношений, тем самым увеличивая сложность модели вариантов использования.
    • Кроме того, модель вариантов использования обычно корректируется после ее завершения, поэтому нет необходимости спешить с абстрагированием отношений между вариантами использования на ранней стадии моделирования вариантов использования.

    Вариант использования — поток событий

    Диаграмма вариантов использования дает нам общее представление о функциональности системы, мы можем знать, какие участники будут взаимодействовать с системой и какие услуги каждый участник должен получить от системы.

    Вариант использования описывает диалог между субъектами и системой, но детали этого диалога не представлены на диаграмме вариантов использования, поэтому для каждого варианта использования мы можем описать детали этого диалога в терминах потока событий.

    Сценарии использования и поток событий – снятие денег через банкомат

    Например, кейс «Снятие денег» в банкомате можно представить потоком событий следующим образом:

    Обычный сценарий – вывод средств – основной ход событий:

    1. Пользователь вставляет кредитную карту
    2. Введите PIN-код
    3. Введите сумму вывода
    4. Снимает наличные
    5. Выйдите из системы и получите кредитную карту

    Но это описывает только обычный сценарий использования вывода средств. Как реальная система банкоматов, мы также должны учитывать различные другие сценарии, которые могут возникнуть, такие как:

    • недействительные кредитные карты,
    • неправильные пароли,
    • недостаточный остаток денежных средств на счету пользователя и т. д.

    Все эти возможные ситуации (как нормальные, так и нештатные) называются сценариями варианта использования, а сценарии также называются экземплярами варианта использования. Сценарии также называют экземплярами вариантов использования. Среди различных сценариев варианта использования наиболее распространенный сценарий описывается базовым процессом, тогда как другие сценарии описываются альтернативными процессами.

    Альтернативные сценарии

    Для варианта использования «Снятие средств» в системе банкомата мы можем получить несколько альтернативных процессов следующим образом.

    Снятие – альтернативные процессы событий.

    1. Альтернативный сценарий I: Пользователь может отказаться на любом шаге основного процесса и перейти к шагу 5 основного процесса.
    2. Альтернативный процесс II: на шаге 1 основного процесса пользователь вставляет недействительную кредитную карту, система отображает ошибку и закрывает кредитную карту, и вариант использования заканчивается.
    3. Альтернативный процесс III: на шаге 2 основного процесса пользователь вводит неверный пароль, система отображает ошибку и предлагает пользователю повторно ввести пароль и вернуться к шагу 2 основного процесса; после трех неправильных вводов пароля кредитная карта конфискуется системой, и вариант использования заканчивается.

    Комбинируя базовый сценарий и альтернативные сценарии, можно четко описать все различные ситуации, которые могут возникнуть в прецеденте. При описании потока событий варианта использования мы хотим максимально подробно описать все возможные сценарии, чтобы обеспечить полноту требований.

    Модель вариантов использования и диаграммы вариантов использования

    Важно избежать неправильного представления о том, что диаграмма вариантов использования, состоящая из действующих лиц и вариантов использования, является моделью вариантов использования, потому что диаграмма вариантов использования — это просто визуальное представление услуг, которые может предоставить система, дающая нам общее представление о функциональность системы.

    Модель вариантов использования состоит из диаграммы вариантов использования и подробного описания каждого варианта использования, спецификации варианта использования, которая предоставляется в виде шаблона в RUP.

    Краткое описание
    Краткое описание роли и цели варианта использования.

    Поток событий 
    Поток событий должен представлять все сценарии, включая основные и альтернативные сценарии.

    Сценарии вариантов использования
    Включают сценарии успеха и сценарии отказа, а сценарии в основном представляют собой комбинацию основных и альтернативных потоков.

    Специальные требования
    Опишите нефункциональные требования (включая производительность, надежность, доступность, масштабируемость и т. д.) и проектные ограничения (операционная система, средства разработки и т. д.), связанные с вариантом использования.

    Предварительное условие
    Состояние, в котором должна находиться система перед выполнением варианта использования.

    Постусловия
    Набор состояний, в которых может находиться система после выполнения варианта использования.

    Спецификация варианта использования — это, по сути, текстовое представление с возможностью использования диаграмм состояний, диаграмм действий или диаграмм последовательности, чтобы помочь более четко описать поток событий. Любое графическое представление пользовательских интерфейсов и процессов или другая графика, например каркасы, могут быть присоединены к варианту использования, если они помогают улучшить ясность представления.

    Например:

    • диаграммы деятельности полезны для описания сложных процессов принятия решений,
    • диаграммы перехода состояний полезны для описания поведения системы, связанного с состоянием, и
    • диаграммы последовательности подходят для описания обмена сообщениями на основе времени.

    Используйте инструменты кейса

    Онлайн-версия

    Бесплатная версия бесплатного инструмента для рисования Visual Paradigm Online (VP Online) поддерживает UML, ERD и организационные диаграммы. Вы можете быстро нарисовать диаграммы вариантов использования с помощью интуитивно понятного редактора чертежей UML. В этом бесплатном инструменте UML нет рекламы, нет ограниченного периода доступа и нет ограничений, таких как количество диаграмм, количество фигур и т. д. Рисуйте UML свободно. Рисуйте UML свободно. вам принадлежат диаграммы, которые вы создаете для личных и некоммерческих целей.

    Настольная версия

    Версия Visual Paradigm Community Edition , доступная с 2004 года, предоставляет бесплатное программное обеспечение UML только для некоммерческих целей, поддерживая пользователей, которые делают первые шаги в моделировании UML, а также тех, кому требуется бесплатное кроссплатформенное программное обеспечение для моделирования UML для личное использование, например применение UML в студенческих проектах.

    использованная литература

    • Что такое диаграмма вариантов использования?
    • Типы актеров в модели вариантов использования
    • Определите требования пользователя с помощью диаграмм вариантов использования
    • Что такое спецификация варианта использования?
    • История пользователя и вариант использования для гибкой разработки программного обеспечения
    • Используйте подход, основанный на прецедентах, для гибкой разработки

    UML-ресурсы

    • Что такое УМЛ?
    • Почему UML-моделирование?
    • Обзор 14 типов диаграмм UML

Диаграмма прецедентов (вариантов использования или Use Case)

Используемые материалы:

  • Диаграмма прецедентов (простенько, но не полно)
  • Более полное описание
  • Конспект лекции (с видео) от WorldSkills

Диаграмма вариантов использования, общие понятия

Диаграмма вариантов использования (use case diagram) — диаграмма, на которой изображаются отношения между акторами и вариантами использования (прецедентами).

Актор это калька с английского Actor что расшифровывается как действующее лицо (Act — действие, суффикс -or — человек, осуществляющий действие)

Диаграмма вариантов использования — это исходное концептуальное представление или концептуальная модель системы в процессе ее проектирования и разработки. Создание диаграммы вариантов использования имеет следующие цели:

  • Определить общие границы и контекст моделируемой предметной области на начальных этапах проектирования системы
  • Сформулировать общие требования к функциональному поведению проектируемой системы
  • Разработать исходную концептуальную модель системы для ее последующей детализации в форме логических и физических моделей
  • Подготовить исходную документацию для взаимодействия разработчиков системы с ее заказчиками и пользователями

Назначение данной диаграммы состоит в следующем: проектируемая информационная система представляется в форме так называемых вариантов использования, с которыми взаимодействуют внешние сущности или акторы. При этом актором или действующим лицом называется любой объект, субъект или система, взаимодействующая с моделируемой бизнес-системой извне. Это может быть человек, техническое устройство, программа или любая другая система, которая служит источником воздействия на моделируемую систему так, как определит разработчик. Вариант использования служит для описания сервисов, которые система предоставляет актору. Другими словами каждый вариант использования определяет набор действий, совершаемый системой при диалоге с актором. При этом ничего не говорится о том, каким образом будет реализовано взаимодействие акторов с системой и собственно выполнение вариантов использования.

Рассматривая диаграмму вариантов использования в качестве модели бизнес-системы, можно ассоциировать ее с «черным ящиком». Концептуальный характер этой диаграммы проявляется в том, что подробная детализация диаграммы или включение в нее элементов физического уровня представления на начальном этапе проектирования скорее имеет отрицательный характер, поскольку предопределяет способы реализации поведения системы. Эти аспекты должны быть сознательно скрыты от разработчика на диаграмме вариантов использования.

В самом общем случае, диаграмма вариантов использования представляет собой граф специального вида, который является графической нотацией для представления конкретных вариантов использования, акторов и отношений между этими элементами. При этом отдельные элементы диаграммы заключают в прямоугольник, который обозначает границы проектируемой системы. В то же время отношения, которые могут быть изображены на данном графе, представляют собой только фиксированные типы взаимосвязей между акторами и вариантами использования, которые в совокупности описывают сервисы или функциональные требования к моделируемой системе.

Базовыми элементами диаграммы вариантов использования являются вариант использования и актор.

Вариант использования (use case) — последовательность действий, которые система или другая сущность могут выполнять в процессе взаимодействия с акторами (во многих источниках вариант использования называют прецедентом, не надо пугаться и путаться — это одно и то же).

Вариант использования представляет собой спецификацию общих особенностей поведения или функционирования моделируемой системы без рассмотрения внутренней структуры этой системы. Несмотря на то, что каждый вариант использования определяет последовательность действий, которые должны быть выполнены проектируемой системой при взаимодействии ее с соответствующим актором, сами эти действия не изображаются на рассматриваемой диаграмме.

Содержание варианта использования может быть представлено в форме дополнительного пояснительного текста, который раскрывает смысл или семантику действий при выполнении данного варианта использования. Такой пояснительный текст получил название текста-сценария или просто сценария. Далее рассматривается один из шаблонов, который может быть рекомендован для написания сценариев вариантов использования.

Отдельный вариант использования обозначается на диаграмме эллипсом, внутри которого содержится его краткое имя в форме отглагольного существительного с пояснительными словами. Сам текст имени варианта использования должен начинаться с заглавной буквы.

существительное или глагол

Цель варианта использования заключается в том, чтобы зафиксировать некоторый аспект или фрагмент поведения проектируемой системы без указания особенностей реализации данной функциональности. В этом смысле каждый вариант использования соответствует отдельному сервису, который предоставляет моделируемая система по запросу актора, т.е. определяет один из способов применения системы. Сервис, который инициализируется по запросу актора, должен представлять собой законченную последовательность действий. Это означает, что после того как система закончит обработку запроса актора, она должна возвратиться в исходное состояние, в котором снова готова к выполнению следующих запросов.

Диаграмма вариантов использования содержит конечное множество вариантов использования, которые в целом должны определять все возможные стороны ожидаемого поведения системы. Для удобства множество вариантов использования может рассматриваться как отдельный пакет. Применение вариантов использования на всех этапах работы над проектом позволяет не только достичь требуемого уровня унификации обозначений для представления функциональности подсистем и системы в целом, но и является мощным средством последовательного уточнения требований к проектируемой системе на основе их итеративного обсуждения со всеми заинтересованными специалистами.

Примерами вариантов использования могут быть следующие действия: проверка состояния текущего счета клиента, оформление заказа на покупку товара, получение дополнительной информации о кредитоспособности клиента, отображение графической формы на экране монитора и другие действия.

Актор (actor) — согласованное множество ролей, которые играют внешние сущности по отношению к вариантам использования при взаимодействии с ними.

Актор представляет собой любую внешнюю по отношению к моделируемой системе сущность, которая взаимодействует с системой и использует ее функциональные возможности для достижения определенных целей или решения частных задач. Каждый актор может рассматриваться как некая отдельная роль относительно конкретного варианта использования. Стандартным графическим обозначением актора на диаграммах является фигурка «человечка», под которой записывается имя актора

Актор

Имена акторов должны начинаться с заглавной буквы и следовать рекомендациям использования имен для типов и классов модели.

Имя актора должно быть достаточно информативным с точки зрения семантики. Для этой цели подходят наименования должностей в компании (например, Продавец, Кассир, Менеджер, Президент).

Акторы используются для моделирования внешних по отношению к проектируемой системе сущностей, которые взаимодействуют с системой. В качестве акторов могут выступать другие системы, в том числе подсистемы проектируемой системы или ее отдельные классы. Важно понимать, что каждый актор определяет согласованное множество ролей, в которых могут выступать пользователи данной системы в процессе взаимодействия с ней. В каждый момент времени с системой взаимодействует вполне определенный пользователь, при этом он играет или выступает в одной из таких ролей. Наиболее наглядный пример актора — конкретный покупатель в магазине автозапчастей.

Поскольку в общем случае актор всегда находится вне системы, его внутренняя структура никак не определяется. Для актора имеет значение только его внешнее представление, т.е. то, как он воспринимается со стороны системы. Акторы взаимодействуют с системой посредством передачи и приема сообщений от вариантов использования. Сообщение представляет собой запрос актором сервиса от системы и получение этого сервиса. Это взаимодействие может быть выражено посредством ассоциаций между отдельными акторами и вариантами использования. Кроме этого, с акторами могут быть связаны интерфейсы, которые определяют, каким образом другие элементы модели взаимодействуют с этими акторами.

Отношения на диаграмме вариантов использования

Между элементами диаграммы вариантов использования могут существовать различные отношения, которые описывают взаимодействие экземпляров одних акторов и вариантов использования с экземплярами других акторов и вариантов. Один актор может взаимодействовать с несколькими вариантами использования. В этом случае этот актор обращается к нескольким сервисам данной системы. В свою очередь один вариант использования может взаимодействовать с несколькими акторами, предоставляя для всех них свой сервис.

В то же время два варианта использования, определенные в рамках одной моделируемой системы, также могут взаимодействовать друг с другом, однако характер этого взаимодействия будет отличаться от взаимодействия с акторами. В обоих случаях способы взаимодействия элементов модели предполагают обмен сигналами или сообщениями, которые инициируют реализацию функционального поведения моделируемой системы.

В языке UML имеется несколько стандартных видов отношений между акторами и вариантами использования:

  • ассоциации (association relationship)
  • включения (include relationship)
  • расширения (extend relationship)
  • обобщения (generalization relationship)

Отношение ассоциации – одно из фундаментальных понятий в языке UML и в той или иной степени используется при построении всех графических моделей систем в форме канонических диаграмм. Применительно к диаграммам вариантов использования ассоциация служит для обозначения специфической роли актора при его взаимодействии с отдельным вариантом использования. На диаграмме вариантов использования отношение ассоциации обозначается сплошной линией между актором и вариантом использования. Эта линия может иметь некоторые дополнительные обозначения, например, имя и кратность.

Отношение ассоциации

В контексте диаграммы вариантов использования отношение ассоциации между актором и вариантом использования может указывать на то, что актор инициирует соответствующий вариант использования. Такого актора называют главным. В других случаях подобная ассоциация может указывать на актора, которому предоставляется справочная информация о результатах функционирования моделируемой системы. Таких акторов часто называют второстепенными.

Включение (include) в языке UML — это разновидность отношения зависимости между базовым вариантом использования и его специальным случаем. При этом отношением зависимости (dependency) является такое отношение между двумя элементами модели, при котором изменение одного элемента (независимого) приводит к изменению другого элемента (зависимого).

Отношение включения устанавливается только между двумя вариантами использования и указывает на то, что заданное поведение для одного варианта использования включается в качестве составного фрагмента в последовательность поведения другого варианта использования.

Так, например, отношение включения, направленное от варианта использования «Предоставление кредита в банке» к варианту использования «Проверка платежеспособности клиента», указывает на то, что каждый экземпляр первого варианта использования всегда включает в себя функциональное поведение или выполнение второго варианта использования. В этом смысле поведение второго варианта использования является частью поведения первого варианта использования на данной диаграмме. Графически данное отношение обозначается как отношение зависимости в форме пунктирной линии со стрелкой, направленной от базового варианта использования к включаемому варианту использования. При этом данная линия помечается стереотипом «include».

Отношение включения

Семантика этого отношения определяется следующим образом. Процесс выполнения базового варианта использования включает в себя, как собственное, подмножество последовательность действий, которая определена для включаемого варианта использования. При этом выполнение включаемой последовательности действий происходит всегда при инициировании базового варианта использования.

Один вариант использования может входить в несколько других вариантов, а также содержать в себе другие варианты. Включаемый вариант использования является независимым от базового варианта в том смысле, что он предоставляет последнему инкапсулированное поведение, детали реализации которого скрыты от последнего и могут быть легко перераспределены между несколькими включаемыми вариантами использования. Более того, базовый вариант зависит только от результатов выполнения включаемого в него варианта использования, но не от структуры включаемых в него вариантов.

В нашем случае прецедент «оплатить заказ» на входе получает список товаров (причем не важно откуда, от клиента в магазине или от онлайн-покупателя на сайте).

Отношение расширения (extend) определяет взаимосвязь базового варианта использования с другим вариантом использования, функциональное поведение которого задействуется базовым не всегда, а только при выполнении дополнительных условий.

В языке UML отношение расширения является зависимостью, направленной к базовому варианту использования и соединенной с ним в так называемой точке расширения. Отношение расширения между вариантами использования обозначается как отношение зависимости в форме пунктирной линии со стрелкой, направленной от того варианта использования, который является расширением для базового варианта использования. Данная линия со стрелкой должна быть помечена стереотипом «extend».

Отношение расширения

В нашем случае, при оплате в магазине доступны оба расширения, а при оплате на сайте только оплата картой (на самом деле второй вариант сложнее: нужно выделить отдельный прецедент «онлайн оплата» с расширениями «оплата картой», «оплата при получении» и т.п.)

Два и более актора могут иметь общие свойства, т.е. взаимодействовать с одним и тем же множеством вариантов использования одинаковым образом. Такая общность свойств и поведения представляется в виде отношения обобщения с другим, возможно, абстрактным актором, который моделирует соответствующую общность ролей.

Графически отношение обобщения обозначается сплошной линией со стрелкой в форме незакрашенного треугольника, которая указывает на родительский вариант использования.

Границы проектируемой системы. В начале лекции про них упоминалось — прямоугольник, который ограничивает проектируемкю модель (т.е. наши варианты использования). Еще раз обращаю внимание, акторы не входят в модель и рисуются за пределами системы.

границы проектируемой системы

Мы рассмотрели только базовые элементы для диаграммы вариантов использования, на самом деле их больше. Но для нашего уровня обучения этого достаточно.

Разбор скринкаста семинара «Системный анализ и проектирование»

Текст задания:

Пользователь устанавливает приложение и регистрируется, указав ФИО и лицевой счёт, пароль. Так же пользователь может прикрепить данные банковской карты для быстрой оплаты, но не обязательно.

Работа возможна только для авторизованного пользователя.

Пользователь может оплатить услуги за электроэнергию, введя показания индивидуального прибора учёта. При введении показаний пользователь может запросить отчёт по оплате своего лицевого счёта, указав период для отчёта.

Если карта не «привязана» к аккаунту, то пользователь вводит данные банковской карты и подтверждает оплату. Если карта «привязана», пользователь подтверждает оплату. После оплаты приложение генерирует квитанцию об оплате, которую пользователь может скачать. При закрытии приложения квитанция не сохраняется.

В Visio создаёте новый документ и открываете Дополнительные фигуры -> Программы и базы данных -> Программное обеспечение -> Сценарии выполнения UML

Цвет моих диаграмм отличается от сделанных в Visio, т.к. я делаю в visual-paradigm онлайн

Порядок работы:

  • определяем акторов
  • определяем варианты использования
  • определяем виды взаимодействия
  • строим диаграмму
  1. Рисуем прямоугольник подсистемы:

  2. Определяем акторов

    В нашей системе это обычный пользователь и авторизованный пользователь. Рисуем их рядом с нашей подсистемой, причём учитываем, что авторизованный пользователь наследует (обобщает) свойства обычного пользователя (может прикрепить карту) и рисуем связь «обобщение»:

  3. Определение вариантов использования

    Обратите внимание: связи между акторами и прецедентами прямые и рисуются без всяких стрелок

    • установка приложения — такой вариант использования есть в описании предметной области, но т.к. он не относится к подсистеме, то его рисуем за пределами подсистемы

    • у обычного пользователя есть только один вариант использования: регистрация

      Но при регистрации возникают дополнительные действия (прецеденты): ввод ФИО, лицевого счёта и пароля, и не обязательный ввод данных карты.

      Для обязательных прецедентов используется отношение включения, для не обязательных — расширения

    • оплата услуг авторизованным пользователем. Причём пользователь должен внести показания прибора учета. И может запросить отчет с возможным выбором периода

      После ввода показаний прибора учёта пользователь должен подтвердить оплату (обязательное действие, поэтому делаем включение). Если карта не была привязана в личном кабинете, то добавляем через включение действие ввод данных карты. Visio не полностью реализует стандарт UML — для альтернативных действий там есть специальные формы прецедентов. Но можно альтернативность прецедента акцентировать надписью на стрелке (тип ассоциации и так понятен по направлению стрелки)

      После подтверждения оплаты система генерирует квитанцию (делает это всегда, поэтому включение). Действия пользователя в этом случае не описаны, но т.к. сказано, что система не хранит квитанции, то напрашивается расширение для сохранения квитанции

    • после всего вспомнили, что обычному пользователю для превращения в авторизованного нужно авторизоваться и, хотя этого нет в описании предметной области, добавляем этот прецедент:

Итоговый вариант диаграммы прецедентов:

Задание для самостоятельной работы:

Программа для фитнес-центра по распределению фитнес – расписания и контроля его соблюдения

Предполагается, что в системе фитнес центра будет 3 роли пользователей: клиенты, тренеры, администраторы.
Авторизация в системе производится по телефону и паролю.

Клиенты могут зарегистрироваться в системе, указав ФИО, телефон, пароль, дату рождения, фото профиля, пол.

Администраторы – пользователи с уже заполненным профилем. Они могут добавлять новых тренеров и записывать их на различные курсы обучения с целью поддержки и улучшения их профессиональной квалификации. Постоянным клиентам администраторы могут предоставлять скидки на тренировки.

Любой клиент после авторизации может выбрать себе тренера (если у него нет такового). В этом случае клиент видит список тренеров с именем, фото, полом, стажем работы и списком достижений. Клиент может отправить заявку любому из тренеров, написав при этом цель, которую он хочет достигнуть при тренировках.

Тренер после авторизации видит новые заявки от клиентов и их количество (если таковые имеются). Тренер может принять заявку или отклонить. В случае отказа, тренер должен указать причину. В случае подтверждения заявки тренер должен выставить план индивидуальных занятий для клиента. Выбрав из списка клиентов без плана тренировок, тренер видит цель клиента, его возраст и планирует даты тренировочного цикла. Для индивидуальных занятий тренер может выбрать упражнения, указывая при этом его вид (приседания, отжимания и т.д.), частоту выполнения (сколько раз в неделю), число подходов и число повторений в каждом подходе.

Клиент, отправивший заявку, но не получивший ответа, видит список своих заявок с результатами (в том числе с указанием причины при отказе) и количеством дней ожидания ответа. Получив план тренировок, клиент видит экран с 2 вкладками: план тренировок (дата-список упражнений через запятую) и сегодняшний перечень индивидуальных занятий. Для последней выводится список: вид упражнения, количество повторов и Checkbox, позволяющий отметить выполнения, упражнения. Несмотря на это, упражнение не будет засчитано системой до тех пор, пока клиент не укажет показатель своего пульса во время выполнения упражнения. Сверху выводится сегодняшний прогресс (по количеству выполненных упражнений) в процентах с графическим отображением.

Тренер также может посмотреть список своих текущих клиентов с указанием у каждого: проценты выполнения всего цикла тренировок (зависит от длительности цикла) и процента выполненных упражнений (т.к. некоторые упражнения могут быть пропущены). По каждому клиенту выводится средний показатель пульса во время выполнения упражнений.

Это первая статья из цикла про методологию ICONIX, посвящена UML-диаграммам вариантов использования. В публикациях и книгах по ICONIX, use-case диаграммы обычно описываются очень бегло, а в книгах по UML — слишком подробно. Я постараюсь сделать это настолько подробно, чтобы можно было приступить к использованию диаграмм, но при этом не было скучно. Важно, что до тех пор, до знакомства с ICONIX я не считал use-case диаграммы хоть сколько-нибудь полезными, поэтому в статье я попробую сконцентрироваться на том, что они могут принести проекту.

Вне зависимости от методологии разработки, которую вы применяете, первым этапом разработки будет являться формулировка требований к продукту (Градди Буч описывает Rational Unified Process [1], а Розенберг — ICONIX [2]). Набор требований к продукту представляет собой техническое задание, при этом требования делятся на функциональные (то, что система позволяет сделать, желаемая функциональность) и нефункциональные (требования к оборудованию, операционной системе и т.п.). В языке UML для формализации функциональных требований применяются диаграммы использования.

Диаграмму вариантов использования есть смысл строить во время изучения технического задания, она состоит из графической диаграммы, описывающей действующие лица и прецеденты, а также спецификации, представляющего собой текстовое описание конкретных последовательностей действий (потока событий), которые выполняет пользователь при работе с системой. Спецификация затем станет основой для тестирования и документации, а на следующих этапах проектирования она дополняется и оформляется в виде диаграммы (в рамках ICONIX используется диаграмма последовательности, но в UML для этого имеются также диаграммы деятельности). Кроме того, use-case диаграмма достаточно проста, чтобы ее мог понять заказчик, следовательно вы можете использовать ее для согласования ТЗ (ведь диаграмма описывает функциональные требования к системе).

На диаграмме использования изображаются:

  • акторы — группы лиц или систем, взаимодействующих с нашей системой;
  • варианты использования (прецеденты) — сервисы, которые наша система предоставляет акторам;
  • комментарии;
  • отношения между элементами диаграммы.

На мой взгляд, наиболее правильный порядок построения диаграммы следующий:

  1. выделить группы действующих лиц (работающих с системой по-разному, часто из-за различных прав доступа);
  2. идентифицировать как можно больше вариантов использования (процессов, которые могут выполнять пользователи). При этом не следует делить процессы слишком мелко, нужно выбирать лишь те, которые дадут пользователю значимый результат. Например, кассир может «продать товар» (это будет являться прецедентом), однако «ввод штрих-кода товара для получения цены» самостоятельным прецедентом не является;
  3. дополнить прецеденты словесным описанием (сценарием):
    • для каждого прецедента создать разделы: «главная последовательность» и «альтернативные последовательности»;
    • при составлении сценария нужно упорно задавать заказчику вопросы «что происходит?», «что дальше?», «что еще может происходить?» и записывать ответы на них.

Сценарии являются очень важной частью диаграмм использования, хотя их формат и не регламентирован. Ряд авторов предлагает использовать псевдокод для представления сценария и даже сразу строить диаграммы деятельности или взаимодействия, но на мой взгляд, наиболее предпочтительным вариантом на этапе построения use-case диаграмм является текстовый, описывающий систему с точки зрения пользователя (т.к. именно этот формат будет наиболее понятен заказчику, с которым вам предстоит согласовывать техническое задание).

Рассмотрим разработку диаграмм вариантов использования на примере — пусть заказчик дал нам следующее техническое задание:

Цель — развитие у детей математических навыков.
Платформа: Linux, Windows, Android.
Функциональность:

  • для учеников:
    • выбор подготовленного учителем блока заданий;
    • выполнение заданий;
  • для учителя:
    • подготовка для учеников блоков заданий;
    • добавление в систему ученика;
    • просмотр отчетов.

При первом запуске система должна позволять ввести пароль учителя. Задания представляют собой математические задачи на сложение, вычитание, умножение и деление. В блоке задач могут быть задачи различных типов (указывается количество). Помимо ввода типа выполняемой в примере операции необходимо указывать допустимые диапазоны чисел (или даже отдельные числа, т.к. при изучении таблицы умножения часто сначала учат умножение на 2, затем на 5, а только потом все остальное). Кроме того, для операции вычитания необходимо иметь возможность установить вычитаемое меньше уменьшаемого (т.к. в противном случае результат будет отрицательным, а отрицательные числа в школе проходят гораздо позже).

Очевидно, несмотря на то, что заказчик очень подробно описал некоторые детали, мы не можем не только приступить к реализации задачи, но даже приблизительно оценить стоимость и сроки выполнения. Из такого задания не понятно, например, что должны содержать отчеты. Однако, мы сразу можем выделить две группы пользователей и несколько видов их деятельности.

use-case-example

Пример диаграммы использования

Сплошные линии на диаграмме представляют собой отношения ассоциации, отражающие возможность использования актором прецедента. После того, как определен набор вариантов использования, можно приступать к составлению сценариев. Сценарии должны описываться с точки зрения пользователя, при этом важно описывать взаимодействие пользователя с элементами интерфейса. Так например сценарий прецедента регистрации ученика мог бы выглядеть следующим образом:

Название прецедента: регистрация ученика

Действующее лицо: учитель

Цель: добавить ученика в систему, получив его пароль

Предусловия: учитель осуществил вход в систему

Главная последовательность:

  1. учитель выбирает в главном меню пункт «добавить ученика«;
  2. система показывает учителю окно добавления ученика, содержащее поля для ввода логина и пароля, а также кнопки «далее» и «назад»;
  3. учитель вводит желаемый логин и пароль ученика, нажимает кнопку «далее»;
  4. система добавляет ученика;
  5. учителю открывается главное меню и в течении 5 секунд выводится уведомление о том, что ученик был добавлен успешно.

Альтернативная последовательность (возврат в главное меню без добавления ученика):

  1. учитель выбирает в главном меню пункт «добавить ученика«;
  2. система показывает учителю окно добавления ученика, содержащее поля для ввода логина и пароля, а также кнопки «далее» и «назад»;
  3. учитель нажимает кнопку «назад»;
  4. учителю открывается главное меню (при этом данные, введенные в формы окна добавления ученика не сохраняются).

Альтернативная последовательность (добавление ученика, уже имеющегося в системе):

  1. учитель выбирает в главном меню пункт «добавить ученика«;
  2. система показывает учителю окно добавления ученика, содержащее поля для ввода логина и пароля, а также кнопки «далее» и «назад»;
  3. учитель вводит желаемый логин и пароль ученика, нажимает кнопку «далее»;
  4. учителю в течении 5 секунд отображается уведомление о том, что запрашиваемый логин занят.

Аналогичным образом должны быть прописаны все прецеденты, изображенные на диаграмме. Составлять сценарии нужно достаточно упорно чтобы описать все возможные варианты действий пользователя в системе. Заказчик может делать это с большим удовольствием, а программист за счет этого раньше узнает возможные пожелания заказчика (так из приведенного сценария он мог бы выяснить, что программа должна отображать всплывающие уведомления).

Несмотря на простоту приведенного сценария, в его последовательностях можно найти дублирование, если оно имеет место в ваших сценариях — вы можете выделить некоторые фрагменты описания в отдельные прецеденты (которые могут быть как самостоятельными, так и являться лишь частью других вариантов использования). При этом между прецедентами появится либо отношение расширения (extend), либо включения (include), которые отображаются на диаграммах (в UML также существует отношение обобщения, а в OML — вызова и предшествования).

Отношение включения указывает на то, что поведение одного прецедента включается в некоторой точке в другой прецедент в качестве составного компонента. Особенности включения заключаются в том, что включаемый прецедент должен быть обязательным для дополняемого (включение должно быть безусловным, а дополняемый вариант использования без включения не сможет выполняться), т.е. это это отношение задает очень сильную связь. Например, если мы хотим изобразить на диаграмме тот факт, что удаление набора задач учителем и выполнение задач учеником не должно происходить без обязательного просмотра всех наборов задач — то нам нужно использовать отношение включения:

use-case-include-example

Отношение включения на диаграмме использования

Отношение расширения отражает возможное присоединение одного варианта использования к другому в некоторой точке (точке расширения). При этом подчеркивается то, что расширяющий вариант использования выполняется лишь при определенных условиях и не является обязательным для выполнения основного прецедента. На диаграмме такой вид отношения изображается стрелкой, направленной к расширяемому прецеденту, в отдельном разделе которого может быть описана точка расширения, а условия расширения могут быть приведены в комментарии с ключевым словом Condition. Таким образом, расширение позволяет моделировать необязательное поведение системы, которое является условным и не изменяет поведение основного прецедента. Например отношение расширения нужно применить, если по техническому заданию требуется возможность удаления набора задач в прецеденте просмотра отчетов при условии, что все ученики решили этот набор.

use-case-extend-example

Отношение расширения на диаграмме использования

Таким образом можно показать, что у учителя появляется возможность (но не обязанность) удалить набор задач при просмотре отчетов если все ученики выполнили этот набор.

На последней диаграмме используется символ комментария для задания условий расширения, при этом комментарий связывается пунктирной линией с отношением расширения, т.к. относится к нему. В ряде публикаций по UML и ICONIX предлагается описывать с помощью комментариев на диаграмме прецедентов:

  • нефункциональные требования к системе (при этом используется стереотип <<requirement>>);
  • сценарии вариантов использования (связывая комментарий с соответствующим прецедентом);
  • детали реализации и другие выводы, к которым разработчики пришли в процессе обсуждения задачи (не все с этим согласны, т.к. use-case диаграмма показывается заказчику, которому не нужны детали).

Наиболее типичными ошибками при построении этого вида диаграмм являются:

  • неправильное использование отношений расширения и включения, в том числе попытки использовать диаграммы для функциональной декомпозиции системы. Возникает из-за непонимания различий между этими двумя видами отношений и того, что use-case диаграмма должна выражать лишь требования к системе, а не детали ее реализации;
  • разработка диаграммы с точки зрения программиста, а не пользователя. В сценариях должны использоваться названия элементов управления (видимые пользователю), но нежелательно изображать детали реализации (такие как менеджер событий), не понятные заказчику;
  • не достаточная проработка сценариев:
    • отсутствие или недостаточное количество альтернативных последовательностей, в которых должен быть учтен, в том числе, ввод некорректных данных в систему;
    • описание действий пользователя без указания конкретных элементов интерфейса системы и отсутствие описаний реакции системы в сценариях.

Важно, что процесс ICONIX является итеративным, поэтому если вы допустите неточности на этапе разработке диаграмм использования — их можно будет найти и исправить на следующих этапах (в частности, пропущенные объекты могут быть выделены при работе над диаграммами робастности, а сценарии детально проработаны при построении диаграмм последовательности).

Стоит отметить, что нет единого мнения по поводу использования в текстах сценария условных операторов или циклов. Ряд аналитиков считают, что наличие слов типа «если» в сценарии является ошибкой, которая исправляется добавлением альтернативной последовательности. Другие — допускают использование 1-2 ветвлений в сценарии, при этом отмечают, что такой подход улучшает читабельность сценариев.

Если следовать всем приведенным правилам составления диаграмм вариантов использования, с их помощью можно достаточно подробно проработать техническое задание чтобы оценить сроки и стоимость его выполнения, описать конкретные сценарии взаимодействия с системой, которые лягут в основу тестов и документации, и согласовать всё это с заказчиком.

В статье приведены основные возможности use-case диаграмм, по моему мнению их должно быть достаточно для разработки подавляющего большинства систем, при необходимости большее количество информации и примеров можно почерпнуть в следующей литературе:

  1. Буч Градди Объектно-ориентированный анализ и проектирование с примерами приложений, 3-е изд. / Буч Градди, Максимчук Роберт А., Энгл Майкл У., Янг Бобби Дж., Коналлен Джим, Хьюстон Келли А.: Пер с англ. – М.: ООО “И.Д. Вильямс”, 2010. – 720 с.
  2. Розенберг Д., Скотт К. Применение объектного моделирования с использованием UML и анализ прецедентов.: Пер. с англ. М.: ДМК Пресс, 2002
  3. Бабич А. В. Введение в UML // Интернет университет информационных технологий. 2008. URL: http://www.intuit.ru/studies/courses/1007/229/info (дата обращения: 19.03.2016).
  4. Леоненков, A.B. Объектно-ориентированный анализ и проектирование с использованием UML и IBM Rational Rose: учеб. пособие Текст. / A.B. Леоненков. М.: Интернет-Ун-т информ. технологий: БИНОМ, Лаборатория знаний, 2006. — 320 с.

После того, как построено представление использования (результат моделирования использования), то есть,
выделены действующие лица, варианты использования и установлены отношения между ними, встает естественный
вопрос: что дальше? То есть, как далее следует продолжать моделирование средствами UML?

Вообще говоря, ответ может быть такой: ничего больше не делать средствами UML. Представление использования,
если оно тщательно продумано и детально прорисовано, является формой технического задания (спецификацией
функциональных требований), содержащей достаточно информации для дальнейшего проектирования и реализации
любым другим методом. Может статься, что в коллективах разработчиков, в совершенстве владеющих какой-либо
другой методикой проектирования и реализации, такое ограниченное использование UML окажется вполне
оправданным.

Однако UML содержит средства не только для моделирования использования, но и для поддержки всех остальных фаз
процесса разработки, и эти средства, по меньшей мере, не хуже альтернативных. Таким образом, UML полезно
знать, даже если он не используется в процессе разработки или используется только частично. Поэтому мы
рассмотрим все средства UML в оставшейся части книги. Цель этого раздела ‒ изложить
наше видение возможных путей перехода от моделирования использования к другим видам моделирования.

Действующие лица находятся вне системы ‒ с ними ничего делать не нужно. Можно сказать, что действующие
лица уже выполнили свою задачу, просто появившись в модели системы. Таким образом, переход от моделирования
использования к другим видам моделирования состоит в уточнении, детализации и конкретизации вариантов
использования. В представлении использования мы показали, что делает система, теперь нужно определить, как
это делается. Мы называем это реализацией вариантов использования.

Реализация варианта использования (use case realization) — это описание всех или
некоторых сценариев, составляющих вариант использования.

Повторим еще раз: вариант использования ‒ это описание множества последовательностей событий или
действий (сценариев), доставляющих значимый для действующего лица результат. Наиболее часто используемый
метод описания множества последовательностей действий состоит в указании алгоритма, выполнение которого
доставляет последовательность действий из требуемого множества. Существует множество способов описания
алгоритмов, более или менее формальных. Мы рассмотрим четыре, часто применяемых именно при реализации
вариантов использования.

Исторически самый заслуженный и до сих пор один из самых популярных способов: составить текстовое
описание типичного сценария варианта использования.

Рассмотрим следующий ниже текст в качестве примера одного из возможных сценариев.

Сценарий варианта использования Увольнение по собственному желанию
1. Сотрудник пишет заявление
2. Начальник подписывает заявление
3. Если есть неиспользованный отпуск, 
   то бухгалтерия рассчитывает компенсацию
4. Бухгалтерия рассчитывает выходное пособие
5. Системный администратор удаляет учетную запись
6. Менеджер персонала обновляет базу данных 

Казалось бы, что здесь неясного? А неясно, например, вот что: как должна вести себя система, если на
шаге 2 начальник не подписывает заявление. Из текста
сценария не только не ясен ответ, но, хуже того, при невнимательном чтении можно и не заметить, что есть
вопрос.

Текстовые описания сценариев всем хороши: просты, всем понятны, легко и быстро составляются. Плохи они
тем, что могут быть неполны и неточны, и эти недостатки незаметны.

Разработчики чаще всего описывают алгоритмы с помощью программ — текстов на некотором языке.

Если программа предназначена для выполнения компьютером, то она должна быть записана на сугубо формальном
(и на сегодняшний день довольно примитивном) языке, который называют в этом случае языком
программирования
. Если же программа предназначена исключительно для чтения и, может быть,
выполнения человеком, то можно применить менее формальный (и более удобный) язык, который в этом случае
называют псевдокодом. Обычно в псевдокод включают смесь общеизвестных ключевых слов языков
программирования и неформальные выражения на естественном языке, обозначающие выполняемые действия. Эти
выражения должны быть понятны человеку, который пишет (или читает) программу на псевдокоде, но совсем не
обязаны быть допустимыми выражениями языка программирования. Текст на псевдокоде похож на код программы
на языке программирования, но таковым не является ‒ отсюда и название.

Второй рассматриваемый нами способ реализации варианта использования ‒ записать алгоритм на
псевдокоде. Этот способ хорош тем, что понятен, привычен и доступен любому разработчику. Однако в
настоящее время вряд ли можно рекомендовать такой способ реализации, как основной, по следующим
причинам.

  • Реализация на псевдокоде плохо согласуется с современной парадигмой объектно-ориентированного
    программирования.
  • При использовании псевдокода теряются все преимущества использования UML: наглядная визуализация с
    помощью картинки, строгость и точность языка проектирования и реализации, поддержка
    распространенными инструментальными средствами.
  • Решения на псевдокоде практически невозможно использовать повторно.

Тем не менее, рассмотрим пример реализации вариантов использования на псевдокоде.

Параллельно советуем смотреть на рис. Зависимости между
вариантами использования
).

Use case Self Fire
    Получить заявление
add_payment:
    Pay Compensation(Self Fire, add_payment)
    Include Delete Account
    Обновить информацию в базе данных

Use case Adm Fire
    Получить приказ
add_payment:
    Pay Compensation(Adm Fire, add_payment)
    Include Delete Account
    Обновить информацию в базе данных

Use case Pay Compensation
    if (add_payment)
        if (from Self Fire)
            начислить за неиспользованный отпуск
        else if (from Adm Fire)
            начислить выходное пособие

Увольнение по собственному желанию запускается по инициативе сотрудника. Увольнение по инициативе
администрации начинается с приказа об увольнении. В остальном последовательность действий в обоих
случаях совпадает.

В этих текстах использовано ключевое слово Include, отражающее наличие
зависимостей с таким стереотипом в модели. А именно, это означает, что в этом месте в текст псевдокода
для данного варианта использования нужно включить текст псевдокода для варианта использования Delete Account, который мы здесь не приводим.

Вариант использования Pay Compensation запускается, если есть условия для
выплаты компенсаций. При этом основные варианты использования не должны знать, каковы эти условия и как
рассчитывается компенсация ‒ за это отвечает вариант использования Pay
Compensation
. Зависимость со стереотипом «extend» означает, что
псевдокод варианта использования Pay Compensation должен быть включен в
текст основных вариантов использования. При этом вариант использования Pay
Compensation
должен знать, в какое место ему нужно включиться. Для этого в основных вариантах
использования определена точка расширения (extension point) ‒ по сути, просто метка в
программе.

Мы надеемся, что этот пример в достаточной мере объясняет сходство и различие между зависимостями со
стереотипом «include» и «extend».

Третий способ реализации варианта использования ‒ описать алгоритм с помощью диаграммы деятельности.
С одной стороны, диаграмма деятельности ‒ это полноценная диаграмма UML, с другой стороны,
диаграмма деятельности немногим отличается от блок-схемы (а тем самым и от псевдокода). Таким образом,
реализация варианта использования диаграммой деятельности является компромиссным способом ведения
разработки ‒ в сущности, это проектирование сверху вниз в терминах и обозначениях UML.

Например, в информационной системе отдела кадров прием сотрудника может быть организован так, как
показано на следующей диаграмме.

Реализация варианта использования при помощи диаграммы деятельности

Рис. Реализация варианта использования при помощи диаграммы деятельности

Приблизило ли нас появление этой диаграммы в модели к завершению работы над системой? С одной стороны,
вместо одной сущности, подлежащей реализации (вариант использования Hire
Person
) появилось пять новых: три сторожевых условия и две деятельности, которые в свою
очередь теперь нуждаются в реализации. С другой стороны, каждая из этих новых сущностей кажется более
простой и понятной, а значит быстрее и надежнее реализуемой. Кроме того, эту диаграмму можно показать
заказчику, чтобы проверить, действительно ли проектируемая нами логика работы системы соответствует тому
бизнес-процессу, который существует в реальности.

Применение диаграмм деятельности для реализации вариантов использования не слишком приближает к появлению
целевого артефакта ‒ программного кода, однако может привести к более глубокому пониманию существа
задачи и даже открыть неожиданные возможности улучшения приложения, которые было трудно усмотреть в
первоначальной постановке задачи.

Например, рассматривая (чисто формально) схему процесса на предыдущем рисунке, мы видим, что процесс
может иметь три исхода.

  • Нормальное завершение 1, которое предполагает обязательное выполнение
    деятельности Occupy position. Резонно предположить, что при
    выполнении этой деятельности в базу данных будет записана какая-то информация, что, несомненно,
    является значимым для пользователя результатом.
  • Исключительная ситуация 2, возникающая в том случае, когда процесс не
    может быть нормально завершен, т.е. мы хотели принять человека на работу, и он был согласен, а
    текущее состояние штатного расписание не позволило этого сделать. Факт возникновения такой ситуации,
    хотя формально и не является значимым результатом для менеджера персонала, на самом деле может быть
    весьма важен для высшего руководства или менеджера штатного расписания.
  • Завершение процесса без достижения какого-либо видимого результата 3.
    Например, менеджер персонала сделал кандидату какие-то предложения, но ни одно из них кандидата не
    устроило, после чего они расстались, как будто ничего и не было.

Этот простой анализ наталкивает на следующие соображения. Вариант использования должен
доставлять значимый результат, значит, если результата нет, то что-то спроектировано не так, как нужно.
Действительно, все известные нам практические информационные системы отдела кадров обязательно
накапливают статистическую информацию обо всех проведенных кадровых операциях. Такая статистика
совершенно необходима для так называемого анализа движения кадров ‒ важной составляющей процесса
управления организацией. Однако далеко не все системы позволяют учитывать и не проведенные операции.
Между тем, учет этой информации, например, учет причин, по которым кандидаты не принимают предложенной
работы или, наоборот, причин, по которым организации отвергают кандидатов, может быть весьма полезен для
исследования рынка труда и формирования кадровой политики организации.

Немного подумав над этой проблемой (или посоветовавшись с заказчиком), мы можем усовершенствовать нашу
диаграмму, например, так, как показано ниже.

Усовершенствованная реализация варианта использования

Рис. Усовершенствованная реализация варианта использования

Вот теперь (формально) все хорошо: информация не теряется. Более того, имеет смысл вернуться к
представлению использования и посмотреть, не нужно ли включить в модель новые варианты использования
(может быть, как низкоприоритетные и подлежащие реализации в последующих версиях системы). Так
реализация вариантов использования может приводить к изменению и усовершенствованию самих вариантов
использования. Моделирование имеет итеративный характер, о чем мы уже говорили в параграфе 1.7.3.

Четвертый из основных способов реализации варианта использования ‒ создать одну или несколько
диаграмм взаимодействия в форме диаграмм коммуникации или диаграмм последовательности, которые описывают
один или несколько сценариев данного варианта использования. Этот способ в наибольшей степени
соответствует идеологии UML и рекомендуется авторами языка как основной и предпочтительный.

Рассмотрим основные достоинства и недостатки реализации варианта использования диаграммами
взаимодействия. Начнем с положительного. На диаграммах взаимодействия представлено взаимодействие
объектов, т. е. экземпляров некоторых классов. Тем самым построение такой диаграммы с необходимостью
приводит к выявлению некоторых классов, которые должны существовать в модели и некоторых операций этих
классов (а именно тех, которые появятся в форме сообщений типа «вызов операции» на диаграмме
взаимодействия). Более того, поскольку
сообщения передаются от объекта к объекту вдоль связей (в основном, экземпляров ассоциаций), то
оказываются выявленными и некоторые необходимые ассоциации. Таким образом, реализация варианта
использования какой-либо диаграммой взаимодействия обеспечивает органичный переход от моделирования
использования к моделированию структуры и моделированию
поведения.

При составлении диаграмм взаимодействия для нескольких вариантов использования могут быть задействованы
одни и те же классы, играющие разные роли в различных кооперациях (см. главу
3). Одинаковое поведение и структура, проявляющиеся в разных вариантах использования,
оказываются реализованными одним классом. Такой стиль моделирования полностью соответствует
объектно-ориентированному подходу и обеспечивает концептуальную целостность проектируемой системы.

При реализации вариантов использования диаграммами взаимодействия на ранних этапах моделирования
появляются сопутствующие фрагменты диаграмм классов. Эти диаграммы гораздо ближе к целевому артефакту ‒
программному коду ‒ нежели диаграммы использования и даже диаграммы деятельности. Все инструменты
поддерживают генерацию кода по диаграммам классов, а некоторые ‒ и по диаграммам взаимодействия.
Таким образом, появляется возможность автоматизированного построения прототипов (версий системы,
обеспечивающих частичную функциональность), что полностью соответствует идеологии программирования вширь
(инкрементальной разработки).

Однако у диаграмм взаимодействия UML есть существенное ограничение. В целом эти диаграммы формулируются
на уровне объектов, а потому позволяют реализовать только отдельный сценарий (условно говоря, экземпляр
варианта использования). Другими словами, диаграммы взаимодействия позволяют описать протокол выполнения
алгоритма, но не сам алгоритм. Возникает вопрос: насколько существенным и обременительным оказывается
это ограничение при практическом моделировании?

Если алгоритм выполнения варианта использования линеен (просто последовательность действий, без ветвлений
и циклов), то проблемы нет ‒ линейные алгоритмы суть протоколы своего выполнения. Для ветвлений и
циклов диаграммы взаимодействия содержат некоторые (см. главу 4) средства
моделирования. Иногда этих средств может оказаться достаточно.

Что же делать, если все-таки никак не удается построить исчерпывающую диаграмму взаимодействия для
варианта использования? В этом случае рекомендуется применять следующие методы. Во-первых, реализовать
вариант использования несколькими диаграммами взаимодействия. Каждая диаграмма описывает отдельный
сценарий, а все вместе они дают достаточное представление о реализации варианта использования.
Во-вторых, можно пересмотреть представление использования таким образом, чтобы исключить трудно
реализуемые варианты использования. Например, с помощью обобщения выделить варианты использования,
которые описывают более однородные множества сценариев и легче реализуются диаграммами взаимодействия.
Обычно итеративно применяют оба приема, пока не будет достигнут удовлетворительный результат.

Попробуем проиллюстрировать сказанное на примере реализации диаграммами взаимодействия варианта
использования Hire Person (прием сотрудника на работу) информационной системы
отдела кадров.

Сначала рассмотрим типовой сценарий, когда прием проходит безо всяких осложнений: есть вакантное рабочее
место и кандидат готов его занять. Диаграмма последовательности для такого сценария приведена на
следующем рисунке.

Диаграмма последовательности для типового сценария

Рис. Диаграмма последовательности для типового сценария

На приведенной диаграмме последовательность посылаемых сообщений примерно соответствует
последовательности действий на диаграмме деятельности рис.
Реализация варианта использования при помощи диаграммы деятельности в том
случае, когда поток управления проходит по диаграмме сверху вниз один раз. Таким образом, представленная
диаграмма последовательности до некоторой степени определяет типовой сценарий варианта использования
Hire Person. Однако, помимо определения последовательности выполняемых
действий, эта диаграмма содержит и другую информацию, существенную для дальнейшего проектирования.

Построив такую диаграмму взаимодействия, мы постулировали существование в системе некоторых классов
(возможно, еще не всех), экземпляры которых должны взаимодействовать для обеспечения требуемого
поведения моделируемого варианта использования. Действующее лицо Personnel
Manager
уже было определено при моделировании использования, здесь же в нашей модели
появились новые сущности:

  • класс Hire Form, ответственный за интерфейс, необходимый для
    выполнения варианта использования прием сотрудника;
  • класс Person, ответственный за хранение данных о конкретном
    сотруднике;
  • класс Position, ответственный за хранение данных и выполнение
    операций с конкретной должностью.

На этой стадии моделирования список операций указанных классов еще далеко не полон (а атрибуты пока
совсем отсутствуют), однако сам факт появления классов в модели является важным решением, существенно
приближающим нас к реализации системы.

Большинство инструментов поддерживают следующий режим работы. Составляя некоторую диаграмму,
(например, в нашем случае диаграмму последовательности), можно определить в модели некоторые
сущности (например, классы), нужные для моделирования в данный момент, не отражая их пока что ни
на какой диаграмме. Утрируя, можно представить себе такой стиль моделирования, когда никакие
диаграммы вообще не составляются, а, пользуясь средствами инструмента, в модель последовательно
добавляются сущности и отношения между ними. Конечно, такой стиль игнорирует один из важнейших
аспектов UML ‒ наглядность модели ‒ и на практике не применяется. Однако, приводя это
замечание, мы хотим еще раз подчеркнуть важнейшее обстоятельство, часто ускользающее от
начинающих пользователей UML: модель не является простой суммой диаграмм, наоборот, каждая
диаграмма является не более чем ограниченной проекцией независимо существующей модели.

Возвращаясь к нашему примеру, заметим, что предыдущая диаграмма последовательности семантически не полна:
она не отражает все сценарии варианта использования, которые мы выявили. Сравните.

Как уже было сказано, в этом случае можно составить дополнительные диаграммы взаимодействия, реализующие
альтернативные сценарии варианта использования. Например, на следующем рисунке показан сценарий приема
сотрудника, соответствующий исключительной ситуации, когда нет вакантных должностей. На этот раз мы
описываем сценарий в форме диаграммы коммуникации.

Диаграмма коммуникации для исключительной ситуации

Рис. Диаграмма коммуникации для исключительной ситуации

Построение этой диаграммы выявило необходимость включения в модель (по крайней мере) еще одного класса ‒
Exceptions Handler, который несет ответственность за обработку
возникающих исключительных ситуаций. Конечно, тот способ решения проблемы, который мы предлагаем на
диаграмме далеко не единственный, и, может быть, не самый лучший из известных вам. Дело не в конкретном
способе обработке исключений ‒ это вопрос технологии программирования, а в том, что построение
диаграммы взаимодействия выявило сам факт необходимости предусмотреть обработку исключительных ситуаций
в системе. Если бы мы не построили диаграмму коммуникации для альтернативного сценария, мы могли бы
упустить из виду это обстоятельство и, тем самым, совершить грубую проектную ошибку.

Авторы UML рекомендуют на этапе перехода от моделирования использования к более детальному проектированию
строить диаграммы взаимодействия для всех типовых сценариев вариантов использования (на крайний случай
для всех вариантов использования, выбранных для реализации в первой версии системы). Эта рекомендация
нам представляется очень полезной, и мы советуем ей следовать. Более того, мы можем предложить
неформальный критерий для управления процессом разработки, основанный на этой рекомендации. После того,
как диаграммы взаимодействия построены, нужно сопоставить набор выявленных классов со словарем
предметной области. Если наблюдается значительное совпадение, скажем, если большинство понятий словаря
предметной области оказалось среди классов, выявленных при реализации вариантов использования, то это
означает, что мы на правильном пути и можно смело переходить к более детальному проектированию. Если же
пересечение словаря и множества выделенных классов незначительно, скажем, если оно составляет менее
половины объема словаря, то нужно приостановить проектирование и вернуться на фазу анализа (привлечь
сторонних экспертов в предметной области, заново выполнить моделирование использования,
проконсультироваться с заказчиком и т.д.).

Из материала этой главы мы делаем следующие выводы: реализация вариантов использования диаграммами
взаимодействия является наиболее трудоемким и сложным методом, но этот метод лучше всего согласован
с объектно-ориентированным подходом и в наибольшей мере приближает нас к конечной цели, а моделирование
использования ‒ это универсальный способ представления функциональных требований
.

Аннотация: Классификация требований, их спецификация в форме диаграмм вариантов использования. Сценарии вариантов использования, их графическая интерпретация. Применение шаблонов сценариев при разработке диаграмм вариантов использования. Примеры написания текста сценария. Рекомендации по написанию вариантов использования.

Формализация функциональных требований к системе с помощью диаграммы вариантов использования

Отдельные варианты использования могут применяться как для спецификации требований к проектируемой системе, так и для документирования процесса поведения имеющейся системы. Кроме этого, варианты использования неявно специфицируют требования, определяющие особенности взаимодействия пользователей с системой, которые специфицируют возможность корректной работы с предоставляемыми данной системой сервисами.

Требование (requirement) — желательное свойство, характеристика или условие, которым должна удовлетворять система в процессе своей эксплуатации.

Применительно к программным системам предложена следующая классификация требований, которая получила название модели FURPS+, что соответствует первым буквам соответствующих категорий требований на английском языке:

  • функциональные требования (Functionality)
  • требования удобства использования (Usability)
  • требования надежности (Reliability)
  • требования производительности (Performance)
  • требования возможности сопровождения (Supportability)

При этом символом «+» обозначены дополнительные условия, к которым относятся:

  • проектные ограничения
  • требования управления системой
  • требования к графическому интерфейсу пользователя
  • физические требования
  • юридические требования

Центральное место среди указанных требований занимают функциональные, которые специфицируют особенности реализации отдельных бизнес-процессов моделируемой системы. В контексте моделей языка UML именно функциональные требования должны служить исходной информацией для построения диаграмм вариантов использования. Однако графических средств языка UML на практике оказывается недостаточно для спецификации функциональных требований.

Следует отметить, что одним из требований языка UML является самодостаточность диаграмм для представления информации о моделях проектируемых систем. Однако большинство разработчиков и экспертов согласны с тем, что изобразительных средств языка UML явно не хватает для того, чтобы учесть на диаграммах вариантов использования особенности функционального поведения сложной системы. С этой целью рекомендуется дополнять этот тип диаграмм текстовыми сценариями, которые уточняют или детализируют последовательность действий, совершаемых системой при выполнении ее вариантов использования.

Сценарий (scenario) — определенная последовательность действий, которая описывает действия актеров и поведение моделируемой системы в форме обычного текста.

В контексте языка UML сценарий используется для дополнительной иллюстрации взаимодействия актеров и вариантов использования. Предлагаются различные способы представления или написания подобных сценариев. Один из таких шаблонов рассматривается ниже и может быть рекомендован читателям для применения на начальных этапах концептуального моделирования (табл. 4.1).

Таблица
4.1.
Шаблон для написания сценария отдельного варианта использования

Главный раздел Раздел «Типичный ход событий» Раздел «Исключения» Раздел «Примечания»
Имя варианта использования Типичный ход событий, приводящий к успешному выполнению варианта использования Исключение № 1 Примечания № 1
Актеры Исключение № 2 Примечания № 2
Цель
Краткое описание
Тип
Ссылки на другие варианты использования Исключение № N Примечания № N

При написании сценариев вариантов использования важно понимать, что текст сценария должен дополнять или уточнять диаграмму вариантов использования, но не заменять ее полностью. В противном случае будут потеряны достоинства визуального представления моделей.

Построение диаграммы вариантов использования — самый первый этап процесса объектно-ориентированного анализа и проектирования, цель которого — представить совокупность функциональных требований к поведению проектируемой системы. Спецификация требований к проектируемой системе в форме диаграммы вариантов использования и дополнительных сценариев может представлять собой самостоятельную модель, которая в языке UML получила название модели вариантов использования и имеет свое специальное стандартное имя или стереотип <<useCaseModel>>.

Все заданные в этой модели требования допустимо представить в виде общей модели системы, которая может быть оформлена как отдельный пакет Система. Этот пакет в свою очередь может представлять собой иерархию пакетов, на самом верхнем уровне которых содержится множество классов, реализующих базовые варианты использования проектируемой системы. При этом пакет системы самого верхнего уровня может быть дополнительно помечен стереотипом <<topLevelPackage>>.

Центральное
место в методологии ООАП занимает
разработка логической модели системы
в виде диаграммы классов.
Диаграмма классов
отражает, в частности, различные
взаимосвязи между отдельными
сущностями предметной области,
такими как объекты и подсистемы, а
также описывает их внутреннюю
структуру и типы отношений. На данной
диаграмме не указывается информация
о временных аспектах функционирования
системы. С этой точки зрения диаграмма
классов
может служить дальнейшим развитием
концептуальной модели проектируемой
системы

Диаграмма
классов
(class diagram) — диаграмма языка UML, на
которой представлена совокупность
декларативных или статических
элементов модели, таких как классы
с атрибутами
и операциями,
а также связывающие их отношения.

Диаграмма
классов
предназначена для представления
статической структуры модели системы
в терминологии классов
объектно-ориентированного
программирования. При этом диаграмма
классов
может содержать интерфейсы, пакеты,
отношения и даже отдельные экземпляры
классификаторов, такие как объекты
и связи. Когда говорят о данной
диаграмме, имеют в виду статическую
структурную модель проектируемой
системы, т.е. графическое представление
таких структурных взаимосвязей
логической модели системы, которые
не зависят от времени.

Класс

Класс
(class) — абстрактное описание множества
однородных объектов, имеющих
одинаковые атрибуты,
операции
и отношения с объектами других
классов
.

Графически
класс
в нотации языка UML изображается в
виде прямоугольника, который
дополнительно может быть разделен
горизонтальными линиями на разделы
или секции (рис.
5.1
).
В этих секциях могут указываться
имя
класса
,
атрибуты
и операции
класса.

Рис.
5.1.
 
Варианты графического изображения
класса на диаграмме классов

На
начальных этапах разработки диаграммы
отдельные классы
могут обозначаться простым
прямоугольником, в котором должно
быть указано имя
соответствующего класса
(рис.
5.1, а
).
По мере проработки отдельных
компонентов диаграммы описание
классов
дополняется атрибутами
(рис.
5.1, б
)
и операциями
(рис.
5.1, в
).
Четвертая секция (рис.
5.1, г
)
не обязательна и служит для размещения
дополнительной информации справочного
характера, например, об исключениях
или ограничениях класса,
сведения о разработчике или языке
реализации. Предполагается, что
окончательный вариант диаграммы
содержит наиболее полное описание
классов,
которые состоят из трех или четырех
секций.

Даже
если секции атрибутов
и операций
пусты, в обозначении класса
они должны быть выделены горизонтальной
линией, с тем чтобы отличить класс
от других элементов языка UML. Примеры
графического изображения конкретных
классов

приведены на рис.
5.2
.
В первом случае для класса
Окружность (рис.
5.2, а
)
указаны только его атрибуты
– точка на координатной плоскости,
которая определяет расположение ее
центра. Для класса
Окно (рис.
5.2, б
)
указаны только его операции,
при этом секция его атрибутов
оставлена пустой. Для класса
Счет (рис.
5.2, в
)
дополнительно изображена четвертая
секция, в которой указано требование
– реализовать резервное копирование
объектов этого класса.

Рис.
5.2.
 
Примеры графического изображения
конкретных классов

Имя
класса

Имя
класса

должно быть уникальным в пределах
пакета, который может содержать одну
или несколько диаграмм классов.
Имя
указывается в самой верхней секции
прямоугольника, поэтому она часто
называется секцией имени
класса
.
В дополнение к общему правилу
именования элементов языка UML, имя
класса

записывается по центру секции имени
полужирным шрифтом и должно начинаться
с заглавной буквы. Рекомендуется в
качестве имен
классов

использовать существительные,
записанные по практическим соображениям
без пробелов. Необходимо помнить,
что имена
классов

образуют словарь предметной области
при ООАП.

В
секции имени
класса

могут также находиться стереотипы
или ссылки на стандартные шаблоны,
от которых образован данный класс
и, соответственно, от которых он
наследует атрибуты
и операции.
В этой секции может также приводиться
информация о разработчике данного
класса
и статус состояния разработки. Здесь
также могут записываться и другие
общие свойства этого класса,
имеющие отношение к другим классам
диаграммы или стандартным элементам
языка UML.

Класс
может иметь или не иметь экземпляров
или объектов. В зависимости от этого
в языке UML различают конкретные
и абстрактные
классы
.

Конкретный
класс

(concrete class) — класс,
на основе которого могут быть
непосредственно созданы экземпляры
или объекты.

Рассмотренные
выше обозначения относятся к
конкретным
классам
.
От них следует отличать абстрактные
классы
.

Абстрактный
класс

(abstract class) — класс,
который не имеет экземпляров или
объектов.

Для
обозначения имени
абстрактного
класса

используется наклонный шрифт
(курсив). В языке UML принято общее
соглашение о том, что любой текст,
относящийся к абстрактному элементу,
записывается курсивом. Это имеет
принципиальное значение, поскольку
является семантическим аспектом
описания абстрактных элементов
языка UML.

В
некоторых случаях необходимо явно
указать, к какому пакету относится
тот или иной класс.
Для этой цели используется специальный
символ разделитель – двойное
двоеточие — ( ::).
Синтаксис строки имени
класса

в этом случае будет следующий: <Имя
пакета>::< Имя
класса

>.
Другими словами, перед именем
класса

должно быть явно указано имя пакета,
к которому его следует отнести.
Например, если определен пакет с
именем Банк,
то класс
Счет
в этом банке может быть записан в
виде: Банк::Счет.

Атрибуты
класса

Атрибут
(attribute)

— содержательная характеристика
класса,
описывающая множество значений,
которые могут принимать отдельные
объекты этого класса
.

Атрибут
класса

служит для представления отдельного
свойства или признака, который
является общим для всех объектов
данного класса.
Атрибуты
класса

записываются во второй сверху секции
прямоугольника класса.
Эту секцию часто называют секцией
атрибутов.

В
языке UML принята определенная
стандартизация записи атрибутов
класса
,
которая подчиняется некоторым
синтаксическим правилам. Каждому
атрибуту
класса

соответствует отдельная строка
текста, которая состоит из квантора
видимости

атрибута,
имени атрибута,
его кратности,
типа значений атрибута
и, возможно, его исходного значения.
Общий формат записи отдельного
атрибута
класса

следующий:

<квантор
видимости> <имя атрибута>
[кратность] :

<тип
атрибута> = <исходное значение>
{строка-свойство}.

Видимость
(visibility) — качественная характеристика
описания элементов класса,
характеризующая потенциальную
возможность других объектов модели
оказывать влияние на отдельные
аспекты поведения данного класса.

Видимость
в языке UML специфицируется с помощью
квантора
видимости (visibility)
,
который может принимать одно из 4-х
возможных значений и отображаться
при помощи специальных символов.

  • Символ
    » +
    » – обозначает атрибут
    с областью видимости типа общедоступный
    ( public
    ). Атрибут
    с этой областью видимости доступен
    или виден из любого другого класса
    пакета, в котором определена
    диаграмма.

  • Символ
    » #
    » – обозначает атрибут
    с областью видимости типа защищенный
    ( protected
    ). Атрибут
    с этой областью видимости недоступен
    или невиден для всех классов,
    за исключением подклассов данного
    класса.

  • Символ
    » —
    » – обозначает атрибут
    с областью видимости типа закрытый
    ( private
    ). Атрибут
    с этой областью видимости недоступен
    или невиден для всех классов
    без исключения.

  • И,
    наконец, символ » ~
    » — обозначает атрибут
    с областью видимости типа пакетный
    ( package
    ). Атрибут
    с этой областью видимости недоступен
    или невиден для всех классов
    за пределами пакета, в котором
    определен класс
    -владелец данного атрибута.

Квантор
видимости

может быть опущен. Его отсутствие
означает, что видимость атрибута
не указывается. Эта ситуация отличается
от принятых по умолчанию соглашений
в традиционных языках программирования,
когда отсутствие квантора
видимости

трактуется как public
или private.
Однако вместо условных графических
обозначений можно записывать
соответствующее ключевое слово:
public,
protected,
private,
package.

Имя
атрибута
представляет собой строку текста,
которая используется в качестве
идентификатора соответствующего
атрибута
и поэтому должна быть уникальной в
пределах данного класса.
Имя атрибута
— единственный обязательный элемент
синтаксического обозначения атрибута,
должно начинаться со строчной (малой)
буквы и не должно содержать пробелов.

Кратность
(multiplicity)

— спецификация области значений
допустимой мощности, которой могут
обладать соответствующие множества.

Кратность
атрибута

характеризует общее количество
конкретных атрибутов
данного типа, входящих в состав
отдельного класса.
В общем случае кратность
записывается в форме строки текста
из цифр в квадратных скобках после
имени соответствующего атрибута,
при этом цифры разделяются двумя
точками: [нижняя
граница .. верхняя граница],
где нижняя и верхняя границы
положительные целые числа. Каждая
такая пара служит для обозначения
отдельного замкнутого интервала
целых чисел, у которого нижняя
(верхняя) граница равна значению
нижней границы (верхней). В качестве
верхней границы может использоваться
специальный символ » *
» (звездочка), который означает
произвольное положительное целое
число, т.е. неограниченное сверху
значение кратности
соответствующего атрибута.

Интервалов
кратности
для отдельного атрибута
может быть несколько. В этом случае
их совместное использование
соответствует теоретико-множественному
объединению соответствующих
интервалов. Значения кратности
из интервала следуют в монотонно
возрастающем порядке без пропуска
отдельных чисел, лежащих между нижней
и верхней границами. При этом
придерживаются следующего правила:
соответствующие нижние и верхние
границы интервалов включаются в
значение кратности.

Если
в качестве кратности
указывается единственное число, то
кратность
атрибута

принимается равной данному числу.
Если же указывается единственный
знак » *
«, то это означает, что кратность
атрибута

может быть произвольным положительным
целым числом или нулем. В языке UML
кратность
широко используется также для задания
ролей ассоциаций, составных объектов
и значений атрибутов.
Если кратность
атрибута

не указана, то по умолчанию в языке
UML принимается ее значение равное
[1..1],
т.е. в точности 1.

Тип
атрибута
представляет собой выражение,
семантика которого определяется
некоторым типом данных, определенным
в пакете Типы данных языка UML или
самим разработчиком. В нотации UML
тип атрибута
иногда определяется в зависимости
от языка программирования, который
предполагается использовать для
реализации данной модели. В простейшем
случае тип атрибута
указывается строкой текста, имеющей
осмысленное значение в пределах
пакета или модели, к которым относится
рассматриваемый класс.

Исходное
значение служит для задания начального
значения соответствующего атрибута
в момент создания отдельного
экземпляра класса.
Здесь необходимо придерживаться
правила принадлежности значения
типу конкретного атрибута.
Если исходное значение не указано,
то значение соответствующего атрибута
не определено на момент создания
нового экземпляра класса.
С другой стороны, конструктор объекта
может переопределять исходное
значение в процессе выполнения
программы, если в этом возникает
необходимость.

При
задании атрибутов
могут быть использованы дополнительные
синтаксические конструкции — это
подчеркивание строки атрибута,
пояснительный текст в фигурных
скобках и косая черта перед именем
атрибута.
Подчеркивание строки атрибута
означает, что соответствующий атрибут
общий для всех объектов данного
класса,
т.е. его значение у всех создаваемых
объектов одинаковое (аналог ключевого
слова static
в некоторых языках программирования).

Пояснительный
текст в фигурных скобках может
означать две различные конструкции.
Если в этой строке имеется знак
равенства, то вся запись Строка-свойство
служит для указания дополнительных
свойств атрибута,
которые могут характеризовать
особенности изменения значений
атрибута
в ходе выполнения программы. Фигурные
скобки как раз и обозначают
фиксированное значение соответствующего
атрибута
для класса
в целом, которое должны принимать
все вновь создаваемые экземпляры
класса
без исключения. Это значение
принимается за исходное значение
атрибута,
которое не может быть переопределено
в последующем. Отсутствие строки-свойства
по умолчанию трактуется так, что
значение соответствующего атрибута
может быть изменено в программе.

Знак
» /
» перед именем атрибута
указывает на то, что данный атрибут
является производным от некоторого
другого атрибута
этого же класса.

Производный
атрибут
(derived element) — атрибут
класса
,
значение которого для отдельных
объектов может быть вычислено
посредством значений других атрибутов
этого же объекта.

Операции
класса

Операция
(operation)

— это сервис, предоставляемый каждым
экземпляром или объектом класса
по требованию своих клиентов, в
качестве которых могут выступать
другие объекты, в том числе и экземпляры
данного класса
.

Операции
класса

записываются в третьей сверху секции
прямоугольника класса,
которую часто называют секцией
операций.
Совокупность операций
характеризует функциональный аспект
поведения всех объектов данного
класса.
Запись операций
класса

в языке UML также стандартизована и
подчиняется определенным синтаксическим
правилам. При этом каждой операции
класса

соответствует отдельная строка,
которая состоит из квантора
видимости

операции,
имени операции,
выражения типа возвращаемого
операцией
значения и, возможно, строка-свойство
данной операции.
Общий формат записи отдельной
операции
класса

следующий:

<квантор
видимости> <имя операции>(

список
параметров):

<выражение
типа возвращаемого значения>

{строка-свойство}

Квантор
видимости
,
как и в случае атрибутов
класса
,
может принимать одно из четырех
возможных значений и, соответственно,
отображается при помощи специального
символа либо ключевого слова. Символ
» +
» обозначает операцию
с областью видимости типа общедоступный
( public
). Символ » #
» обозначает операцию
с областью видимости типа защищенный
( protected
). Символ » —
» используется для обозначения
операции
с областью видимости типа закрытый
( private
). И, наконец, символ » ~
» используется для обозначения
операции
с областью видимости типа пакетный
( package
).

Квантор
видимости

для операции
может быть опущен. В этом случае его
отсутствие просто означает, что
видимость операции
не указывается. Вместо условных
графических обозначений также можно
записывать соответствующее ключевое
слово: public,
protected,
private,
package.

Имя
операции
представляет собой строку текста,
которая используется в качестве
идентификатора соответствующей
операции
и поэтому должна быть уникальной в
пределах данного класса.
Имя операции
— единственный обязательный элемент
синтаксического обозначения операции,
должно начинаться со строчной (малой)
буквы, и, как правило, записываться
без пробелов.

Список
параметров
является перечнем разделенных
запятой формальных параметров,
каждый из которых, в свою очередь,
может быть представлен в следующем
виде:

<направление
параметра> <имя параметра>:

<выражение
типа> =

<значение
параметра по умолчанию>.

Параметр
(parameter)

— спецификация переменной операции,
которая может быть изменена, передана
или возвращена.

Параметр
может включать имя, тип, направление
и значение по умолчанию. Направление
параметра
— есть одно из ключевых слов in,
out
или inout
со значением in
по умолчанию, в случае если вид
параметра
не указывается. Имя параметра
есть идентификатор соответствующего
формального параметра,
при записи которого следуют правилам
задания имен атрибутов.
Выражение типа является спецификацией
типа данных для допустимых значений
соответствующего формального
параметра.
Наконец, значение по умолчанию в
общем случае представляет собой
некоторое конкретное значение для
этого формального параметра.

Выражение
типа возвращаемого значения также
указывает на тип данных значения,
которое возвращается объектом после
выполнения соответствующей операции.
Две точки и выражение типа возвращаемого
значения могут быть опущены, если
операция
не возвращает никакого значения.
Для указания нескольких возвращаемых
значений данный элемент спецификации
операции
может быть записан в виде списка
отдельных выражений.

Операция
с областью действия на весь класс
показывается подчеркиванием имени
и строки выражения типа. В этом случае
под областью действия операции
понимаются все объекты этого класса.
В этом случае вся строка записи
операции
подчеркивается.

Строка-свойство
служит для указания значений свойств,
которые могут быть применены к данной
операции.
Строка-свойство может отсутствовать,
если свойства не специфицированы.

Список
формальных параметров
и тип возвращаемого значения не
обязателен. Квантор
видимости

атрибутов
и операций
может быть указан в виде специального
значка или символа, которые используются
для графического представления
моделей в инструментальном средстве.
Еще раз следует напомнить, что имена
операций,
так же как атрибутов
и параметров,
записываются со строчной (малой)
буквы, а их типы параметров
— с заглавной (большой) буквы. При
этом обязательной частью строки
записи операции
является наличие имени операции
и круглых скобок.

Расширение
языка UML для построения моделей
программного обеспечения и
бизнес-систем

Одним
из несомненных достоинств языка UML
является наличие механизмов
расширения, которые позволяют ввести
в рассмотрение дополнительные
графические обозначения, ориентированные
для решения задач из определенной
предметной области. Язык UML содержит
два специальных расширения: профиль
для процесса разработки программного
обеспечения (The UML Profile for Software
Development Processes) и профиль для
бизнес-моделирования (The UML Profile for
Business Modeling).

В
рамках первого из них предложено
три специальных графических примитива,
которые могут быть использованы для
уточнения семантики отдельных
классов
при построении различных диаграмм:

  • Управляющий
    класс
    (control class) — класс,
    отвечающий за координацию действий
    других классов.
    На каждой диаграмме классов
    должен быть хотя бы один управляющий
    класс,
    причем количество посылаемых
    объектам управляющего класса
    сообщений мало, по сравнению с числом
    рассылаемых ими. Управляющий класс
    отвечает за координацию действий
    других классов.
    У каждой диаграммы классов
    должен быть хотя бы один управляющий
    класс,
    контролирующий последовательность
    выполнения действий этого варианта
    использования. Как правило, данный
    класс
    является активным и инициирует
    рассылку множества сообщений другим
    классам
    модели. Кроме специального обозначения
    управляющий класс
    может быть изображен в форме
    прямоугольника класса
    со стереотипом <<control>>
    (рис.
    5.3, а
    ).

  • Класс
    -сущность (entity class) — пассивный класс,
    информация о котором должна храниться
    постоянно и не уничтожаться с
    выключением системы. Класс
    -сущность содержит информацию,
    которая должна храниться постоянно
    и не уничтожается с уничтожением
    объектов данного класса
    или прекращением работы моделируемой
    системы, связанные с выключением
    системы или завершением программы.
    Как правило, этот класс
    соответствует отдельной таблице
    базы данных. В этом случае его
    атрибуты
    являются полями таблицы, а операции
    – присоединенными или хранимыми
    процедурами. Этот класс
    пассивный и лишь принимает сообщения
    от других классов
    модели. Класс
    -сущность может быть изображен также
    стандартным образом в форме
    прямоугольника класса
    со стереотипом <<entity>>
    (рис.
    5.3, б
    ).

  • Граничный
    класс
    (boundary class) — класс,
    который располагается на границе
    системы с внешней средой и
    непосредственно взаимодействует
    с актерами, но является составной
    частью системы. Граничный класс
    может быть изображен также стандартным
    образом в форме прямоугольника
    класса
    со стереотипом <<boundary>>
    (рис.
    5.3, в
    ).

Рис.
5.3.
 
Графическое изображение классов
для моделирования программного
обеспечения

В
рамках второго профиля также
предложено три специальных графических
примитива, которые могут быть
использованы для уточнения семантики
отдельных классов
при построении моделей бизнес-систем:

  • Сотрудник
    (business worker) — класс,
    служащий на диаграмме классов
    для представления любого сотрудника,
    который является элементом
    бизнес-системы и взаимодействует
    с другими сотрудниками при реализации
    бизнес-процесса. Этот класс
    также может быть изображен в форме
    прямоугольника класса
    со стереотипом <<worker>>
    или <<internalWorker>>
    (рис.
    5.4, а
    ).

  • Сотрудник
    для связи с окружением (caseworker) –
    класс,
    служащий для представления в
    бизнес-системе такого сотрудника,
    который, являясь элементом
    бизнес-системы, непосредственно
    взаимодействует с актерами
    (бизнес-актерами) при реализации
    бизнес-процесса. Этот класс
    также может быть изображен в форме
    прямоугольника класса
    со стереотипом <<caseWorker>>
    (рис.
    5.4, б
    ).

  • Бизнес-сущность
    (business entity) — специальный случай
    класса
    -сущности, который также не инициирует
    никаких сообщений. Этот класс
    служит для сохранения информации
    о результатах выполнения бизнес-процесса
    в моделируемой бизнес-системе или
    организации. Этот класс
    также может быть изображен в форме
    прямоугольника класса
    со стереотипом <<business
    entity>>
    (рис.
    5.4, в
    ).

Рис.
5.4.
 
Графическое изображение классов
для моделирования бизнес-систем

Интерфейс

Интерфейс
(interface) — именованное множество
операций,
которые характеризуют поведение
отдельного элемента модели.

Интерфейс
в контексте языка UML является
специальным случаем класса,
у которого имеются операции,
но отсутствуют атрибуты.
Для обозначения интерфейса
используется специальный графический
символ окружность или стандартный
способ – прямоугольник класса
со стереотипом <<interface>>
(рис.
5.5
).

На
диаграмме вариантов использования
интерфейс
изображается в виде маленького
круга, рядом с которым записывается
его имя (рис.
5.5, а
).
В качестве имени может использоваться
существительное, которое характеризует
соответствующую информацию или
сервис, например, » Датчик
температуры
«, » Форма
ввода
«, » Сирена
«, » Видеокамера
» (рис.
5.5, б
).
С учетом языка реализации модели
имя интерфейса,
как и имена
других классов,
рекомендуется записывать на английском
и начинать с заглавной буквы I,
например, ITemperatureSensor,
IsecureInformation
(рис.
5.5, в
).

Рис.
5.5.
 
Примеры графического изображения
интерфейсов на диаграммах классов

Интерфейсы
на диаграмме служат для спецификации
таких элементов модели, которые
видимы извне, но их внутренняя
структура остается скрытой от
клиентов. Интерфейсы не могут
содержать ни атрибутов,
ни состояний, ни направленных
ассоциаций. Они содержат только
операции
без указания особенностей их
реализации. Формально интерфейс
не только отделяет спецификацию
операций
системы от их реализации, но и
определяет общие границы проектируемой
системы. В последующем интерфейс
может быть уточнен явным указанием
тех операций,
которые специфицируют отдельный
аспект поведения системы. Графическое
изображение интерфейсов
в форме окружности могут использоваться
и на других типах канонических
диаграмм, например, диаграммах
компонентов и развертывания.

Диаграмма вариантов прецедентов – это тип поведенческой диаграммы UML, который часто используется для анализа различных систем. Они позволяют визуализировать различные типы ролей в системе и то, как эти роли взаимодействуют с системой. Это руководство по диаграмме вариантов использования охватывает следующие темы и поможет вам лучше создавать сценарии использования.

  • Важность использования диаграммы прецедентов
  • Объекты диаграммы прецедентов
  • Рекомендации по диаграммам прецедентов
  • Отношения в диаграммах вариантов использования
  • Как создавать диаграммы вариантов использования ( с примером )
    • идентификация актеров
    • Определение вариантов использования
    • Когда использовать “Включить”
    • Как использовать обобщение
    • Когда использовать «Расширить»
  • Шаблоны диаграмм вариантов использования для распространенных сценариев

Важность использования диаграммы прецедентов

Как уже упоминалось ранее, диаграммы прецедентов используются для сбора требований к использованию системы. В зависимости от ваших требований вы можете использовать эти данные различными способами. Ниже приведены несколько способов их использования.

  • Идентификация функций и как с ними взаимодействуют роли – основное назначение диаграмм сценариев использования.
  • Для представления системы на высоком уровне – Особенно полезно при представленииее руководителям или заинтересованным сторонам. Вы можете выделить роли, которые взаимодействуют с системой, и функциональные возможности, предоставляемые системой, не углубляясь во внутреннюю работу системы.
  • Идентификация внутренних и внешних факторов – Это может показаться простым, но в больших сложных проектах система может быть идентифицирована как внешняя роль в другом случае использования.

Объекты диаграммы прецедентов

Использовать диаграммы корпуса состоят из 4 объектов.

  • Актер
  • Случай использования
  • Система
  • Пакет

Объекты более подробно описаны ниже.

Актер

Актер в использует диаграмму прецедентов – это любая сущность, которая выполняет роль в одной данной системе. Это может быть человек, организация или внешняя система и обычно рисуется как скелет, показанный ниже.

Актер

Случай использования

Случай использования представляет собой функцию или действие внутри системы. Она нарисована как овал и названа функцией.

Случай использования

Система

Система используется для определения сферы применения и нарисована в виде прямоугольника. Это необязательный элемент, но полезный при визуализации больших систем. Например, вы можете создать все случаи использования, а затем использовать системный объект для определения области применения вашего проекта. Или вы даже можете использовать его, чтобы показать различные области, охваченные в разных релизах.

Система

Пакет

Пакет является еще одним дополнительным элементом, который чрезвычайно полезен в сложных диаграммах. Подобно диаграммам классов, пакеты используются для группировки случаев использования. Они нарисованы, как показано на рисунке ниже.

Пакет

Рекомендации по диаграммам прецедентов

Несмотря на то, что диаграммы использования могут быть использованы для различных целей, существуют некоторые общие рекомендации, которым необходимо следовать при рисовании примеров использования.

К ним относятся стандарты именования, направления стрелок, размещение вариантов использования, использование системных блоков, а также правильное использование отношений.

Мы подробно освещали эти рекомендации в отдельном посте блога. Так что продолжайте и ознакомьтесь с рекомендациями по диаграммам прецедентов.

Отношения в диаграммах вариантов использования

Существует пять типов отношений на диаграмме прецедентов. Они

  • Ассоциация между актером и случаем использования
  • Обобщение актера
  • Расширить отношения между двумя случаями использования
  • Включить взаимосвязь между двумя случаями использования
  • Обобщение случая использования

Мы рассмотрели все эти отношения в отдельном посте блога, который содержит примеры с изображениями. Мы не будем вдаваться в подробности в этом посте, но вы можете проверить отношения на диаграммах прецедентов использования.

Как создавать диаграммы прецедентов использования

До сих пор вы узнали об объектах, отношениях и руководствах, которые критичны при рисовании диаграмм с примерами из практики. Я объясню различные процессы на примере банковской системы.

Выявление актеров

Актеры – это внешние объекты, взаимодействующие с вашей системой. Это может быть человек, другая система или организация. В банковской системе наиболее очевидным действующим лицом является клиент. Другие актеры могут быть банковскими служащими или кассирами в зависимости от роли, которую вы пытаетесь показать в случае использования.

Примером внешней организации может служить налоговый орган или центральный банк. Кредитный процессор является хорошим примером внешней системы, связанной в качестве агента.

Определение случаев использования

Теперь пришло время идентифицировать случаи использования. Хороший способ сделать это – определить, что нужно участникам системы. В банковской системе клиенту необходимо будет открывать счета, вводить и выводить средства, запрашивать чековые книги и выполнять аналогичные функции. Так что все это можно рассматривать как случаи использования.

Случаи использования верхнего уровня всегда должны обеспечивать полную функцию, требуемую для агента. В зависимости от сложности системы вы можете расширить или включить случаи использования.

После того, как вы определили актёров и верхний уровень использования, у вас есть базовое представление о системе. Теперь вы можете точно настроить его и добавить к нему дополнительные слои деталей.

Ищите общие функциональные возможности для использования Включать

Ищите общие функциональные возможности, которые могут быть повторно использованы в системе. Если вы найдете два или более случаев использования, которые имеют общую функциональность, вы можете извлечь общие функции и добавить его в отдельный случай использования. Затем вы можете подключить его через include relationship, чтобы показать, что он всегда вызывается, когда выполняется исходный сценарий использования. ( см. диаграмму для примера ).

Возможно ли обобщение актеров и случаев использования

Могут быть случаи, когда агенты ассоциируются с аналогичными случаями использования, в то время как запускается несколько случаев использования, уникальных только для них. В таких случаях можно обобщить агент, чтобы показать наследование функций. Аналогичную вещь можно сделать и в случае использования.

Одним из лучших примеров этого является случай использования “Оплатить” в платежной системе. Вы можете далее обобщить его до “Оплатить кредитной картой”, “Оплатить наличными”, “Оплатить чеком” и т.д. Все они имеют атрибуты и функциональность оплаты со специальными уникальными для них сценариями.

Необязательные функции или дополнительные функции

Есть некоторые функции, которые срабатывают опционально. В таких случаях можно использовать отношения расширения и прикрепить к ним правило расширения. В приведенном ниже примере банковской системы “Рассчитать бонус” является необязательным и срабатывает только при выполнении определенного условия.

Продление не всегда означает, что оно необязательно. Иногда вариант использования, связанный с удлинением, может дополнять вариант использования базы. Следует помнить, что базовый сценарий использования должен быть способен выполнять функцию самостоятельно, даже если сценарий использования расширения не вызывается.

Пример использования в этом случае диаграмма использования учебное пособие

Случай использования с большинством сценариев, найденных в диаграмма прецедентов

Шаблоны диаграмм прецедентов использования

Шаблон для использования в банкоматной системе

Шаблон варианта прецедентов для системы банкомата

Мы пошли дальше и создали шаблоны диаграмм прецедентов использования для некоторых распространенных сценариев. Хотя ваша проблема или сценарий не будут в точности такими, вы можете использовать их в качестве отправной точки. Ознакомьтесь с нашими шаблонами диаграмм прецедентов использования.

Вопросы по руководству по диаграмме прецедентов использования

Мы постарались всесторонне охватить все, что вам нужно знать о создании диаграмм прецедентов использования. Если у вас есть сомнения по поводу какого-либо раздела или вы можете придумать, как улучшить это руководство, пожалуйста, сообщите нам об этом в комментариях.

Больше руководств по диаграммам

  • Учебное пособие по диаграммам последовательностей: полное руководство с примерами
  • Учебное пособие по моделированию бизнес-процессов (руководство по BPM с объяснением функций)
  • Окончательное руководство по блок-схеме (полное руководство по блок-схеме с примерами)
What is Use Case Diagram?

Here are some questions that have been asked frequently in the UML world are: What is a use case diagram? Why Use case diagram? or simply, Why use cases?. Some people don’t know what use case is, while the rest under-estimated the usefulness of use cases in developing a good software product. Is use case diagram underrated? I hope you will find the answer when finished reading this article.

So what is a use case diagram? A UML use case diagram is the primary form of system/software requirements for a new software program underdeveloped. Use cases specify the expected behavior (what), and not the exact method of making it happen (how). Use cases once specified can be denoted both textual and visual representation (i.e. use case diagram). A key concept of use case modeling is that it helps us design a system from the end user’s perspective. It is an effective technique for communicating system behavior in the user’s terms by specifying all externally visible system behavior.

A use case diagram is usually simple. It does not show the detail of the use cases:

  • It only summarizes some of the relationships between use cases, actors, and systems.
  • It does not show the order in which steps are performed to achieve the goals of each use case.

As said, a use case diagram should be simple and contains only a few shapes. If yours contain more than 20 use cases, you are probably misusing use case diagram.

The figure below shows the UML diagram hierarchy and the positioning of the UML Use Case Diagram. As you can see, use case diagrams belong to the family of behavioral diagrams.

Use Case Diagram in UML Diagram Hierarchy

Note that:

  • There are many different UML diagrams that serve different purposes (as you can see from the UML diagram tree above). You can describe those details in other UML diagram types and documents, and have them be linked from use cases.
  • Use cases represent only the functional requirements of a system. Other requirements such as business rules, quality of service requirements, and implementation constraints must be represented separately, again, with other UML diagrams.

Learn UML Faster, Better and Easier

Are you looking for a Free UML tool for learning UML faster, easier and quicker? Visual Paradigm Community Edition is a UML software that supports all UML diagram types. It is an international award-winning UML modeler, and yet it is easy-to-use, intuitive & completely free.

Free Download

Origin of Use Case

These days use case modeling is often associated with UML, although it has been introduced before UML existed. Its brief history is as follow:

  • In 1986, Ivar Jacobson first formulated textual and visual modeling techniques for specifying use cases.
  • In 1992 his co-authored book Object-Oriented Software Engineering — A Use Case Driven Approach helped to popularize the technique for capturing functional requirements, especially in software development.

Purpose of Use Case Diagram

Use case diagrams are typically developed in the early stage of development and people often apply use case modeling for the following purposes:

  • Specify the context of a system
  • Capture the requirements of a system
  • Validate a systems architecture
  • Drive implementation and generate test cases
  • Developed by analysts together with domain experts

Use Case Diagram at a Glance

A standard form of use case diagram is defined in the Unified Modeling Language as shown in the Use Case Diagram example below:

Use Case Diagram at a glance

Notation Description Visual Representation

Actor

  • Someone interacts with use case (system function).
  • Named by noun.
  • Actor plays a role in the business
  • Similar to the concept of user, but a user can play different roles
  • For example:
    • A prof. can be instructor and also researcher
    • plays 2 roles with two systems
  • Actor triggers use case(s).
  • Actor has a responsibility toward the system (inputs), and Actor has expectations from the system (outputs).
Use Case Diagram Notation - Actor

Use Case

  • System function (process — automated or manual)
  • Named by verb + Noun (or Noun Phrase).
  • i.e. Do something
  • Each Actor must be linked to a use case, while some use cases may not be linked to actors.
Use Case Diagram Notation - Use Case

Communication Link

  • The participation of an actor in a use case is shown by connecting an actor to a use case by a solid link.
  • Actors may be connected to use cases by associations, indicating that the actor and the use case communicate with one another using messages.
Use Case Diagram Notation - Communication Link

Boundary of system

  • The system boundary is potentially the entire system as defined in the requirements document.
  • For large and complex systems, each module may be the system boundary.
  • For example, for an ERP system for an organization, each of the modules such as personnel, payroll, accounting, etc.
  • can form a system boundary for use cases specific to each of these business functions.
  • The entire system can span all of these modules depicting the overall system boundary
Use Case Diagram Notation - System Boundary

Structuring Use Case Diagram with Relationships

Use cases share different kinds of relationships. Defining the relationship between two use cases is the decision of the software analysts of the use case diagram. A relationship between two use cases is basically modeling the dependency between the two use cases. The reuse of an existing use case by using different types of relationships reduces the overall effort required in developing a system. Use case relationships are listed as the following:

Use Case Relationship Visual Representation

Extends

  • Indicates that an «Invalid Password» use case may include (subject to specified in the extension) the behavior specified by base use case «Login Account».
  • Depict with a directed arrow having a dotted line. The tip of arrowhead points to the base use case and the child use case is connected at the base of the arrow.
  • The stereotype «<<extends>>» identifies as an extend relationship
Use Case Diagram Notation - Extend

Include

  • When a use case is depicted as using the functionality of another use case, the relationship between the use cases is named as include or uses relationship.
  • A use case includes the functionality described in another use case as a part of its business process flow.
  • A uses relationship from base use case to child use case indicates that an instance of the base use case will include the behavior as specified in the child use case.
  • An include relationship is depicted with a directed arrow having a dotted line. The tip of arrowhead points to the child use case and the parent use case connected at the base of the arrow.
  • The stereotype «<<include>>» identifies the relationship as an include relationship.
Use Case Diagram Notation - Include

Generalization

  • A generalization relationship is a parent-child relationship between use cases.
  • The child use case is an enhancement of the parent use case.
  • Generalization is shown as a directed arrow with a triangle arrowhead.
  • The child use case is connected at the base of the arrow. The tip of the arrow is connected to the parent use case.
Use Case Diagram Notation - Generalization

Use Case Examples

Use Case Example — Association Link

A Use Case diagram illustrates a set of use cases for a system, i.e. the actors and the relationships between the actors and use cases.

Use Case Diagram Example

Use Case Example — Include Relationship

The include relationship adds additional functionality not specified in the base use case. The <<Include>> relationship is used to include common behavior from an included use case into a base use case in order to support the reuse of common behavior.

Use Case Diagram Include Example

Use Case Example — Extend Relationship

The extend relationships are important because they show optional functionality or system behavior. The <<extend>> relationship is used to include optional behavior from an extending use case in an extended use case. Take a look at the use case diagram example below. It shows an extend connector and an extension point «Search».

Use Case Diagram Extend Example

Use Case Example — Generalization Relationship

A generalization relationship means that a child use case inherits the behavior and meaning of the parent use case. The child may add or override the behavior of the parent. The figure below provides a use case example by showing two generalization connectors that connect between the three use cases.

Use Case Diagram Generalization Example

Use Case Diagram — Vehicle Sales Systems

The figure below shows a use case diagram example for a vehicle system. As you can see even a system as big as a vehicle sales system contains not more than 10 use cases! That’s the beauty of use case modeling.

The use case model also shows the use of extend and include. Besides, there are associations that connect between actors and use cases.

Use Case Diagram Example - Vehicle Sales Systems

How to Identify Actor

Often, people find it easiest to start the requirements elicitation process by identifying the actors. The following questions can help you identify the actors of your system (Schneider and Winters — 1998):

  • Who uses the system?
  • Who installs the system?
  • Who starts up the system?
  • Who maintains the system?
  • Who shuts down the system?
  • What other systems use this system?
  • Who gets information from this system?
  • Who provides information to the system?
  • Does anything happen automatically at a present time?

How to Identify Use Cases?

Identifying the Use Cases, and then the scenario-based elicitation process carries on by asking what externally visible, observable value that each actor desires. The following questions can be asked to identify use cases, once your actors have been identified (Schneider and Winters — 1998):

  • What functions will the actor want from the system?
  • Does the system store information? What actors will create, read, update or delete this information?
  • Does the system need to notify an actor about changes in the internal state?
  • Are there any external events the system must know about? What actor informs the system of those events?

Use Case Diagram Tips

Now, check the tips below to see how to apply use case effectively in your software project.

  • Always structure and organize the use case diagram from the perspective of actors.
  • Use cases should start off simple and at the highest view possible. Only then can they be refined and detailed further.
  • Use case diagrams are based upon functionality and thus should focus on the «what» and not the «how».

Use Case Levels of Details

Use case granularity refers to the way in which information is organized within use case specifications, and to some extent, the level of detail at which they are written. Achieving the right level of use case granularity eases communication between stakeholders and developers and improves project planning.

Alastair Cockburn in Writing Effective Use Cases gives us an easy way to visualize different levels of goal level by thinking in terms of the sea:

Different levels of details of use case

Note that:

  • While a use case itself might drill into a lot of detail about every possibility, a use-case diagram is often used for a higher-level view of the system as blueprints.
  • It is beneficial to write use cases at a coarser level of granularity with less detail when it’s not required.

I hope you can answer «what is use case diagram» now and can apply use case in your project. If you want to learn more about other UML diagram types, please check the UML guide: Overview of the 14 UML Diagram Types.

Try to Draw UML Use Case Diagram Now

You’ve learned what a Use Case Diagram is and how to draw a Use Case Diagram. It’s time to draw a Use Case Diagram of your own. Get Visual Paradigm Community Edition, a free UML software, and create your own Use Case Diagram with the free Use Case Diagram tool. It’s easy-to-use and intuitive.

Free Download

Понравилась статья? Поделить с друзьями:
  • Сценарий верки сердючки на юбилей мужчине
  • Сценарий ван хельсинг
  • Сценарий бурятских свадеб
  • Сценарий верки сердючки на свадьбу
  • Сценарий бурной ночи