
2. Стандартные диаграммы языка моделирования (UML)
В своей основе PlantUML был создан для упрощения создания официальных диаграмм UML. Он разделяется на две основные категории: диаграммы структуры и диаграммы поведения.
Диаграммы структуры
Диаграммы классов и объектов
Моделируйте объектно-ориентированные структуры, иерархии классов, интерфейсы, атрибуты и отношения (наследование, агрегация, композиция) непосредственно на основе определений кода.

@startuml
title Система управления отелем
' Определить интерфейсы
interface IReservable {
+ makeReservation(customer: Customer, dates: DateRange): boolean
+ cancelReservation(reservationId: String): boolean
+ checkAvailability(date: Date): boolean
}
interface IPayable {
+ processPayment(amount: double): boolean
+ issueRefund(reservationId: String): boolean
+ getPaymentStatus(): String
}
' Определить абстрактный класс
abstract class Person {
- id: String
- name: String
- email: String
- phone: String
+ getId(): String
+ getName(): String
+ getContactInfo(): String
+ updateContactInfo(info: String): void
}
' Определить конкретные классы
class Customer {
- loyaltyPoints: int
- totalStays: int
- preferences: List
+ earnLoyaltyPoints(stayCost: double): void
+ redeemLoyaltyPoints(points: int): boolean
+ getLoyaltyTier(): String
+ addPreference(preference: String): void
}
class Room {
- roomNumber: String
- roomType: RoomType
- capacity: int
- pricePerNight: double
- amenities: List
- isAvailable: boolean
+ bookRoom(customer: Customer, dates: DateRange): boolean
+ releaseRoom(): void
+ getPrice(customer: Customer): double
+ addAmenity(amenity: String): void
+ getRoomStatus(): String
}
class Reservation {
- reservationId: String
- checkInDate: Date
- checkOutDate: Date
- totalPrice: double
- status: ReservationStatus
- specialRequests: String
+ calculateTotalPrice(): double
+ confirmReservation(): void
+ checkIn(): void
+ checkOut(): boolean
+ updateDates(newCheckIn: Date, newCheckOut: Date): boolean
+ getDuration(): int
}
' Перечисление
enum RoomType {
STANDARD
DELUXE
SUITE
PRESIDENTIAL
}
' Перечисление
enum ReservationStatus {
PENDING
CONFIRMED
CHECKED_IN
CHECKED_OUT
CANCELLED
}
' Отношения
' Реализация интерфейса (пунктирная линия с треугольником)
IReservable <|.. Reservation : implements
IPayable <|.. Reservation : implements
' Абстрактное наследование (сплошная линия с треугольником)
Person <|-- Customer : extends
' Композиция (сплошной ромб) - Номер является частью Бронирования
Reservation *-- "1..*" Room : contains
' Ассоциация (простая сплошная линия) с кратностью
Customer "1" -- "0..*" Reservation : makes
' Зависимость (пунктирная стрелка) - Клиент зависит от типа номера
Customer ..> RoomType : has loyalty tier based on
' Ассоциация с пользовательской меткой
Reservation "1" --o "1" Customer : booked by
' Реализация интерфейса абстрактным классом (опциональный дополнительный соединитель)
IReservable <|.. Room : implements
@enduml Диаграммы компонентов и развертывания
Отображайте программные компоненты, физические узлы, артефакты и среды развертывания для визуализации распределения программного обеспечения по аппаратному или облачному инфраструктурному обеспечению.
@startuml
title Диаграмма компонентов веб-приложения
package "Слой клиента" {
[Веб-браузер] as Browser
[Мобильное приложение] as Mobile
}
package "Сервер приложений" {
[API-шлюз] as Gateway
[Сервис пользователей] as UserService
[Сервис заказов] as OrderService
[Сервис платежей] as PaymentService
}
package "Слой базы данных" {
database "База данных пользователей" as UserDB
database "База данных заказов" as OrderDB
}
package "Сторонние сервисы" {
[API Stripe] as Stripe
}
' Соединения
Browser --> Gateway : HTTP / REST
Mobile --> Gateway : HTTP / REST
Gateway --> UserService : Внутренний REST
Gateway --> OrderService : Внутренний REST
UserService --> UserDB : Чтение / Запись
OrderService --> OrderDB : Чтение / Запись
OrderService --> PaymentService : Обработка платежа
PaymentService --> Stripe : HTTPS / API
@enduml 
@startuml
title Диаграмма развертывания - 3-уровневое веб-приложение
skinparam componentStyle rectangle
node "Клиентский рабочий стол" as clientNode {
node "Веб-браузер" as browser {
artifact "Фронтенд веб-приложения (HTML/JS)" as frontend
}
}
node "Сервер приложений" as appServerNode {
node "Сервлет-контейнер (Tomcat)" as tomcat {
artifact "Бэкенд API (файл WAR)" as appApi
}
}
node "Сервер базы данных" as databaseNode {
database "PostgreSQL" as postgres {
artifact "Схема базы данных приложения" as dbSchema
}
}
clientNode -- appServerNode : HTTPS (Порт 443)
appServerNode -- databaseNode : JDBC (Порт 5432)
@enduml 
Диаграммы поведения и взаимодействия
Диаграммы последовательности
Самый популярный тип диаграмм PlantUML. Отслеживайте пошаговое взаимодействие, синхронные/асинхронные вызовы API и потоки сообщений между акторами и системами во времени.
@startuml
title Поток аутентификации пользователя
actor "Пользователь" as user
participant "Веб-приложение" as app
participant "API авторизации" as auth
database "База данных пользователей" as db
user -> app : Ввести учетные данные
activate app
app -> auth : POST /api/v1/login
activate auth
auth -> db : Запрос пользователя по email
activate db
db --> auth : Вернуть запись пользователя и хеш
deactivate db
alt Верные учетные данные
auth -> auth : Проверить пароль и сгенерировать JWT
auth --> app : 200 OK (Токен и профиль)
app --> user : Перенаправить на панель управления
else Неверные учетные данные
auth --> app : 401 Unauthorized (Ошибка)
app --> user : Отобразить «Неверные учетные данные»
end
deactivate auth
deactivate app
@enduml 
Диаграммы вариантов использования
Определите границы системы, акторов, цели пользователей и функциональный объем.
@startuml
title Система онлайн-покупок - Диаграмма вариантов использования
направление слева направо
actor Покупатель
actor "Зарегистрированный покупатель" as RegCustomer
actor "Платежный шлюз" as PaymentSystem
Покупатель <|-- ЗарегистрированныйПокупатель rectangle "Система электронной коммерции" { usecase "Просмотр товаров" as UC_Browse usecase "Поиск товаров" as UC_Search usecase "Управление корзиной" as UC_Cart usecase "Оформление заказа" as UC_Checkout usecase "Применение купона" as UC_Coupon usecase "Обработка платежа" as UC_Payment usecase "Просмотр истории заказов" as UC_History } Покупатель --> UC_Browse
Покупатель --> UC_Search
Покупатель --> UC_Cart
Покупатель --> UC_Checkout
ЗарегистрированныйПокупатель --> UC_History
UC_Checkout .> UC_Payment : <>
UC_Checkout <.. UC_Coupon : <>
UC_Payment -- PaymentSystem
@enduml 
Диаграммы деятельности и состояний
Создавайте блок-схемы сложной бизнес-логики, алгоритмических потоков, переходов автоматов состояний и параллельных процессов.
@startuml
title Процесс выполнения заказа
|Покупатель|
start
:Оформить заказ;
:Предоставить платежные реквизиты;
|Система заказов|
if (Платеж действителен?) then (да)
:Зарезервировать товар;
' Разделение на параллельные процессы
fork
|Склад|
:Подобрать товары с полки;
:Упаковать товары в коробку;
fork again
|Бухгалтерия|
:Сгенерировать PDF-счет;
:Списать средства с платежного метода;
end fork
|Доставка|
:Прикрепить этикетку доставки;
:Передать курьеру;
|Покупатель|
:Получить посылку;
stop
else (нет)
|Система заказов|
:Отправить уведомление об ошибке платежа;
|Покупатель|
:Обновить платежный метод;
stop
endif
@enduml 
@startuml
title Жизненный цикл заказа в электронной коммерции
[*] --> Ожидание : Заказ оформлен
state Ожидание {
[*] --> ОжиданиеПлатежа
ОжиданиеПлатежа --> ПлатежНеУдался : Ошибка платежа
ПлатежНеУдался --> ОжиданиеПлатежа : Повторить платеж
}
Ожидание --> Обработка : Платеж авторизован
Ожидание --> Отменено : Пользователь отменяет заказ
state Обработка {
[*] --> Упаковка
Упаковка --> ГотовоКДоставке : Проверка качества пройдена
}
Обработка --> Отправлено : Передача перевозчику
Отправлено --> Доставлено : Доставка подтверждена
Отправлено --> Возвращено : Доставка не удалась / Отказано
Доставлено --> [*]
Отменено --> [*]
Возвращено --> [*]
@enduml 
Диаграммы временных интервалов
Детально отображайте точные переходы состояний и взаимодействия объектов в дискретные временные интервалы — идеально подходит для встраиваемых систем или проектирования аппаратного обеспечения в реальном времени.
@startuml
title Диаграмма временных интервалов передачи данных SPI
robust "Часы (SCLK)" as CLK
binary "Выбор чипа (CS)" as CS
binary "Вывод мастера (MOSI)" as MOSI
concise "Шина данных (MISO)" as MISO
@0
CS высокий
CLK низкий
MOSI низкий
MISO «Ожидание»
@1
CS низкий
MISO «Заголовок»
@2
CLK высокий
MOSI высокий
@3
CLK низкий
@4
CLK высокий
MOSI низкий
MISO «Данные»
@5
CLK низкий
@6
CS высокий
CLK низкий
MOSI низкий
MISO «Ожидание»
@enduml 
3. Архитектура высокого уровня и диаграммы предметной области
Помимо традиционной UML, PlantUML отлично справляется с представлением многоуровневых программных систем и архитектур данных с использованием специализированных расширений.
Диаграммы модели C4
Представляйте архитектуру программного обеспечения на различных уровнях абстракции — Контекст, Контейнер, Компонент и Код — делая дизайн системы понятным как для технических, так и для нетехнических заинтересованных сторон.
@startuml
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Context.puml
TITLE System Context Diagram for Internet Banking System
Person(customer, "Personal Banking Customer", "A customer of the bank, with personal bank accounts.")
System(banking_system, "Internet Banking System", "Allows customers to view information about their bank accounts, and make payments.")
System_Ext(mainframe, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.")
System_Ext(email_system, "E-mail System", "The internal Microsoft Exchange e-mail system.")
Rel(customer, banking_system, "Views account balances, and makes payments using")
Rel(banking_system, mainframe, "Gets account information from, and makes payments using")
Rel(banking_system, email_system, "Sends e-mail using")
Rel_Back(email_system, customer, "Sends e-mails to")
@enduml 
Диаграммы ArchiMate
Поддерживайте моделирование корпоративной архитектуры на уровнях бизнеса, приложений и технологий для отображения организационной стратегии на операционные системы.
@startuml
!include <archimate/Archimate>
title ArchiMate Sample - Online Bill Payment
Grouping(business, "Business Layer"){
Business_Process(payBillProcess, "Pay Bill Process")
Business_Object(bankAccount, "Customer Bank Account")
Business_Service(paymentService, "Bill Payment Business Service")
}
Grouping(application, "Application Layer"){
Application_Component(bankingApp, "Mobile Banking Application")
Application_Function(paymentProcessing, "Process Payment Logic")
Application_DataObject(transactionRecord, "Transaction Data Payload")
}
Grouping(technology, "Technology Layer"){
Technology_Artifact(jwtToken, "Encrypted Session Token")
Technology_Service(apiGateway, "API Gateway Service")
Technology_Service(dbService, "Core Database Service")
}
Rel_Flow_Right(payBillProcess, bankAccount, "")
Rel_Serving_Up(paymentService, payBillProcess, "")
Rel_Specialization_Up(paymentProcessing, paymentService, "")
Rel_Flow_Right(transactionRecord, paymentProcessing, "")
Rel_Assignment_Left(bankingApp, paymentProcessing, "")
Rel_Realization_Up(jwtToken, transactionRecord, "")
Rel_Serving_Up(apiGateway, paymentProcessing, "")
Rel_Serving_Up(dbService, apiGateway, "")
@enduml 
Диаграммы сущность-связь (ERD)
Создавайте чистые визуализации схем баз данных, включая стандартную нотацию «вороний глаз» и модели Chen ERD.
@startuml
title E-Commerce Database Schema (Crow's Foot)
' Hide circle icons for entities
hide circle
skinparam linetype ortho
entity "User" as user {
* user_id : INT <>
--
* email : VARCHAR(255)
* password_hash : VARCHAR(255)
* created_at : TIMESTAMP
}
entity "CustomerProfile" as profile {
* profile_id : INT <>
--
* user_id : INT <>
* first_name : VARCHAR(100)
* last_name : VARCHAR(100)
phone : VARCHAR(20)
}
entity "Order" as order {
* order_id : INT <>
--
* user_id : INT <>
* order_date : TIMESTAMP
* total_amount : DECIMAL(10,2)
* status : VARCHAR(50)
}
entity "OrderItem" as item {
* order_item_id : INT <>
--
* order_id : INT <>
* product_id : INT <>
* quantity : INT
* unit_price : DECIMAL(10,2)
}
entity "Product" as product {
* product_id : INT <>
--
* sku : VARCHAR(50)
* name : VARCHAR(150)
description : TEXT
* price : DECIMAL(10,2)
}
' Relationships
user ||--o| profile : "has"
user ||--o{ order : "places"
order ||--|{ item : "contains"
product ||--o{ item : "appears in"
@enduml 
Карты сетей и инфраструктуры
Без усилий визуализируйте топологии сетей, узлы серверов, облачные соединения и брандмауэры.
@startnwdiag
title Enterprise Network Topology
nwdiag {
network External_Internet {
address = "0.0.0.0/0"
user_client [address = "203.0.113.15", description = "Remote User"];
edge_firewall [address = "192.168.1.1", description = "Perimeter FW"];
}
network DMZ_Zone {
address = "192.168.1.0/24"
edge_firewall;
load_balancer [address = "192.168.1.10", description = "Nginx Load Balancer"];
mail_server [address = "192.168.1.25", description = "SMTP Server"];
internal_firewall [address = "192.168.1.254", description = "Internal FW"];
}
network Private_LAN {
address = "10.0.1.0/24"
internal_firewall;
app_server_01 [address = "10.0.1.50", description = "API Node 1"];
app_server_02 [address = "10.0.1.51", description = "API Node 2"];
db_master [address = "10.0.1.100", description = "PostgreSQL Primary"];
}
network Management_Subnet {
address = "10.0.99.0/24"
internal_firewall;
admin_bastion [address = "10.0.99.5", description = "SSH Bastion Host"];
monitoring_node [address = "10.0.99.20", description = "Prometheus Host"];
}
}
@endnwdiag 
4. Визуализация для планирования, управления и мозгового штурма
PlantUML не ограничивается проектированием программного обеспечения — это также мощный инструмент для управления проектами и командного мозгового штурма.
Диаграммы Ганта
Планируйте графики проектов, зависимости задач, вехи и распределение ресурсов с помощью чистого текстового разметочного языка.
gantt
title График выпуска программного продукта
dateFormat YYYY-MM-DD
axisFormat %b %d
section Планирование и проектирование
Сбор требований :a1, 2026-09-01, 10д
Проектирование архитектуры :a2, после a1, 10д
section Разработка
Разработка бэкенд API :b1, после a2, 15д
Разработка фронтенд UI :b2, после a2, 15д
section Тестирование и выпуск
Интеграционное тестирование :c1, после b1 b2, 8д
Аудит безопасности :c2, после c1, 5д
Выпуск в продакшен :milestone, m1, после c2, 0д 
Иерархическая структура работ (WBS)
Декомпозируйте сложные проекты на иерархические результаты и управляемые блоки задач.
@startwbs
title Иерархическая структура работ по редизайну сайта
* Проект редизайна сайта
** 1. Исследование и стратегия
*** 1.1 Интервью с заинтересованными сторонами
*** 1.2 Аудит конкурентов
*** 1.3 Утверждение объема и стратегии
** 2. Проектирование UX/UI
*** 2.1 Создание макетов
**** 2.1.1 Макеты для десктопа
**** 2.1.2 Макеты для мобильных устройств
*** 2.2 Система дизайна
**** 2.2.1 Библиотека компонентов
**** 2.2.2 Типографика и руководство по стилю
** 3. Техническая разработка
*** 3.1 Фронтенд
**** 3.1.1 Шаблоны страниц
**** 3.1.2 Интеграция API
*** 3.2 CMS и бэкенд
**** 3.2.1 Пользовательские типы записей
**** 3.2.2 Миграция базы данных
** 4. QA и запуск
*** 4.1 Кросс-браузерное тестирование
*** 4.2 Миграция контента
*** 4.3 Переключение DNS и запуск
@endwbs 
Интеллект-карты
Быстро фиксируйте структурированные идеи, таксономии функций и заметки по техническому исследованию во время командных сессий.
@startmindmap
title Карта функций платформы электронной коммерции
* Платформа электронной коммерции
** Управление учетными записями пользователей
*** Социальная аутентификация (Google, Apple)
*** Многофакторная аутентификация
** История заказов и отслеживание
** Каталог товаров и поиск
*** Фасетный поиск и фильтры
*** Синхронизация складских запасов
*** Отзывы и рейтинги товаров
** Оформление заказа и платежи
*** Платежные шлюзы (Stripe, PayPal)
*** Движок купонов и промоакций
** Быстрая оплата для гостей в один клик
** Поддержка клиентов
*** Помощник живого чата
*** Автоматизированный портал возвратов
@endmindmap 
5. Быстрое написание и рендеринг PlantUML: преимущество VPasCode
Хотя PlantUML обладает огромными возможностями, настройка локальных сред Java, зависимостей Graphviz и инструментов командной строки может создавать трудности. Использование специализированной веб-платформы инструмента PlantUMLполностью устраняет эти препятствия.
Visual Paradigm VPasCode — это единая платформа «диаграммы как код», созданная специально для оптимизации рабочих процессов преобразования текста в диаграммы. Благодаря недавним улучшениям, о которых мы рассказали в нашей Крупном обновлении VPasCode: мгновенная генерация и изменение диаграмм с помощью ИИтеперь она поддерживает встроенные возможности искусственного интеллекта прямо внутри редактора.
Ключевые преимущества VPasCode:
- Генерация и изменение диаграмм с помощью встроенного ИИ:Мгновенно создавайте полные диаграммы PlantUML, Mermaid или Graphviz, используя запросы на естественном языке (например, «Создайте диаграмму вариантов использования в PlantUML для системы банкомата») или попросите ИИ изменить существующий код в реальном времени.
- Онлайн-платформа без настройки:Мгновенно получите доступ к мощному редактору на vpascode.com без необходимости установки локальных компиляторов или плагинов. Узнайте больше в Обзор VPasCode.
- Автоматическое определение формата и предпросмотр в реальном времени:Вставьте свой скрипт, и VPasCode автоматически определит, является ли он PlantUML, Mermaid или Graphviz, мгновенно отображая обновления в реальном времени по мере ввода.
- Исправление ошибок кода с помощью ИИ:Если вы столкнулись с синтаксической ошибкой, просто нажмите«Исправить с помощью ИИ». VPasCode исправит код и предоставит сравнение (diff) в режиме «рядом с рядом» с понятными пояснениями, чтобы вы быстрее освоили синтаксис PlantUML.
- Нативный перевод диаграмм с помощью ИИ:Переводите подписи и примечания к диаграммам на несколько языков непосредственно в редакторе — идеально подходит для глобальных команд разработки.
- Гибкий экспорт и интеграция с документацией:Бесплатно экспортируйте изображения в формате PNG с высоким разрешением или масштабируемые векторные изображения SVG. Вы также можете напрямую отправлять диаграммы в Visual Paradigm OpenDocs, используя ихруководство по функции «диаграмма как код».
(Примечание: Расширенные функции генерации диаграмм с помощью ИИ, их модификации и исправления ошибок доступны в Visual Paradigm Online Deluxe Edition / Visual Paradigm Desktop Professional Edition+).
6. Быстрый старт: Пример рендеринга диаграммы последовательности в VPasCode
Чтобы увидеть, насколько легко использоватьбесплатный редактор UMLтакой как VPasCode, обратите внимание на этот базовый скрипт диаграммы последовательности PlantUML:
@startuml
autonumber
actor User
participant "VPasCode Editor" as Editor
participant "AI Engine" as AI
User -> Editor: Вставить код PlantUML
Editor -> Editor: Автоматическое определение формата и живой рендеринг
alt Обнаружена синтаксическая ошибка
User -> Editor: Нажать «Исправить с помощью ИИ»
Editor -> AI: Отправить нерабочий код
AI --> Editor: Вернуть исправленный код и diff
end
Editor --> User: Отобразить чистую векторную диаграмму (SVG/PNG)
@enduml 
Просто скопируйте приведенный выше код, откройте VPasCode и вставьте его в редактор, чтобы мгновенно увидеть живой рендеринг и поэкспериментировать с автоматическими улучшениями на базе ИИ.
7. Заключение и следующие шаги
PlantUML позволяет командам поддерживать четкую, версионируемую и согласованную визуальную документацию в области UML, архитектуры, схем баз данных и диаграмм управления проектами. В сочетании с современныминструментом PlantUMLтаким как VPasCode, техническое письмо становится быстрее, безошибочным и обеспечивает бесшовную совместную работу.
Готовы оптимизировать процесс создания диаграмм? Начните бесплатно редактировать и рендерить диаграммы PlantUML уже сегодня наvpascode.com.