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

Структурные диаграммы
1. Диаграмма классов
Показывает классы системы, их данные и операции, а также отношения, такие как ассоциация, наследование и композиция. Используйте её для обсуждения предметных моделей или объектно-ориентированного проектирования.

@startuml
class Customer {
+id: String
+email: String
+placeOrder(): Order
}
class Order {
+number: String
+status: OrderStatus
+total(): Money
}
class OrderLine {
+quantity: int
+unitPrice: Money
}
class Product {
+sku: String
+name: String
}
Customer "1" -- "0..*" Order : places
Order "1" *-- "1..*" OrderLine : contains
OrderLine "*" --> "1" Product : refers to
@enduml
Прочитайте: один клиент может разместить много заказов; заказ содержит одну или более строк; каждая строка ссылается на продукт. Заполненный ромб указывает на композицию: заказ владеет своими строками.
2. Диаграмма объектов
Показывает конкретные экземпляры и связи в определённый момент времени. Полезно для иллюстрации примеров данных или объяснения модели классов с помощью конкретного сценария. В PlantUML используйте нотацию объектов.

@startuml
object "alice:Customer" as alice {
id = C104
email = [email protected]
}
object "order:Order" as order {
number = O9001
status = PAID
}
object "line:OrderLine" as line {
quantity = 2
unitPrice = 19.99
}
object "mug:Product" as mug {
sku = MUG-01
name = Travel mug
}
alice -- order
order *-- line
line --> mug
@enduml
3. Диаграмма компонентов
Показывает развертываемые или заменяемые части программного обеспечения и их зависимости. Используйте её для коммуникации архитектуры приложения и границ интеграции.

@startuml
component "Web Store" as web
component "Order Service" as orders
component "Payment Adapter" as payments
database "Order DB" as db
cloud "Payment Provider" as provider
web --> orders : REST
orders --> db : SQL
orders --> payments : authorize
payments --> provider : HTTPS
@enduml
4. Диаграмма композитной структуры
Показывает внутренние части классификатора — например, компонента или класса — и то, как эти части соединяются через порты. Полезно, когда внутреннее взаимодействие важнее, чем архитектура окружающей системы.
PlantUML не предоставляет универсально поддерживаемого специального синтаксиса для композитной структуры. Этот набросок в стиле диаграммы классов передаёт части и связи:

@startuml
allowmixing
skinparam componentStyle rectangle
class Car {
}
package "Car" {
component "engine : Engine" as engine {
portout p1
}
component "transmission : Transmission" as trans {
portin p2
portout p3
}
component "wheel : Wheel [4]" as wheels {
portin p4
}
p1 -- p2 : drives
p3 -- p4 : power
}
@enduml Рассматривайте это как структурный набросок; он не отображает формальные порты UML или семантику соединителей.
5. Диаграмма развертывания
Отображает программные артефакты или сервисы на аппаратных узлах и средах выполнения. Используйте её, чтобы объяснить, где выполняется программное обеспечение и как взаимодействуют узлы времени выполнения.

@startuml
node "Устройство клиента" as client {
artifact "Браузер"
}
node "Облако" {
node "Хост приложения" as appHost {
artifact "API магазина"
}
database "База данных заказов" as db
}
cloud "Внешний поставщик платежей" as pay
client --> appHost : HTTPS
appHost --> db : SQL
appHost --> pay : HTTPS
@enduml
6. Диаграмма пакетов
Группирует элементы модели в пространства имён или слои и показывает зависимости между этими группами. Используйте её, чтобы объяснить организацию кода и архитектурное направление.

@startuml
package "store.web" {
class CheckoutController
}
package "store.application" {
class PlaceOrder
}
package "store.domain" {
class Order
class Product
}
package "store.persistence" {
class OrderRepository
}
CheckoutController ..> PlaceOrder
PlaceOrder ..> Order
PlaceOrder ..> OrderRepository
@enduml
7. Диаграмма профиля
Определяет расширение UML, специфичное для предметной области, используя стереотипы, помеченные значения и ограничения. Используйте её, когда проекту требуется согласованный словарь моделирования, выходящий за рамки стандартного UML.
PlantUML может отображать концепции профиля в виде наброска в стиле UML, но это не специализированный рендерер диаграмм профиля.

@startuml
class "«профиль» StoreProfile" as Profile
class "«стереотип» «Сервис»" as Service
class "«стереотип» «Репозиторий»" as Repository
class "«метакласс» Компонент" as Component
Profile ..> Service : определяет
Profile ..> Repository : определяет
Service ..> Component : расширяет
Repository ..> Component : расширяет
note right of Service
помеченное значение:
владелец: String
end note
@enduml
Поведенческие диаграммы
8. Диаграмма вариантов использования
Показывает внешних акторов и цели системы, с которыми они взаимодействуют. Используйте её для определения границ и фиксации функциональных требований на высоком уровне.

@startuml
направление слева направо
актор Клиент
актор "Платежный провайдер" как Провайдер
прямоугольник "Онлайн-магазин" {
кейс использования "Просмотр товаров" как Просмотр
кейс использования "Оформление заказа" как Оформление
кейс использования "Оплата заказа" как Оплата
кейс использования "Отслеживание заказа" как Отслеживание
}
Клиент --> Просмотр
Клиент --> Оформление
Клиент --> Отслеживание
Провайдер --> Оплата
Оформление ..> Оплата : <<включить>>
@enduml
9. Диаграмма деятельности
Моделирует рабочий процесс: действия, решения, параллельные пути и передачи. Используйте её для бизнес-процессов, операционных процедур или потока управления алгоритма.

