UML-діаграми послідовностей та комунікації
Розділ: Інженерія систем і програмного забезпечення
📌 Про що ця тема
UML (Unified Modeling Language) — уніфікована мова моделювання для опису структури й поведінки програмних систем. Діаграми послідовностей і комунікації належать до діаграм взаємодії й показують, як обʼєкти обмінюються повідомленнями в часі. На іспиті перевіряють уміння читати такі діаграми, впізнавати елементи й розуміти порядок викликів.
📖 Головне
• UML має два види діаграм: структурні (клас, компонент, розгортання) і поведінкові (прецедентів, діяльності, станів, взаємодії). Діаграми послідовностей і комунікації — це діаграми взаємодії.
• Діаграма послідовностей (sequence) акцентує на ЧАСІ: показує порядок обміну повідомленнями зверху вниз.
• Діаграма комунікації (collaboration) акцентує на СТРУКТУРІ звʼязків між обʼєктами; порядок задається нумерацією повідомлень (1, 1.1, 2…).
• Обидві діаграми еквівалентні за змістом — одну можна перебудувати в іншу.
• Актор — зовнішня сутність (людина чи система), що ініціює взаємодію; малюється «чоловічком».
• Обʼєкт/учасник — прямокутник угорі з назвою у форматі імʼя:Клас (підкреслено).
• Лінія життя (lifeline) — вертикальна пунктирна лінія вниз від обʼєкта; показує існування обʼєкта в часі.
• Активація (focus of control) — вузький прямокутник на лінії життя; період, коли обʼєкт виконує дію.
• Синхронне повідомлення — суцільна стрілка із зафарбованим трикутним наконечником; відправник чекає відповіді.
• Асинхронне повідомлення — суцільна стрілка з відкритим наконечником; відправник не чекає.
• Повідомлення-відповідь (return) — пунктирна стрілка назад.
• Повідомлення створення обʼєкта веде до прямокутника обʼєкта; знищення позначають хрестиком (X) на лінії життя.
• Самовиклик (self-message) — стрілка обʼєкта до себе.
• Фрейми/комбіновані фрагменти: alt (вибір), opt (умова), loop (цикл), par (паралельно), ref (посилання).
🔢 Як це працює на прикладі
Сценарій «Клієнт оформлює замовлення»:
1) Актор Клієнт надсилає синхронне повідомлення оформити() обʼєкту :Форма.
2) :Форма викликає перевіритиТовар() у :Склад (активація :Склад).
3) :Склад повертає кількість (пунктирна стрілка-відповідь).
4) Усередині loop :Форма додає кожну позицію до :Кошик.
5) У фрагменті alt: якщо товар є — :Форма викликає створитиЗамовлення() у :Замовлення (створюється новий обʼєкт); інакше — повідомлення «немає».
На діаграмі комунікації ті самі кроки нумерують: 1 оформити, 1.1 перевіритиТовар, 1.2 створитиЗамовлення — без вертикального часу.
⚠️ Типові помилки
• Плутають час і структуру: у sequence час іде зверху вниз, у communication часу немає — лише нумерація.
• Плутають синхронне (зафарбований трикутник) і асинхронне (відкрита стрілка) повідомлення.
• Вважають пунктирну стрілку окремим викликом, хоча це return-відповідь.
• Забувають, що діаграми взаємодії — поведінкові, а не структурні (діаграму класів туди не відносять).
• Неправильно читають фрагменти: loop — цикл, alt — розгалуження; їх сплутують.
🎯 Що завчити напамʼять
• Sequence = час (вертикаль); Communication = структура + нумерація.
• Синхронне — зафарбований наконечник; асинхронне — відкритий; return — пунктир.
• Елементи: актор, обʼєкт (імʼя:Клас), лінія життя, активація.
• Фрагменти: alt, opt, loop, par, ref.
• Обидві діаграми взаємодії — поведінкові.
🧠 Перевір себе
1) Яка діаграма взаємодії акцентує на часовому порядку?
2) Чим позначається синхронне повідомлення?
3) До якої групи (структурні чи поведінкові) належать діаграми взаємодії?
4) Що означає фрагмент alt?
Відповіді: 1 — діаграма послідовностей (sequence); 2 — суцільна стрілка із зафарбованим трикутним наконечником; 3 — поведінкові; 4 — розгалуження/вибір між альтернативними варіантами за умовою.