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

10 Діаграми станів

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

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

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

Для моделювання поведінки на логічному рівні в мові UML можуть використовуватися відразу кілька канонічних діаграм: станів, діяльності, послідовності і кооперації, кожна з яких фіксує увагу на окремому аспекті функціонування системи.

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

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

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

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

10.1. Стан

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

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

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

а) б)

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

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

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

<позначка дії / дія >

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

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

entry - ця позначка вказує на дію, що виконується в момент входу в даний стан (вхідна дія );

exіt - ця позначка вказує на дію, що виконується в момент виходу з даного стану (вихідна дія );

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

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

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

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

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

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

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

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

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