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

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

  • автор:

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

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

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

План действий

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

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

Замечания (описание)

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

Термин Изображение Описание
Сценарий Вся диаграмма вариантов использования (ВИС) Сценарий (scenario) – это последовательность шагов, описывающих взаимодействие пользователя и системы.
Актер Актер (actor) представляет собой некую роль, которую пользователь играет по отношению к системе.
Прецедент Обозначает выполняемые системой действия (могут включать возможные варианты), приводящие к наблюдаемым актёрами результатам.
include (включает) Диаграмма прецедентов (вариантов использования) UML Сложный шаг в прецеденте можно представить другим прецедентом.
В терминах языка UML мы говорим, что первый прецедент включает (includes) второй.
Граница системы Диаграмма прецедентов (вариантов использования) UML Позволяет обозначить границы систем или подсистем.

Как применять технику креативности

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

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

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

Как научиться

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

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

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

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

Прецеденты – это технология определения функциональных требований к системе. Работа прецедентов заключается в описании типичных взаимодействий между пользователями системы и самой системой и предоставлении описания процесса ее функционирования. Вместо того чтобы описывать прецеденты в лоб, я предпочитаю подкрасться к ним сзади и начать с описания сценариев. Сценарий (scenario) – это последовательность шагов, описывающих взаимодействие пользователя и системы. Поэтому при наличии онлайнового магазина, основанного на веб-сайте, мы можем использовать сценарий «Покупка товара» (Buy a Product), в котором происходит следующее.

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

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

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

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

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

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

Содержимое прецедентов

Не существует стандартного способа описания содержимого прецедента; в разных случаях применяются различные форматы. На рис. 9.1 показан общий стиль использования. Вы начинаете с выбора одного из сценариев в качестве главного успешного сценария (main success scenario). Сначала вы описываете тело прецедента, в котором главный успешный сценарий представлен последовательностью нумерованных шагов. Затем берете другой сценарий и вставляете его в виде расширения (extension), описывая его в терминах изменений главного успешного сценария. Расширения могут быть успешными – пользователь достиг своей цели, как в варианте 3a, или неудачными, как в варианте 6a.

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

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

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

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

Структура прецедента – это отличный инструмент для поиска альтернатив главного успешного сценария. На каждом шаге спрашивайте:
«Что может еще произойти?» и в частности «Что может пойти не так?»

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

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

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

Наряду с шагами сценария можно вставить в прецедент дополнительную общую информацию.
Предусловие (pre-condition) описывает действия, обязательно выполняемые системой перед тем, как она разрешит начать работу прецедента. Это полезная информация, позволяющая разработчикам не проверять некоторые условия в их программе.
Гарантия (guarantee) описывает обязательные действия системы по окончании работы шаблона ответа. Успешные гарантии выполняются после успешного сценария; минимальные гарантии выполняются после любого сценария.
Триггер (trigger) определяет событие, инициирующее выполнение прецедента.

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

Диаграммы прецедентов

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

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

Лучше всего обдумывать диаграмму прецедентов с помощью графической таблицы, показывающей их содержимое. Она напоминает диаграмму контекста, используемую в структурных методах, поскольку она показывает границы системы и ее взаимодействие с внешним миром. Диаграмма прецедентов показывает актеров, прецеденты и отношения между ними:
• Какие актеры выполняют тот или иной прецедент
• Какие прецеденты включают другие прецеденты
В языке UML помимо отношения «include» (включает) есть и другие типы отношений между прецедентами, например отношение «extend» (расширяет). Настоятельно рекомендуем его избегать. Слишком часто разработчики целыми командами надолго погружались в рассмотрение различных отношений между прецедентами, понапрасну растрачивая силы. Лучше уделяйте больше внимания текстовому описанию прецедента; именно в этом заключается истинная ценность этой технологии.

Прецеденты и возможности (или пожелания)

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

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

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

Подписывайтесь на новости сайта, форму подписки вы можете найти в правой колонке сайта.

Если вы хотите научиться работать на фрилансе профессионально, приглашаем на курс «Как зарабатывать на фрилансе».

Почему не стоит детализировать диаграммы прецедентов

uchet-jkh.ru

Диаграммы прецедентов – это графические инструменты для моделирования и анализа системы, которые помогают идентифицировать, описывать и организовывать основные действия пользователей и системы. Они широко используются в разработке программного обеспечения, особенно в методологии Unified Modeling Language (UML), для понимания и документирования требований и взаимодействия между разными акторами системы.

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

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

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

Почему прецедентные диаграммы нельзя детализировать полностью?

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

  1. Непрактичность: Детализация прецедентных диаграмм может привести к перегрузке информацией, что затрудняет их понимание и использование. Полная детализация каждого прецедента может привести к созданию слишком сложных и громоздких диаграмм, которые будут трудно восприниматься.
  2. Отсутствие необходимости: Прецедентные диаграммы создаются для понимания основных функциональных возможностей системы, а не для подробного описания каждой ее части. Они используются для выявления актеров, прецедентов и их взаимосвязей, а не для подробного описания всех шагов внутри каждого прецедента.
  3. Гибкость и изменяемость: Прецедентные диаграммы предназначены для описания поведения системы, которое может быть изменено в ходе разработки. Полное детализирование прецедентных диаграмм ограничивает гибкость системы и затрудняет внесение изменений в функциональность.

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

