- •Тема 5. Структура і послідовність складання динамічної моделі системи
- •5.1. Події, стан об’єктів та діаграми станів
- •Сценарії та траси подій
- •Діаграми станів
- •5.2. Умови
- •5.3. Активності та дії
- •5.4. Одночасні події. Синхронізація
- •5.5. Вкладені діаграми станів
- •5.6. Динамічна модель банківської мережі
Діаграми станів
Діаграма станів взаємно пов’язує події та стани. У разі приймання події наступний стан системи залежить як від поточного стану, так і від події. Зміна стану називається переходом.
Рис. 47 . Діаграма станів телефонної лінії
Діаграма станів — це граф, вузли якого подають стан, а напрямлені дуги, позначені іменами відповідних подій, — переходи. Діаграма станів, наприклад телефонної мережі, дозволяє одержати послідовність станів за заданою послідовністю подій.
5.2. Умови
Умова — це логічна (бульова) функція значень об’єктів, таких як «картку пощастило прочитати», «температура нижча від нуля» і т. ін. Умова може бути виконана протягом деякого проміжку часу. Подія, на відміну від умови, відбувається, як уже зазначалося, миттєво і не має тривалості в часі.
Умови можуть використовуватися як обмеження на переходи: умовний перехід виконується лише тоді, коли відбулася відповідна подія, тобто виконано умову такого переходу. Діаграма станів, подана на рис. 48, унаочнює це на прикладі автомобільного руху по магістралях «Північ—Південь» та «Захід—Схід»). На діаграмах станів умови записуються слідом за подіями у квадратних дужках.
Рис. 48. Діаграма станів, на якій зазначено умови
5.3. Активності та дії
Діаграма станів була б менш корисною, коли б містила тіль- ки переходи (безумовні та умовні), що відповідають генеро- ваним під час роботи системи подіям. Щоб відобразити пове- дінку об’єкта, діаграма станів має описувати дії об’єкта у відповідь на перехід до певного стану чи в разі настання деякої події. Для цього до діаграми станів включають описи як активностей, так і дій.
Активністю називається операція, пов’язана з деяким станом об’єкта (вона здійснюється, коли об’єкт набуває зазначеного стану). Виконання активності потребує певного часу.
Приклади активностей: видача картинки на екран телевізора, телефонний дзвінок; зчитування порції файла в буфер і т. ін. Іноді активністю буває просто зупинка виконання програми (пауза), яка має забезпечити необхідний час перебування у відповідному стані (це особливо важливо в разі паралельної асинхронної програми). Активність пов’язана зі станом, тому на діаграмі станів вона позначається «do: ім’я активності» у вузлі, який описує відповідний стан (рис. 49).
Рис. 49. Позначення активностей і дій на діаграмі станів
Дією називається миттєва операція, пов’язана з подією: при настанні події відбувається не лише перехід об’єкта до нового стану, а й виконується дія, пов’язана із цією подією. Наприклад, у телефонній мережі подія «повісив трубку» супроводжується дією «роз’єднати зв’язок» (рис. 50). Дія, яка вказує на діаграмі стан, що настає услід за подією, якій дія відповідає, та ім’я (чи опис) стану відокремлюються від імені події скісною рискою («/») (рис. 49).
Дії також можуть подавати внутрішні операції управління об’єктом, як, скажімо, присвоювання значень атрибутам та генерація інших подій.
Рис. 50. Діаграма станів телефонної лінії, на якій вказані активності та дії
5.4. Одночасні події. Синхронізація
Діаграма стану складового об’єкта: він складається з чотирьох паралельно і незалежно працюючих компонентів (стан кожного компонента не залежить від станів інших компонентів). Стан такого об’єкта визначається як кортеж, членами якого є стани кожного зі складових об’єктів. Діаграма станів при цьому розпадається на чотири незалежні діаграми станів кожного з компонентів (див. також п. 5).
Рис. 51. Діаграма станів складового об’єкта (підсистеми)
У системах, які складаються з кількох об’єктів, що працюють паралельно, іноді буває необхідно погоджувати (синхронізувати) роботу двох чи більше об’єктів. Для цього також застосовують події, оскільки синхронізація по суті полягає в необхідності затримати перехід одного зі синхронізовуваних об’єктів до чергового стану, коли інший об’єкт не набуде деякого фіксованого стану, тоді як переходи зі стану до стану керуються подією. Синхронізуюча подія може вироблятися в будь-якому із синхронізуючих об’єктів, або в якомусь третьому об’єкті.
Рис. 52. Передача подій від одного об’єкта
до іншого
Якщо об’єкт отримує події з кількох незалежних об’єктів, то стан, в який він переходить, може залежати від порядку, в якому отримувалися події (а цей по- рядок випадковий, оскільки об’єкти незалежні). Це називається умовою конкуренції. Однією із задач проектування є виключення небажаних умов конкуренції. Це досягається за допомогою синхронізації.
Синхронізація використовується і в разі, коли в деякому стані потрібно паралельно виконати кілька активностей. Розглянемо, наприклад, пристрій виводу АТМ (рис. 53). Він одночасно (паралельно) видає готівку та картку. Обидві ці операції можна розглядати як складену активність, утворену з двох активностей, що працюють паралельно (пунктирна лінія на діагоналі станів поділяє стан на дві області, в кожній з яких виконується одна із зазначених активностей). Поділ управління на два паралельних потоки схематично зображається у вигляді стрілки, яка розгалужується на дві: подія «Готовий» спричинює перехід зі стану «Установлення» відразу до двох паралельних підстанів стану «Видача». Перехід до наступного стану відбувається за двома станами «Гроші взяті» та «Картка взята». Якщо якийсь із цих станів здійсниться раніше від іншого, переходу все одно не буде, доки не досягнеться й інший стан (саме в цьому й полягає синхронізація).
Рис. 53. Синхронізація в підсистемі
Із розглянутого прикладу бачимо, що в різних станах може паралельно працювати різне число процесів (активностей).
