
- •Лекція 1. Вступ до програмної інженерії
- •Лекція 2. Поняття процесу проектування програмних продуктів
- •Лекція 3.Вдосконалення процесу проектування пз
- •Лекція 4. Життєвий цикл пз
- •Лекція 5. Методології і технології проектування пс
- •Лекція 6. Екстремальне програмування
- •Замовник
- •Розробник
- •Лекція 7. Робочий продукт, дисципліна зобов'язань
- •Лекція 8. Управління вимогами
- •Лекція 9. Структурний підхід до проектування пс
- •Лекція 10. Об’єктно-орієнтований аналіз і проектування програмних систем
- •Приклад діаграми класів
- •Лекція 11. Ооап. Діаграмма станів (statechart diagram)
- •Лекція 12. Диаграма деяльності (activity diagram)
- •Лекція 14. Управління програмним проектом
- •Як добитися консенсусу?
- •Лекція 14. Якість програмного забезпечення та методи його контролю
- •Для кожного процесу потрібно мати плани розвитку процесу, що складаються як мінімум з наступних розділів.
- •Лекція 15. Вимірюваня і оцінка складності програм
- •Лекція 16: Стандарти iso, sw-cmm. Case-технології
- •Лекція 17. Перспективні методи розробки пз. Scrum
Приклад діаграми класів
Лекція 11. Ооап. Діаграмма станів (statechart diagram)
Діаграми станів визначають всі можливі стани, в яких може знаходитися конкретний об'єкт, а також процес зміни станів об'єкту в результаті настання деяких подій. Діаграми станів не треба створювати для кожного класу, вони застосовуються тільки в складних випадках. Якщо об'єкт класу може існувати в декількох станах і в кожному з них поводиться по-різному, для нього може потрібно така діаграма.
Діаграма станів є графом спеціального вигляду, який представляє деякий автомат. Вершинами графа є можливі стани автомата, що зображаються відповідними графічними символами, а дуги позначають його переходи із стану в стан. Діаграми станів можуть бути вкладені один в одного для детальнішого представлення окремих елементів моделі.
Автомати в UML
Поведінка автомата моделюється як послідовне переміщення по графові від вершини до вершини з урахуванням орієнтації дуг, що зв'язують їх.
Для автомата повинні виконуватися наступні обов'язкові умови:
стан, в який може перейти об'єкт, визначається тільки його поточним станом і не залежить від передісторії;
у кожен момент часу автомат може знаходитися тільки в одному зі своїх станів.
час знаходження автомата в тому або іншому стані, а також час досягнення того або іншого стану ніяк не специфікуються;
кількість станів автомата повинна бути кінцевою і всі вони повинні бути специфіковані явним чином;
граф автомата не повинен містити ізольованих станів і переходів. Для кожного стану, окрім початкового, повинен бути визначене попередній стан, а кожен перехід повинен сполучати два стани автомата;
автомат не должен содержать конфликтующих переходов, когда объект одновременно может перейти в два и более последующих состояния.
Поняття стану об'єкту
У мові UML стан може бути задане у вигляді набору конкретних значень атрибутів класу або об'єкту. Зміна окремих значень атрибутів відбиватиме зміну стану модельованого класу або об'єкту.
Перебування на діаграмі зображається прямокутником з вершинами, що округляють. Прямокутник може бути роздільний на дві секції горизонтальною лінією. Якщо вказана лише одна секція, то в ній записується тільки ім'я стану. За наявності двох секцій, в першій з них записується ім'я стану, а в другий список деяких внутрішніх дій або переходів в даному стані. Під дією в мові UML розуміють деяку атомарну операцію, виконання якої приводить до зміни стану або повернення деякого значення.
Ім'я стану є рядком тексту, який розкриває його змістовний сенс.
Список внутрішніх дій містить перелік дій або деятельностей, які виконуються під час знаходження модельованого елементу в даному стані. Кожна з дій записується у вигляді окремого рядка і має наступний формат:
<метка-действия '/' выражение-действия>
Мітка дії указує на обставини або умови, при яких виконуватиметься діяльність, визначена виразом дії. При цьому, вираз дії може використовувати будь-які атрибути і зв'язки, які належать області імен або контексту модельованого об'єкту.
Перелік міток дії має фіксовані значення, які не можуть бути використані як імена подій. Ці значення наступні:
entry – ця мітка указує на дію, специфіковану наступним за нею виразом дії, яка виконується у момент входу в даний стан;
exit – ця мітка указує на дію, специфіковану наступним за нею виразом дії, яка виконується у момент виходу з даного стану;
do – ця мітка специфікує діяльність, що виконується, яка виконується протягом всього часу, поки об'єкт знаходиться в даному стані, або до тих пір, поки не закінчиться обчислення, специфіковане наступним за нею виразом дії;
include – ця мітка використовується для звернення до підавтомата, при цьому наступний за нею вираз дії містить ім'я цього підавтомата.
Начальное
состояние
представляет собой частный случай
состояния, которое не содержит никаких
внутренних действий (псевдосостояние).
В этом состоянии находится объект по
умолчанию в начальный момент времени.
Оно служит для указания на диаграмме
графической области, от которой начинается
процесс изменения состояний. Графически
начальное состояние в языке UML обозначается
в виде закрашенного кружка, из которого
может только выходить стрелка,
соответствующая переходу.
Кінцевим
станом є
окремий випадок стану, який також не
містить ніяких внутрішніх дій (псевдостан).
У цьому стані знаходитиметься об'єкт
за умовчанням після завершення роботи
автомата в кінцевий момент часу. Воно
служить для вказівки на діаграмі
графічної області, в якій завершується
процес зміни станів або життєвий цикл
даного об'єкту. Графічно кінцеве полягання
в мові UML
позначається у вигляді закрашеного
кружка, поміщеного в коло, яке може
тільки входити стрілка, відповідна
переходу.
Перехід
Простий переходом (simple transition) є відношення між двома послідовними станами, яке указує на факт зміни одного стану об'єкту іншим. Якщо перебування модельованого об'єкту в першому стані супроводжується виконанням деяких дій, то перехід в другий стан буде можливий тільки після завершення цих дій і, можливо, після виконання деяких додаткових умов, званих сторожовими умовами.
На діаграмі станів перехід зображається суцільною лінією із стрілкою, яка направлена в цільовий стан. Кожен перехід може бути помічений рядком тексту, який має наступний загальний формат:
<сигнатура события>'['<сторожевое условие>']' <вираз дії>.
При цьому сигнатура події описує деяку подію з необхідними аргументами:
<ім'я события>'('<список параметрів, розділених запятыми>')'.
Подія (event) є специфікацією деякого факту, що має місце в просторі і в часі. Про події говорять, що вони «відбуваються», при цьому окремі події повинні бути впорядковані в часі.
Ім'я події ідентифікує кожен окремий перехід на діаграмі станів і може містити рядок тексту, що починається з рядкової букви. В цьому випадку прийнято вважати перехід трігером, тобто таким, який специфікує подію-трігер. Якщо поряд із стрілкою переходу не вказаний ніякий рядок тексту, то відповідний перехід є нетрігером, і в цьому випадку з контексту діаграми станів повинно слід, після закінчення якої діяльності він виконується. Після імені події можуть слідувати круглі дужки для явного завдання параметрів відповідної події-трігера.
Сторожова умова (guard condition), якщо воно є, завжди записується в прямих дужках після події-трігера і є деяким булевим виразом. Кожна із сторожових умов необхідно обчислювати всякий раз при настанні відповідної події-трігера.
Выражение действия (action expression) выполняется только при срабатывании перехода. Оно представляет собой атомарную операцию, выполняемую сразу после срабатывания соответствующего перехода до начала каких бы то ни было действий в целевом состоянии.
Переходи між паралельними станами
В окремих випадках перехід може мати декілька станів-джерел і декілька цільових станів. Такий перехід отримав назву паралельний перехід.
Графічно такий перехід зображається вертикальною рискою. Якщо паралельний перехід має дві і більш вхідні дуги, його називають з'єднанням (join). Якщо ж він має дві або більш витікаючі дуги, то його називають галуженням (fork). Текстовий рядок специфікації паралельного переходу записується поряд з рискою і відноситься до всіх вхідних або витікаючих дуг.
Спрацьовування паралельного переходу відбувається таким чином. Перехід-з'єднання виконується, якщо має місце подія-трігер для всіх початкових станів цього переходу, і виконано, якщо таке є, сторожова умова. При спрацьовуванні переходу-з'єднання одночасно покидаются всі початкові стани переходу і відбувається перехід в цільовий стан.
У разі галуження відбувається розділення автомата на два підавтомати, створюючих паралельні гілки вкладених підстанів. Після спрацьовування переходу модельований об'єкт одночасно знаходитиметься у всіх цільових станах цього переходу. Далі процес зміни станів протікатиме згідно правилам для складених станів.
Синхронізуючі стани
Синхронізуючий стан (synch state) позначається невеликим колом, усередині якого поміщений символ зірочки «*». Воно використовується спільно з переходом-з'єднанням або переходом-галуженням для того, щоб явно вказати події в інших підавтоматах, що роблять безпосередній вплив на поведінку даного підавтомата.
Приклад діаграми станів
Виконання замовлення, що складається з пунктів.
2. Телефонний дзвінок