@startuml
начало
:Выбрать товары;
:Ввести данные для доставки;
:Рассчитать итоговую сумму;
если (Товары в наличии?) то (да)
:Авторизовать оплату;
если (Оплата одобрена?) то (да)
:Создать заказ;
:Отправить подтверждение;
иначе (нет)
:Показать ошибку оплаты;
endif
иначе (нет)
:Показать отсутствующие товары;
endif
конец
@enduml
10. Диаграмма автомата состояний
Описывает состояния, которые может занимать сущность, и события или условия, вызывающие переходы. Используйте её, когда поведение объекта зависит от его текущего состояния.

@startuml
[*] --> Черновик
Черновик --> ОжиданиеОплаты : submit
ОжиданиеОплаты --> Оплачено : payment approved
ОжиданиеОплаты --> Отменено : payment declined
ОжиданиеОплаты --> Отменено : customer cancels
Оплачено --> Отгружено : dispatch
Отгружено --> Доставлено : delivery confirmed
Отменено --> [*]
Доставлено --> [*]
@enduml
11. Диаграмма последовательности
Показывает сообщения, обмениваемые между участниками в хронологическом порядке. Используйте её для описания сценария, потока вызовов API или взаимодействия между сервисами.

@startuml
актор Клиент
участник "Веб-магазин" как Web
участник "Сервис заказов" как Orders
участник "Сервис оплаты" как Payments
Клиент -> Web : submit checkout
Web -> Orders : create order
Orders -> Payments : authorize payment
Payments --> Orders : approved
Orders --> Web : order confirmation
Web --> Customer : show confirmation
@enduml
12. Диаграмма коммуникации
Подчеркивает, какие объекты взаимодействуют и связи между ними; нумерация сообщений показывает порядок взаимодействий. Используйте её, когда сеть взаимодействующих участников важнее временной шкалы.
В стандартном наборе UML PlantUML нет отдельного рендерера для диаграмм коммуникации. Этот набросок с объектами и связями помечает сообщения номерами последовательности:

@startuml
объект Клиент
объект WebStore
объект OrderService
объект PaymentService
Клиент --> WebStore : 1: checkout()
WebStore --> OrderService : 1.1: createOrder()
OrderService --> PaymentService : 1.2: authorize()
PaymentService --> OrderService : 1.3: approved
OrderService --> WebStore : 1.4: confirmation
@enduml
13. Диаграмма обзора взаимодействий
Предоставляет обзорный вид потока управления взаимодействиями на высоком уровне, объединяя поток в стиле диаграммы деятельности со ссылками на сценарии взаимодействий. Используйте её, чтобы показать, как несколько сценариев уровня последовательности вписываются в более крупный процесс.
В этом примере PlantUML в качестве обзора используется диаграмма деятельности, где имена сценариев заменяют ссылки на взаимодействия:

@startuml
skinparam conditionStyle InsideDiamond
title Диаграмма обзора взаимодействия: Система обработки заказов
start
:Клиент оформляет заказ;
if (Товар есть в наличии?) then (да)
partition "sd Последовательность оформления заказа" {
:Авторизовать оплату;
:Списать со склада;
}
else (нет)
partition "sd Процесс отложенного заказа" {
:Уведомить клиента;
:Сформировать запрос поставщику;
}
endif
fork
partition "sd Последовательность отгрузки" {
:Упаковать заказ;
:Отправить по адресу;
}
fork again
partition "sd Последовательность выставления счетов" {
:Сформировать счёт;
:Отправить электронное письмо с подтверждением;
}
end fork
:Закрыть заказ;
stop
@enduml Для детального отображения обмена сообщениями внутри каждого сценария создайте отдельную диаграмму последовательности.
14. Диаграмма временных интервалов
Показывает изменения состояния или значений относительно временной оси. Используйте её для моделирования чувствительного ко времени поведения, протоколов, взаимодействия с оборудованием или требований, включающих длительности и сроки.

@startuml
robust "Заказ" as Order
concise "Оплата" as Payment
@0
Заказ: Черновик
Оплата: В ожидании
@5
Заказ: На рассмотрении
Оплата: В обработке
@10
Оплата: Одобрена
@12
Заказ: Подтверждён
@enduml
Выбор типа диаграммы
Начните с вопроса, на который должна отвечать диаграмма:
-
Что находится в системе?Класс, объект, компонент, составная структура, пакет, профиль или развёртывание.
-
Что делает система?Использование, деятельность или автомат состояний.
-
Как участники взаимодействуют?Последовательность, коммуникация, обзор взаимодействия или временные интервалы.
Держите каждую диаграмму сфокусированной на одной цели, используйте согласованные названия на всех диаграммах и включайте только достаточный уровень детализации для аудитории и принимаемого решения. Примеры кода PlantUML являются отправной точкой: проверьте поддерживаемый синтаксис вашего рендерера, особенно для специализированных типов диаграмм.
Эта статья также доступна на Deutsch, English, Español, فارسی, Français, Bahasa Indonesia, 日本語, Polski, Portuguese, Việt Nam, 简体中文 and 繁體中文












