Ответ
UML (Unified Modeling Language) — это стандартизированный язык для визуального моделирования программных систем. Диаграммы UML делятся на две основные категории: структурные и поведенческие.
1. Структурные диаграммы (Structural Diagrams)
Они показывают статическую структуру системы и её частей.
- Диаграмма классов (Class Diagram): Самая распространенная. Описывает классы, их атрибуты, методы и отношения между ними (наследование, ассоциация, композиция).
- Диаграмма компонентов (Component Diagram): Показывает, как система разделена на компоненты (модули, библиотеки) и зависимости между ними.
- Диаграмма развёртывания (Deployment Diagram): Иллюстрирует физическое размещение артефактов программного обеспечения на аппаратных узлах (серверах).
- Диаграмма объектов (Object Diagram): Показывает экземпляры классов (объекты) и их связи в определённый момент времени. Является "снимком" системы.
2. Поведенческие диаграммы (Behavioral Diagrams)
Они описывают динамическое поведение системы и взаимодействие её элементов.
- Диаграмма вариантов использования (Use Case Diagram): Описывает функциональность системы с точки зрения внешних акторов (пользователей, других систем). Отвечает на вопрос "Что система делает?".
- Диаграмма последовательности (Sequence Diagram): Показывает взаимодействие объектов в хронологическом порядке. Идеальна для визуализации логики выполнения конкретного сценария.
- Диаграмма состояний (State Machine Diagram): Моделирует жизненный цикл объекта, показывая, как он переходит из одного состояния в другое в ответ на события.
- Диаграмма деятельности (Activity Diagram): Изображает потоки работ и операций в системе. Похожа на блок-схему, но с поддержкой параллельных процессов.
Инструменты для создания
- Текстовые: PlantUML, Mermaid. Позволяют описывать диаграммы кодом, что удобно для контроля версий (Git).
- Визуальные: draw.io (diagrams.net), Lucidchart, StarUML.
Пример на PlantUML (Диаграмма классов):
@startuml
' Определение базового класса
class User {
+id: int
+username: str
+login(): bool
}
' Определение дочернего класса
class Admin {
+permissions: list
+banUser(user: User): void
}
' Отношение наследования
User <|-- Admin
@enduml