← Назад к вопросам
Из чего состоит диаграмма последовательности?
2.0 Middle🔥 61 комментариев
#Нотации и диаграммы
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI28 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Диаграмма последовательности (Sequence Diagram)
Диаграмма последовательности — это один из ключевых UML диаграмм, который показывает взаимодействие между объектами системы во времени. Она отображает, в каком порядке объекты обмениваются сообщениями.
Основные компоненты диаграммы последовательности
1. Объекты (Actors/Objects)
- Представлены в виде прямоугольников в верхней части диаграммы
- Содержат название объекта/роли: "ИмяОбъекта : ТипОбъекта"
- Примеры:
- User : Пользователь
- PaymentService : Сервис оплаты
- Database : База данных
- ExternalAPI : Внешний API
- Два типа: Actor (внешние пользователи, изображаются фигуркой) и Object (объекты системы, прямоугольники)
2. Линии жизни (Lifelines)
- Вертикальные пунктирные линии, спускающиеся вниз от каждого объекта
- Показывают временную продолжительность существования объекта на диаграмме
- Если линия жизни заканчивается крестиком (X), объект уничтожен
- Помогает понять, как долго объект активен в процессе
3. Сообщения (Messages)
- Стрелки между линиями жизни, которые показывают вызовы методов и взаимодействие
- Типы сообщений:
- Синхронное сообщение (полная стрелка →): отправитель ждёт ответ
- Пример: User → PaymentService.processPayment()
- Асинхронное сообщение (открытая стрелка →): отправитель не ждёт ответа
- Пример: PaymentService → NotificationService.sendEmail()
- Возвращаемое сообщение (пунктирная стрелка ←): возврат значения
- Пример: PaymentService ← Database.checkBalance() [success]
- Самовызов (стрелка, начинающаяся и заканчивающаяся на одной объекте): рекурсивный вызов
4. Активационные ящики (Activation Boxes)
- Тонкие белые прямоугольники на линии жизни
- Показывают, когда объект активен (выполняет операцию)
- Начинаются, когда объект получает сообщение
- Заканчиваются, когда операция завершена
- Помогает визуализировать параллелизм и длительность операций
5. Фрагменты взаимодействия (Interaction Fragments)
- Прямоугольники с операторами для управления логикой:
- alt (alternative): условный выбор, как if-else
- Пример: [баланс >= сумма] выполнить платёж, [иначе] отклонить
- opt (optional): опциональное выполнение, как if
- Пример: [если пользователь согласен] отправить СМС
- loop: повторение, как цикл
- Пример: [для каждой транзакции] обновить статус
- par (parallel): параллельные операции
- Пример: одновременно отправить email и уведомление
- seq (strict sequence): строгая последовательность
- neg (negative): неправильное поведение
6. Примечания и ограничения (Notes & Constraints)
- Текстовые комментарии в скобках { }
- Уточняют сообщения, добавляют контекст
- Пример: {должна быть < 1 сек}
- Условия могут быть записаны в скобках [ ]: "[статус = активный]"
7. Метки сообщений (Message Labels)
- Текст на стрелке сообщения
- Формат: "имя_метода(параметры) [условие] [номер последовательности] / возвращаемое_значение"
- Примеры:
- "1: authenticate(username, password)"
- "2: validateCard(cardNumber) [encrypted]"
- "3: processTransaction(amount) / transactionId"
Пример диаграммы последовательности: Процесс оплаты
User PaymentService PaymentGateway Database EmailService
| | | | |
|--- 1: initiatePayment() --→ | | |
| | | | |
| {activation} | | |
| |--- 2: validateCard() --→ | |
| | | | |
| | {activation} | |
| |← 3: cardValid ←←← | |
| | | | |
| |--- 4: checkBalance() --------→ | |
| | | {activation} |
| |← 5: balance ←←←←←←←←←←←←←← | |
| | | | |
| [balance >= amount] | | |
| |--- 6: charge(cardNumber, amount) →| |
| | | | |
| | {waiting} | |
| |← 7: chargeSuccess ← | |
| | | | |
|← 8: paymentSuccess ← | | |
| | | | |
| |--- 9: sendReceipt(email) -----────────→ |
| | | | {activation}
| | | | |
Лучшие практики создания диаграмм последовательности
- Одна сценарий = одна диаграмма: не смешивай разные пути выполнения
- Нумеруй сообщения: помогает следить за порядком
- Используй фрагменты для условной логики: alt, opt, loop делают диаграмму понятнее
- Правильная вертикальная ориентация: время течёт сверху вниз
- Сокращай сложность: если диаграмма более 20 сообщений, разбей на несколько
- Согласованность: используй единообразные названия методов
- Документирование: добавляй примечания для нестандартных ситуаций