Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектування інформаційних систем.doc
Скачиваний:
95
Добавлен:
21.09.2019
Размер:
28.77 Mб
Скачать

20.2. Стан

Поняття стану (state) є фундаментальним не тільки в метамоделі мови UML, але й у прикладному системному аналізі. Раніше у розділі 3 коротко були розглянуті особливості представлення динамічних характеристик складних систем, традиційно використовуваних для моделювання поведінки. Вся концепція динамічної системи ґрунтується на понятті стану системи. Проте семантика мови UML має цілий ряд специфічних особливостей.

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

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

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

Рис. 20.2. Графічне зображення станів на діаграмі станів

Стани на діаграмі зображаються прямокутником з округленими вершинами (рис. 20.2). Цей прямокутник, у свою чергу, може бути роздільний на дві секції горизонтальною лінією. Якщо вказана лише одна секція, то в ній записується тільки ім'я стану (рис. 20.2, а). Інакше в першій з них записується ім'я стану, а в другій – список деяких внутрішніх дій або переходів у даному стані (рис. 20.2, б). При цьому під дією в мові UML розуміють деяку атомарну операцію, виконання якої приводить до зміни стану або повернення деякого значення (наприклад, "істина" або "хибність").

20.2.1. Ім'я стану

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

20.2.2. Список внутрішніх дій

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

<мітка-дії '/' вираз-дії>

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

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

  • entry – ця мітка вказує на дію, специфіковану наступним за нею виразом дії, яка виконується в момент входу в даний стан (вхідна дія);

  • exit – ця мітка вказує на дію, специфіковану наступним за нею виразом дії, яка виконується в момент виходу з даного стану (вихідна дія);

  • do – ця мітка специфікує виконуючу діяльність ("do activity"), яка виконується протягом всього часу, поки об'єкт знаходиться в даному стані, або до того часу, поки не закінчиться обчислення, специфіковане наступним за нею виразом дії. В останньому випадку під час завершення події генерується відповідний результат;

  • include – ця мітка використовується для звернення до підавтомата, при цьому наступний за нею вираз дії містить ім'я цього підавтомата.

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

Як приклад такого стану розглянемо ситуацію введення пароля користувача аутентифікації входу в деяку програмну систему (рис. 20.3). У цьому випадку список внутрішніх дій в такому стані не порожній і включає 4 окремі дії, перші дві з яких стандартні і описані вище, а дві останні визначаються своєю специфікацією.

Рис. 20.3. Приклад стану з непорожньою секцією внутрішніх дій