Отсутствие описания деталей

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

  1. Сокращение времени и усилий Подробное описание всех операций и взаимодействий может занять значительное время и требовать больших усилий от аналитика или разработчика. Вместо этого, диаграмма прецедентов позволяет сосредоточиться на общих задачах и связях между актерами и прецедентами.
  2. Упрощение понимания Излишнее детализирование диаграммы может запутать читателя и усложнить понимание системы. Понятность является одним из ключевых преимуществ использования диаграмм прецедентов, и поэтому важно сохранить их простоту и легкость восприятия.
  3. Гибкость системы Подробное описание операций и взаимодействий может привести к жесткому ограничению системы и затруднить ее дальнейшую модификацию и адаптацию. Предоставление общего обзора позволяет сохранить гибкость и способность системы к изменениям.
  4. Риск пропуска деталей Создание подробного описания каждого шага и операции может привести к риску пропуска некоторых ключевых деталей системы. Диаграмма прецедентов призвана выявлять главные события и связи, позволяя идентифицировать основные элементы системы без утраты смысла.

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

Несоответствие цели диаграммы

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

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

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

  • Целевая аудитория: Диаграммы прецедентов служат коммуникационным инструментом между разработчиками и заказчиками. Они должны быть понятными и доступными для всех заинтересованных сторон. Слишком подробные детали могут затруднить восприятие информации и усложнить взаимопонимание.
  • Уровень абстракции: Детализация диаграммы прецедентов может привести к потере абстрактного уровня, что затруднит уловление общей картины и понимание взаимосвязей между различными прецедентами и актерами.
  • Ограниченные пространственные ресурсы: Физические ограничения формата диаграммы не позволяют вместить детальные описания всех возможных сценариев использования и связей между ними. Это может привести к перегруженности диаграммы и снижению ее читаемости.

Вместо подробной детализации диаграммы прецедентов, следует использовать другие средства для описания более подробной функциональности системы, такие как Use Case Descriptions, User Stories или другие формы текстового описания требований. Такие средства позволяют более детально описать прецеденты и сценарии использования, не усложняя графическое представление.

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

Утяжеление понимания процесса

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

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

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

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

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

Ошибочное восприятие функций

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

Ошибочное восприятие функций может возникнуть по нескольким причинам:

  1. Ненужное углубление в детали: Подробное описание каждой функции системы может быть излишним. Иногда функции имеются только для того, чтобы обеспечить определенное поведение системы, и пользователь не должен об этом знать. Подробное описание таких функций может затруднить понимание системы и привести к ненужной сложности. Поэтому, при детализации диаграммы прецедентов необходимо оценивать важность каждой функции и исключать ненужные детали.
  2. Сложность понимания системы: Чрезмерное детализирование диаграммы прецедентов может привести к перегруженности информацией и сложности понимания системы. Пользователи могут запутаться в избытке информации и стать неуверенными в том, как использовать систему. Чтобы избежать этой проблемы, рекомендуется использовать только основные и наиболее важные функции на диаграммах прецедентов и оставлять детали для отдельных документов.
  3. Непригодность для анализа: Детализированные диаграммы прецедентов могут быть непригодными для анализа и оценки системы. Когда диаграмма содержит слишком много информации, становится сложно анализировать и понимать взаимосвязи между функциями и акторами. В таких случаях, целесообразно разбивать диаграммы на более мелкие, с более низким уровнем детализации, чтобы легче понять структуру и функции системы.

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

Усложнение процесса моделирования

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

  1. Повышение сложности понимания. Подробное описание каждого шага прецедента может привести к перегруженности диаграммы информацией. Это может затруднить понимание взаимосвязей между прецедентами и усложнить восприятие общей структуры системы.
  2. Увеличение объема документации. Подробные описания прецедентов сопровождаются большим объемом текстовой информации, что усложняет ее управление и поддержку. Создание и поддержка всех этих документов требует дополнительных усилий и времени.
  3. Утрата общей картины. Слишком детализированные диаграммы могут сосредоточиться на конкретных действиях или взаимодействиях, теряя из виду общую картину системы. Это может затруднить понимание целей и потребностей пользователей, а также понимание вклада каждого прецедента в достижение этих целей.
  4. Сложность сопровождения. Чем более подробными становятся диаграммы прецедентов, тем сложнее их сопровождать при внесении изменений в систему. При каждом изменении, связанном с добавлением, изменением или удалением прецедентов, необходимо обновлять все связанные диаграммы, что требует дополнительных усилий и возможно ведет к ошибкам.

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

Отсутствие гибкости при изменении

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

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

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

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

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

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

Перегрузка диаграммы информацией

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

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

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

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

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

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

