Д иаграмма вариантов использования - это визуальное представление, используемое в программной инженерии для отображения взаимодействий между
участниками системы и
самой системой. Она отражает динамическое поведение системы, иллюстрируя ее
сценарии использования и роли, которые с ними взаимодействуют. Эти диаграммы необходимы для уточнения
функциональных требований к системе и понимания того, как пользователи будут взаимодействовать с системой. Предоставляя высокоуровневое представление, диаграммы вариантов использования помогают заинтересованным сторонам понять функциональность системы и ее потенциальную ценность.
PlantUML предлагает уникальный подход к созданию диаграмм вариантов использования за счет использования текстового языка. Одним из основных преимуществ использования PlantUML является его
простота и эффективность. Вместо того чтобы вручную рисовать фигуры и связи, пользователи могут определять свои диаграммы с помощью интуитивно понятных и лаконичных текстовых описаний. Это не только ускоряет процесс создания диаграмм, но и обеспечивает
последовательность и точность. Возможность интеграции с различными платформами документирования и широкий спектр поддерживаемых выходных форматов делают PlantUML универсальным инструментом как для разработчиков, так и для тех, кто не занимается разработкой. Наконец, благодаря
открытому исходному коду PlantUML имеет
сильное сообщество, которое постоянно вносит свой вклад в его совершенствование и предлагает множество ресурсов для пользователей всех уровней.
Прецеденты заключаются в две скобки (потому что две скобки выглядят как овал).
Вы можете использовать
usecase
для создания прецедента.
Также, Вы можете создать псевдоним, используя ключевое слово
as
. Этот псевдоним позже можно будет использовать для определения связей между элементами.
🎉 Copied!
|
@startuml
(Один прецедент)
(Другой прецедент) as (UC2)
usecase Прецедент3
usecase (Последний\nпрецедент) as UC4
@enduml
|
Примечание переводчика:
я не нашел одного устоявшегося варианта перевода для этого термина. Встречаются варианты: Актор
, Роль
или Участник
. Далее по тексту буду использовать слово Актор
.
Определить актора можно просто указав его название между двумя вертикальными двоеточиями.
Другой вариант определения актора - это использование ключевого слова
actor
.
Также, при определении актора можно указать для него короткий псевдоним, который затем можно будет использовать при определении связей между элементами. Это делается при помощи ключевого слова
as
.
Пример ниже показывает разные варианты определения акторов.
🎉 Copied!
|
@startuml
:Первый Actor:
:Второй\nactor: as Участник2
actor Участник3
actor :Последний actor: as Участник4
@enduml
|
Вы можете изменить стиль стиль отображения актора. Доступны следующие варианты:
- Человечек из палочек (по умолчанию);
- В виде бюста, команда
skinparam actorStyle awesome
;
- Контур человечка, команда
skinparam actorStyle hollow
.
Человечек из палочек (по умолчанию)
🎉 Copied!
|
@startuml
:Пользователь: --> (Use)
"Главный админ" as Admin
"Использование приложения" as (Use)
Admin --> (Управление приложением)
@enduml
|
В виде бюста
🎉 Copied!
|
@startuml
skinparam actorStyle awesome
:Пользователь: --> (Use)
"Главный админ" as Admin
"Использование приложения" as (Use)
Admin --> (Управление приложением)
@enduml
|
[Ссылка на QA-10493]
Контур человечка
🎉 Copied!
|
@startuml
skinparam actorStyle Hollow
:Пользователь: --> (Use)
"Главный админ" as Admin
"Использование приложения" as (Use)
Admin --> (Управление приложением)
@enduml
|
[ссылка на PR#396]
Если Вам нужно расположить описание в несколько строк, Вы можете использовать кавычки.
Также Вы можете использовать следующие разделители:
--
,
..
,
==
и
__
. Внутрь этих разделителей можно вставлять заголовки.
🎉 Copied!
|
@startuml
usecase UC1 as "Вы можете использовать
несколько строчек для описания вашего прецедента.
Также, Вы можете использовать разделители:
--
Можно использовть несколько разных разделителей одновременно.
==
И еще Вы можете добавлять в разделители заголовки:
..ЗАКЛЮЧЕНИЕ..
Это позволяет делать очень большие и
развернутые описания."
@enduml
|
Чтобы сгруппировать акторов или прецеденты, можно использовать пакеты.
🎉 Copied!
|
@startuml
actor Гость as g
package Специалисты {
actor "Шеф повар" as c
actor "Ресторанный критик" as fc
}
package Ресторан {
usecase "Есть" as UC1
usecase "Платить" as UC2
usecase "Пить" as UC3
usecase "Составлять отзыв" as UC4
}
fc --> UC1
fc --> UC2
fc --> UC3
fc --> UC4
g --> UC1
g --> UC2
g --> UC3
@enduml
|
Для изменения венешнего вида пакета можно воспользоваться ключевым словом
rectangle
используя ег овместо ключевого слова
package
.
🎉 Copied!
|
@startuml
left to right direction
actor "Ресторанный критик" as fc
rectangle Ресторан {
usecase "Есть" as UC1
usecase "Платить" as UC2
usecase "Пить" as UC3
usecase "Составлять отзыв" as UC4
}
fc --> UC1
fc --> UC2
fc --> UC3
fc --> UC4
@enduml
|
Для создания связей между акторами и прецедентами используется стрелка
-->
.
Чем больше знаков тире
-
в стрелке, тем она длиннее.
Вы можете добавить заметку на стрелку используя символ
:
после определения стрелки.
В этом примере можно заметить, что
Пользователь не определён заранее и по умолчанию определяется как актор.
🎉 Copied!
|
@startuml
Пользователь -> (Старт)
Пользователь --> (Использование приложения) : Небольшая заметка
:Главный админ: ---> (Использование приложения) : Еще одна\nнебольшая\nзаметка
@enduml
|
Если актор или прецедент являются обобщением других актора или прецедента, Вы можете использовать символ
<|--
.
🎉 Copied!
|
@startuml
:Галавный админ: as Admin
(Работа с приложением) as (Use)
Пользователь <|-- Admin
(Работа) <|-- (Use)
@enduml
|
Вы можете использовать ключевые слова
note left of
,
note right of
,
note top of
,
note bottom of
чтобы создать и расположить заметку относительно какого-либо элемента.
Заметка так же может быть создана с помощью ключевого слова
note
, а затем прикреплена к какому-либо элементу при помощи символа
..
.
🎉 Copied!
|
@startuml
:Главный админ: as Admin
(Работа с приложением) as (Use)
Пользователь -> (Работа)
Пользователь --> (Use)
Admin ---> (Use)
note right of Admin : Это пример заметки.
note right of (Use)
Заметки могут занимать
несколько строчек
end note
note "Эта заметка будет указывать\nсразу на несколько элементов." as N2
(Работа) .. N2
N2 .. (Use)
@enduml
|
Вы можете добавить названия шаблонов когда определяете акторов или прецеденты используя символы
<<
и
>>
.
🎉 Copied!
|
@startuml
Пользователь << Человек >>
:Основная база данных: as MySql << Приложение >>
(Start) << One Shot >>
(Работа с приложением) as (Use) << Основное действие >>
Пользователь -> (Start)
Пользователь --> (Use)
MySql --> (Use)
@enduml
|
По умолчанию, связи между элементами задаются при помощи двух тире
--
для сплошных линий или при помощи двух точек
..
для пунктирных линий и ориентированны вертикально. Можно указать, что связь необходимо изобразить горизонтально, для этого необходимо использовать одиночное тире
-
для сплошной линии или одну точку
.
для штриховой линии.
🎉 Copied!
|
@startuml
:Пользователь: --> (Прецедент 1)
:Пользователь: -> (Прецедент 2)
@enduml
|
Также можно изменить направление связи, переместив символ окончания стрелки на другую сторону:
🎉 Copied!
|
@startuml
(Прецедент 1) <.. :Пользователь:
(Прецедент 2) <. :Пользователь:
@enduml
|
Можно управлять направлением связи добавляя ключевые слова
left
,
right
,
up
или
down
внутрь стрелки:
🎉 Copied!
|
@startuml
:Пользователь: -left-> (Лево)
:Пользователь: -right-> (Право)
:Пользователь: -up-> (Верх)
:Пользователь: -down-> (Низ)
@enduml
|
Можно использовать более короткий синтаксис используя только первый символ указанных выше ключевых слов, например
-d-
или
-do-
вместо полного слова
-down-
.
Правда злоупотреблять такой короткой записью не стоит, так как
GraphViz обычно дает более хороший результат, когда такая короткая запись НЕ используется.
И наконец, можно поменять все направления местами используя ключевое слово
left to right direction
. Для этого можно сравнить предыдущую диаграмму с диаграммой, представленной ниже:
🎉 Copied!
|
@startuml
left to right direction
:Пользователь: -left-> (Лево)
:Пользователь: -right-> (Право)
:Пользователь: -up-> (Верх)
:Пользователь: -down-> (Низ)
@enduml
|
Ключевое слово
newpage
используется для разделения диаграмм на несколько страниц или изображений.
🎉 Copied!
|
@startuml
:Актор1: --> (Прецедент1)
newpage
:Актор2: --> (Прецедент2)
@enduml
|
Общее поведение по умолчанию - построение диаграмм
сверху вниз.
🎉 Copied!
|
@startuml
'default
top to bottom direction
Актор1--> (Прецедент 1)
Актор2--> (Прецедент 2)
@enduml
|
Вы можете изменить направление на
слева направо используя команду
left to right direction
. Часто результат с таким направлением выглядит лучше.
🎉 Copied!
|
@startuml
left to right direction
Актор1--> (Прецедент 1)
Актор2--> (Прецедент 2)
@enduml
|
_See also 'Change diagram orientation' on [Deployment diagram](deployment-diagram) page._
Вы можете использовать команду
skinparam
для изменения шрифтов и цветов диаграммы.
Вы можете использовать данную команду :
Вы можете задать цвет или шрифт для шаблонов, в которые объединены акторы или прецеденты.
🎉 Copied!
|
@startuml
skinparam handwritten true
skinparam usecase {
BackgroundColor DarkSeaGreen
BorderColor DarkSlateGray
BackgroundColor<< Работа >> YellowGreen
BorderColor<< Работа >> YellowGreen
ArrowColor Olive
ActorBorderColor black
ActorFontName Courier
ActorBackgroundColor<< Человек >> Gold
}
Пользователь << Человек >>
:Основная база данных: as MySql << Приложение >>
(Start) << One Shot >>
(Работа с приложением) as (Use) << Работа >>
Пользователь -> (Start)
Пользователь --> (Use)
MySql --> (Use)
@enduml
|
🎉 Copied!
|
@startuml
left to right direction
skinparam packageStyle rectangle
actor Заказчик
actor Менеджер
rectangle Заказ {
Заказчик -- (заказ)
(заказ) .> (оплата) : включает
(консультация) .> (заказ) : дополняет
(заказ) -- Менеджер
}
@enduml
|
Вы можете добавить символ
/
для того, чтобы создать Бизнес прецеденты или акторов.
Бизнес прецедент
🎉 Copied!
|
@startuml
(Один прецедент)/
(Другой прецедент)/ as (UC2)
usecase/ Пр3
usecase/ (Последний\nпрецедент) as UC4
@enduml
|
Бизнес актор
🎉 Copied!
|
@startuml
:Один Участник:/
:Другой\nучастник:/ as Man2
actor/ Участник
actor/ :Последний участник: as Person1
@enduml
|
[Ref. QA-12179]
Вы можете изменить
цвет или стиль индивидуально для каждой стрелочки используя следующий встраиваемый синтаксис:
#color;line.[bold|dashed|dotted];text:color
где:
#
- начало режима конфигурирования,
color
- цвет стрелки,
;
- разделитель между конфигурационными параметрами,
line.type
- тип линии. type
может принимать значения: bold
- жирная, dashed
- штриховая, dotted
- пунктирная,
text:color
- цвет текста заметки на линии.
🎉 Copied!
|
@startuml
actor foo
foo --> (bar) : обычная
foo --> (bar1) #line:red;line.bold;text:red : красная, жирный
foo --> (bar2) #green;line.dashed;text:green : зеленая, штриховой
foo --> (bar3) #blue;line.dotted;text:blue : синяя, пунктирный
@enduml
|
[Ref. QA-3770 and QA-3816]
[See similar feature on deployment-diagram or class diagram]
Вы можете изменить
цвет или стиль индивидуально для каждого элемента используя следующий встраиваемый синтаксис:
#[color|back:color];line:color;line.[bold|dashed|dotted];text:color
где:
#
- начало режима конфигурирования,
color
или back:color
- цвет фона элемента,
;
- разделитель между конфигурационными параметрами,
line.color
- цвет контура элемента,
line.type
- тип линии. type
может принимать значения: bold
- жирная, dashed
- штрихоавя, dotted
- пунктирная,
text:color
- цвет текста элемента.
🎉 Copied!
|
@startuml
actor a
actor b #pink;line:red;line.bold;text:red
usecase c #palegreen;line:green;line.dashed;text:green
usecase d #aliceblue;line:blue;line.dotted;text:blue
@enduml
|
[Ref. QA-5340 and adapted from QA-6852]
Simple example
🎉 Copied!
|
@startuml
allowmixing
actor Actor
usecase Usecase
json JSON {
"fruit":"Apple",
"size":"Large",
"color": ["Red", "Green"]
}
@enduml
|
[Ref. QA-15481]
For another example, see on
JSON page.