Перейти к основному содержимому

UML диаграммы

Unified Modeling Language — язык моделирования для визуализации структуры и поведения системы.

Типы UML диаграмм

Структурные (Static)

Показывают статическую структуру системы:

  • Class Diagram (диаграмма классов)
  • Component Diagram (диаграмма компонентов)
  • Deployment Diagram (диаграмма развертывания)
  • Object Diagram (диаграмма объектов)
  • Package Diagram (диаграмма пакетов)

Поведенческие (Dynamic)

Показывают динамическое поведение:

  • Use Case Diagram (диаграмма вариантов использования)
  • Sequence Diagram (диаграмма последовательности)
  • Activity Diagram (диаграмма деятельности)
  • State Machine Diagram (диаграмма состояний)
  • Communication Diagram (диаграмма коммуникации)

Class Diagram (Диаграмма классов)

Показывает классы системы и связи между ними.

Видимость (Visibility)

  • + public — доступен всем
  • - private — доступен только внутри класса
  • # protected — доступен классу и наследникам
  • ~ package — доступен в пакете

Типы связей

Association (Ассоциация)

Обычная связь между классами.

User -- Order

Aggregation (Агрегация)

"Имеет" — слабая связь, части могут существовать отдельно.

Department o-- Employee

Сотрудники могут существовать без отдела.

Composition (Композиция)

"Состоит из" — сильная связь, части не существуют без целого.

House *-- Room

Комнаты не существуют без дома.

Inheritance (Наследование)

"Является" — наследование свойств и методов.

Animal <|-- Dog
Animal <|-- Cat

Dependency (Зависимость)

Один класс использует другой.

OrderService ..> EmailService

Множественность (Multiplicity)

  • 1 — ровно один
  • 0..1 — ноль или один
  • * или 0..* — ноль или больше
  • 1..* — один или больше
  • 2..5 — от 2 до 5

Activity Diagram (Диаграмма деятельности)

Показывает поток действий (workflow).

Элементы

  • Start — начало процесса
  • Action — действие
  • Decision — условие (if/else)
  • Fork/Join — параллельные действия
  • End — конец процесса

Когда использовать

  • Моделирование бизнес-процессов
  • Описание алгоритмов
  • Workflow системы
  • Процессы обработки данных

State Machine Diagram (Диаграмма состояний)

Показывает состояния объекта и переходы между ними.

Элементы

  • State — состояние объекта
  • Transition — переход между состояниями
  • Event — событие, вызывающее переход
  • Initial state — начальное состояние
  • Final state — конечное состояние

Пример: Заказ

Состояния: Draft, Pending, Approved, InProgress, Completed, Cancelled

События:
- submit: Draft → Pending
- approve: Pending → Approved
- start: Approved → InProgress
- complete: InProgress → Completed
- cancel: любое → Cancelled

Когда использовать

  • Жизненный цикл объектов (заказ, задача, документ)
  • Workflow с четкими состояниями
  • Конечные автоматы (FSM)

Component Diagram (Диаграмма компонентов)

Показывает архитектуру системы на уровне компонентов.

Когда использовать

  • Проектирование архитектуры
  • Документирование микросервисов
  • Показ зависимостей между модулями

Deployment Diagram (Диаграмма развертывания)

Показывает физическое размещение компонентов.

Когда использовать

  • Планирование инфраструктуры
  • Документирование deployment
  • Показ физической архитектуры

Object Diagram (Диаграмма объектов)

Показывает конкретные экземпляры объектов в определенный момент времени.

Когда использовать

  • Примеры данных для документации
  • Тестовые сценарии
  • Объяснение сложных связей

Package Diagram (Диаграмма пакетов)

Показывает организацию кода в пакеты/модули.

Когда использовать

  • Структура проекта
  • Модульная архитектура
  • Зависимости между пакетами

Timing Diagram (Диаграмма времени)

Показывает изменение состояний во времени.

Когда использовать

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

Best Practices

1. Не перегружай диаграммы

  • Одна диаграмма = одна идея
  • Максимум 7-10 элементов
  • Разбивай сложные диаграммы на несколько простых

2. Используй правильный уровень детализации

  • High-level для презентаций
  • Detailed для разработчиков

3. Поддерживай актуальность

  • Обновляй диаграммы при изменении кода
  • Храни в Git вместе с кодом

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

  • Те же имена что и в коде
  • Единый стиль именования

5. Добавляй легенду

  • Объясняй нестандартные обозначения
  • Указывай версию и дату

Инструменты

Online

  • PlantUML — текстовое описание диаграмм
  • Draw.io — визуальный редактор
  • Lucidchart — профессиональный инструмент
  • Miro — для коллаборации

Desktop

  • StarUML — полнофункциональный UML редактор
  • Visual Paradigm — enterprise решение
  • ArgoUML — open-source
  • Enterprise Architect — для больших проектов

IDE плагины

  • PlantUML Integration — для IntelliJ IDEA
  • UML Designer — для Eclipse
  • Draw.io Integration — для VS Code

PlantUML синтаксис

Class Diagram

Sequence Diagram

Activity Diagram

Когда какую диаграмму использовать

ЗадачаДиаграмма
Показать функции системыUse Case
Показать структуру данныхClass
Показать взаимодействиеSequence
Показать бизнес-процессActivity
Показать жизненный циклState Machine
Показать архитектуруComponent
Показать инфраструктуруDeployment

Полезные ресурсы