Утомление пользователей

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

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

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

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

Рекомендуется использовать следующие подходы для предотвращения утомления пользователей:

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

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

Вопрос-ответ

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

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

Какая детализация диаграмм прецедентов считается достаточной?

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

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

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

Какие проблемы могут возникнуть при детализации диаграмм прецедентов?

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

Осмысленная визуализация при анализе и проектировании в действии

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

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

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

Кейс 1. Диаграмма состояний: достаточно одной таблетки

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

Примерно так выглядит человек, когда не видит уже оплаченную покупку

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

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

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

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

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

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

При таком варианте решения потребуется разработать 2 статусные модели в виде отдельных диаграмм состояния UML (она же — диаграмма конечных автоматов, Statechart Diagram), которые будут описывать стадии жизненного цикла для сущностей «Заявка» и «Договор». Также понадобится сформировать таблицу соответствий: статус заявки такой-то соответствует статусу договора такому-то.

Слева — статусная модель «Заявки», справа — статусная модель «Договора»

При этом, наверняка так случится, что одному статусу сущности «Заявка» будет соответствовать сразу несколько статусов сущности «Договор». К примеру, для состояния «Заявка доставлена» будет подходить длинный перечень состояний «Договора»: «Договор создан», «Договор оплачен», «Договор открыт» и т.д. Более того, состояние «Заявка доставлена» вообще не гарантирует того, что сущность «Договор» была создана (вторая компания могла принять запрос на открытие договора, но по какому-то трагическому стечению обстоятельств так этого и не сделала).

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

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

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

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

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

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

Нарушили ли мы принципы, заложенные авторами UML? Уверен, что нет. Наши действия формально равносильны тому, что мы для проектируемой системы ввели в рассмотрение некую свою сущность «Процесс» (хотя и представляющую одновременно несколько логически связанных сущностей реального мира), и с помощью диаграммы состояний смоделировали её поведение.

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

Кейс 2. Диаграмма коммуникации и вариантов использования: вам курицу или рыбу?

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

Далее вы выясняете, что бухгалтерский учёт всех сделок и операций по счетам должен вестись в единой системе — АБС. И сделки из используемой трейдерами системы (назовём её «Торговая система А») загружаются в АБС, используя промежуточное звено в виде некоторого хранилища. Через некоторое время вы узнаёте ви́дение бизнеса — притом высокоуровневое! — относительно того, что́ такое лимит на операции. И из этого ви́дения и полученных вводных проистекает необходимость проработать комплексное интеграционное решение, а не отдельный изолированный модуль.

Итого, мы до конца не понимаем ситуацию «как есть», то есть то, как и из каких систем складывается текущая схема автоматизации. А ведь нам нужно в этот зоопарк подселить ещё одну «зверушку» (назовём её «Торговая система Б»). Из этих соображений следует необходимость повнимательнее разобраться с архитектурой. А раз так, то выберем для этого подходящее средство визуализации.

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

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

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

Зелёная заливка иллюстрирует процесс выбора средства визуализации

Исходя из личных предпочтений остановимся на диаграмме коммуникации UML (Communication Diagram).

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

Диаграмма коммуникации в первом приближении

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

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

Диаграмма коммуникации, обогащённая новыми деталями и идеями

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

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

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

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

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

А что если.

Давайте теперь зададимся вопросом: что было бы, если бы мы при выборе средства визуализации пошли по иному пути? Так как границы применимости диаграмм последовательности мы уже рассмотрели чуть ранее, выберем другой вариант. Пусть это будет диаграмма вариантов использования UML (она же — диаграмма прецедентов, Use Case Diagram).

Для такого выбора у нас даже будет обоснование. Как отмечается в довольно популярной книге по UML, «исходной моделью, с которой начинается процесс моделирования в нотации UML, является модель или диаграмма вариантов использования» (Леоненков А.В. Самоучитель UML 2 СПб.: БХВ-Петербург, 2007).

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

Диаграмма вариантов использования, которая не можем помочь

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

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

Диаграмма вариантов использования, которая может ещё и запутать

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

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

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

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

Иллюстрация представления вариантов использования в границах одной суперсистемы

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

Иллюстрация границ разных систем внутри одной диаграммы

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

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

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

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

Заключение

Давайте кратко зафиксируем основные выводы.

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

Дополнительные материалы к статье, а также другие полезности доступны в моём Telegram-канале.

  • анализ и проектирование систем
  • системный анализ
  • uml
  • визуализация
  • вариант использования
  • диаграмма состояний
  • диаграммы
  • use case
  • диаграмма коммуникации

Saved searches

Use saved searches to filter your results more quickly

Cancel Create saved search

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

kolei / PiRIS Public

5_1_1_10_uml_use_case.md

Latest commit

History

218 lines (131 loc) · 39.9 KB

5_1_1_10_uml_use_case.md

File metadata and controls

218 lines (131 loc) · 39.9 KB

Диаграмма прецедентов (вариантов использования или 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 онлайн

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

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

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

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

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

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

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

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

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

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

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

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

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *