Навчальний простір / C#
Моделювання та аналіз програмного забезпечення

UML: структура, сценарії та стани системи

UML-подання доповнюють одне одного, коли відповідають визначеним питанням.

Зміст матеріалу

Що ви опануєте

Ви навчитеся обирати UML-подання відповідно до питання, пов’язувати структурну й поведінкову моделі та перевіряти їх на сценаріях. Приклад — резервування пристрою лабораторії. Модель має пояснювати, які сутності беруть участь, хто виконує операцію та які стани дозволені.

UML і рівень деталізації

UML — стандартизована мова моделювання з визначеними елементами й семантикою. Діаграма є поданням моделі, а не всією моделлю. Для пояснення різних аспектів використовують діаграми варіантів використання, класів, послідовностей, діяльності й станів. Вибір подання залежить від питання; одна велика схема всіх деталей може ускладнити перевірку.

На цьому сайті інтерактивні diagram компоненти показують упорядковані вузли з поясненнями. Вони допомагають дослідити модель, але не є повним UML редактором. Для формального подання у власній роботі використайте інструмент із відповідною нотацією та позначте кратності, guards і повідомлення. Семантику потрібно зберегти незалежно від засобу малювання.

Варіанти використання

Use case описує досягнення мети зовнішнім актором. «Зарезервувати обладнання» починається з вибору доступного пристрою й завершується підтвердженим записом. Основний потік описує успіх, альтернативи — зайнятий пристрій, недостатнє право та втрату зв’язку. Передумова задає стан до сценарію; постумова — гарантію після нього.

Потрібно відрізняти акторів від внутрішніх модулів. Студент є актором; Repository є частиною реалізації. Варіант використання має описувати предметний результат, а не кожну кнопку. Зовнішня система теж може бути актором, якщо її взаємодія входить до межі дослідження.

Класи та зв’язки

Класова модель описує типи, їхні властивості, операції та зв’язки. Асоціація означає предметний зв’язок. Кратність визначає допустиму кількість учасників: одне бронювання посилається на один пристрій, пристрій може мати багато історичних бронювань. Чинна активна резервація має окреме обмеження, яке не можна приховати лише кратністю історичного зв’язку.

Композиція в UML передбачає сильний зв’язок частини й цілого з визначеною відповідальністю за частину. Не позначайте кожне поле ромбом. Якщо бронювання має зберігатися після списання обладнання, потрібна модель історії й правило збереження ідентифікатора. Проєктне рішення має відповідати життєвому циклу предметних даних.

Послідовність повідомлень

Діаграма послідовності показує взаємодії в часі. Для бронювання: UI надсилає команду сервісу; сервіс перевіряє користувача; сховище виконує умовне збереження; сервіс повертає результат; UI відображає підтвердження. Важливо зазначити альтернативу невдалої перевірки й те, де гарантується атомарність.

Якщо схема показує окреме читання Available й подальший запис без перевірки версії, два паралельні запити можуть пройти одне правило. Сценарна модель дозволяє побачити це ще до implementation. Потрібно включити точку узгодженості сховища, а не припускати, що послідовність одного користувача описує всіх одночасних клієнтів.

Машина станів

Стан характеризує умови, що впливають на дозволені події. Перехід має подію, можливу guard-умову та ефект. Guard — логічна умова дозволу. Пристрій переходить Available → Reserved за успішної резервації; Reserved → Available за дозволеного скасування; Reserved → Issued за фактичної видачі.

csharp
using System;

Console.WriteLine(CanIssue(EquipmentState.Reserved)); // True.
Console.WriteLine(CanIssue(EquipmentState.Available)); // False.

static bool CanIssue(EquipmentState state) =>
    state == EquipmentState.Reserved;

public enum EquipmentState { Available, Reserved, Issued }

Стрілка => задає expression-bodied функцію. Приклад перевіряє лише guard видачі й не змінює стан. Для повної операції потрібні авторизація, виконання переходу й збереження. Enum не гарантує автоматично всі правила: зовнішні числові дані можуть мати невизначене enum значення, тому на межі входу його перевіряють.

Узгодженість моделей

Зіставте назви повідомлень із методами й станами. Якщо use case дозволяє скасування після видачі, а state модель не має переходу, потрібно погодити правило. Якщо клас не зберігає власника бронювання, guard «скасовує лише власник» не можна реалізувати лише з наявних даних. Моделі допомагають знаходити такі прогалини.

Перевірка виконується сценаріями: звичайна резервація, повторна, чужа спроба скасування, видача без бронювання й повернення. Для кожного запишіть потрібні дані, повідомлення та кінцевий стан. Це створює основу для тестів і дозволяє обговорити правила без запуску інтерфейсу.

Типові помилки та практика

Помилки: неозначені стрілки, відсутні альтернативи, змішаний рівень абстракції та стан «помилка» без умови відновлення. Схема з красивими блоками потребує семантики зв’язків. На кожній діаграмі вкажіть питання, межу та легенду; розміщуйте пояснення guards поряд із переходами.

Практичне осмислення

Опишіть сценарій повернення несправного пристрою. Який новий стан потрібний? Чи дозволена нова резервація? Які повідомлення та дані зміняться? Підготуйте текстову таблицю переходів і покажіть, як вона узгоджується зі сценарієм та класовими властивостями.

Узгодження кількох представлень UML

Діаграма класів показує структуру: сутності, атрибути, операції та зв’язки. Діаграма послідовності показує обмін повідомленнями у конкретному сценарії. Діаграма станів задає допустимі зміни життя одного об’єкта. Вони відповідають різним питанням, але повинні використовувати узгоджені назви й правила.

Для резервування в структурній моделі визначте Reservation з посиланням на Equipment. У послідовності покажіть запит, перевірку, збереження та повернення результату. У станах обладнання позначте, чи резервування змінює Available на Reserved та яка подія дозволяє звільнити ресурс. Якщо послідовність повертає успіх без потрібного переходу, представлення суперечать одне одному.

Guard — умова, яка дозволяє перехід. Вона має посилатися на відомі дані й бути перевірною. Формулювання «якщо все добре» не визначає правило. Приклад «стан Available і користувач має дозвіл» можна розкласти на дві конкретні перевірки. Дія переходу фіксує, що зміниться після їх успіху.

Візьміть сценарій відмови й пройдіть ним усі представлення: який учасник поверне результат, чи створиться Reservation, який стан залишиться в Equipment. Відмова також є частиною моделі, тому її шлях потрібно показувати явно. Позначайте границі транзакції та зовнішні залежності там, де вони важливі. Схема допомагає обговорити рішення, але формальна коректність потребує перевірки сценаріїв і реалізації.

Схема процесу

UML: структура, сценарії та стани системиОберіть елемент, щоб побачити пояснення

Визначаємо мету й альтернативні потоки.

Самоперевірка

Перевірте розуміння
Що задає guard переходу?
Як обґрунтувати відповідь своїми словами?
Guard формулює логічну умову переходу. Її можна перевірити на конкретних предметних даних.

Підсумок

UML-подання доповнюють одне одного, коли відповідають визначеним питанням. Узгодження сценаріїв, структури, повідомлень і станів виявляє прогалини правил. Guards і кратності повинні мати предметний зміст.

Джерела

Опрацювали матеріал?

Збережіть цей крок у своєму прогресі.

← Повернутися до дисципліни
© 2026 Анастасія Іскандарова-МалаЕлектронний навчальний посібник · ДДТУ

Пошук у посібнику

Спробуйте «C++», «RAII» або «бази даних».