Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка по информационным системам / ПЕРЕВОД_МЕТОДИЧКИ _полн.doc
Скачиваний:
114
Добавлен:
02.08.2013
Размер:
30.74 Mб
Скачать

10.6. Завдання

1. Вибрати в системі, що моделюється, класи, для яких суттєвими є динамічні характеристики..

2. Побудувати для кожного обраного класу діаграму станів, що характеризує поведінку його об'єктів у декількох варіантах використання.

10.7. Контрольні запитання

1. Яке призначення діаграм стану ?

2. Як відображаються дії і діяльності на діаграмах стану ?

3. Що таке умовний перехід і як описується на діаграмі?

  1. Які особливі стани об'єкта відображаються на діаграмі?

  2. Назвіть переваги і недоліки діаграм станів.

11. Діаграми діяльності

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

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

У контексті мови UML діяльність (actіvіty) являє собою деяку сукупність окремих обчислень, виконуваних автоматом. При цьому окремі елементарні обчислення можуть приводити до деякого результату або дії (actіon). На діаграмі діяльності відображається логіка або послідовність переходу від однієї діяльності до іншої, при цьому увага фіксується на результаті діяльності. Сам же результат може привести до зміни стану системи або поверненню деякого значення.

11.1. Стани і дії

Стан дії (actіon state) є спеціальним випадком стану з деякою вхідною дією і принаймні одним вихідним зі стану переходом. Цей перехід неявно припускає, що вхідна дія вже завершилася. Стан дії не може мати внутрішніх переходів, оскільки воно є елементарним. Звичайне використання стану дії полягає в моделюванні одного кроку виконання алгоритму (процедури) або потоку керування.

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

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

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

Графічно розгалуження на діаграмі діяльності позначається невеликим ромбом, усередині якого немає ніякого тексту (рис. 11.1). У цей ромб може входити тільки одна стрілка від того стану дії, після виконання якого потік керування повинний бути продовжений по одній із віток. Прийнято вхідну стрілку приєднувати до верхньої або лівої вершини символу розгалуження. Вихідних стрілок може бути дві або більш, але для кожної з них явно указується відповідна сторожова умова у формі логічного виразу.

Рис. 11.1. Графічне позначення розгалуження.

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

Як правило, така риска зображується відрізком горизонтальної лінії, товщина якої трохи ширше основних суцільних ліній діаграми діяльності. При цьому поділ (concurrent fork) має один вхідний перехід і кілька вихідних (рис. 11.2). Злиття (concurrent joіn), навпаки, має кілька вхідних переходів і один вихідний

Рис. 11.2. Графічне зображення поділу і злиття рівнобіжних потоків керування.