47
Проект ВИРТУОЗ Н.Новгород, 2004г. SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г № 1 из 47 Модуль 16: Диаграммы состояний Курс SE201 Введение в программную инженерию Проект ВИРТУОЗ, ННГУ, Н.Новгород, 2004 г. Бабич А.В., Полтава, Украина, ПГПУ, [email protected] _____________________________________________________ _____

UML: Statechart Diagram

Embed Size (px)

Citation preview

Page 1: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 1 из 47

Модуль 16: Диаграммы состояний

Курс SE201

Введение в программную инженерию

Проект ВИРТУОЗ, ННГУ, Н.Новгород, 2004 г.

Бабич А.В., Полтава, Украина, ПГПУ, [email protected]__________________________________________________________

Page 2: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 2 из 47

Диаграммы состояний

или как визуализировать поведение отдельного объекта

Унифицированный язык моделирования

© Бабич А.В. 2004

Page 3: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 3 из 47

О чем мы узнаем…

Понятия автомата, состояния, перехода

Содержание диаграмм состояний и их свойства

Рекомендации по построению диаграмм

Page 4: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 4 из 47

Понятия автомата, состояния, перехода

Page 5: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 5 из 47

Автомат (state machine):

некоторый формализм для моделирования поведения элементов модели и системы в целом

описывает поведение в терминах последовательности

состояний, через которые проходит объект в течение своей жизни, отвечая на события, а также его реакций на эти события.

Page 6: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 6 из 47

Автомат (state machine):

Понятие автомата можно рассматривать и с других точек зрения, например:

– Конечный автомат - математическая модель устройства с конечной памятью. Конечный автомат перерабатывает множество входных дискретных сигналов в множество выходных сигналов. Различают синхронные и асинхронные конечные автоматы.http://www.glossary.ru/cgi-bin/gl_sch2.cgi?RKutl,t:l!giyusgy

– Автомат - устройство или совокупность устройств, выполняющих операции без непосредственного участия человека.

– Finite state machine (FSM) (a.k.a. finite state automaton) An abstract machine that defines a finite set of conditions of existence (called “states”), a set of behaviors or actions performed in each of those states, and a set of events that cause changes in states according to a finite and well-defined rule set.http://www.quantum-leaps.com/glossary.htm

Page 7: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 7 из 47

Автомат (state machine):

Качественное описание понятия автомата, приведенное ранее, наиболее подходит для наших целей

Page 8: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 8 из 47

Пример автомата

Простейший пример автомата - ситуация с исправностью некоторого технического устройства: два самых общих состояния: "исправен" и "неисправен" и два перехода: "выход из строя" и "ремонт.

Page 9: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 9 из 47

Автомат (продолжение)

Обязательные условия:

автомат не запоминает историю перемещения из состояния в состояние

В каждый момент времени автомат может находиться в одном и только в одном из своих состояний

концепция времени не входит в формализм автомата количество состояний автомата должно быть конечным, и все они

должны быть явно специфицированы автомат не должен содержать изолированных состояний и

переходов автомат не должен содержать конфликтующих переходов

Page 10: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 10 из 47

Пример моделирования автомата

Page 11: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 11 из 47

Состояние, событие, деятельность (Буч)

Состояние (State) объекта - ситуация в его жизни, на протяжении которой он удовлетворяет некоторому условию, осуществляет определенную деятельность или ожидает какого-то события.

Событие (Event) - спецификация существенного факта, имеющего место в пространстве и во времени, некий стимул, инициирующий переход из одного состояния в другое.

Когда происходит событие, в зависимости от текущего состояния объекта имеет место та или иная деятельность.

Деятельность (Activity) - занимающее некоторое время неатомарное вычисление внутри автомата.

Результатом деятельности является некоторое действие (Action), составленное из атомарных вычислений, которое приводит к изменению состояния модели или возврату значения.

Page 12: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 12 из 47

Состояние Элементы состояния:

– имя– действия при входе/выходе

– внутренние переходы – подсостояния – отложенные события

состояние изображается прямоугольником с закругленными углами состояния могут быть вложенными, последовательными и

параллельными имя состояния

сост1 сост2

сост1

сост1

Page 13: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 13 из 47

Имя состояния

строка текста, которая раскрывает содержательный смысл состояния

всегда записывается с заглавной буквы

рекомендуется использовать глаголы в настоящем времени

(например, для принтера - Печатает, Ожидает) или соответствующие причастия (для сотрудника - Занят, Свободен)

может отсутствовать

Page 14: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 14 из 47

Действия

Записываются в виде отдельной строки и имеют следующий формат: метка-действия/выражение-действия

Метка указывает на условия, при которых будет выполняться деятельность, определенная выражением действия

Перечень меток фиксирован в языке UML:– Entry (входное действие)– Exit (выходное действие )– Do (выполняющуюся деятельность )– Include (обращения к подавтомату )

Пример:

Page 15: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 15 из 47

Начальное и конечное состояния

представляют собой частные случаи состояния, которое также не содержит никаких внутренних действий (псевдосостояния)

Начальное состояние - служит для указания места, от которого начинается процесс изменения состояний

Конечное состояние - служит для указания места, в котором завершается жизненный цикл данного объекта

Page 16: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 16 из 47

Переход

Переход - это отношение между двумя состояниями, показывающее, что объект, находящийся в первом состоянии, должен перейти во второе состояние

Элементы перехода: – исходное состояние – событие-триггер – сторожевое условие – действие – целевое состояние

переходы изображаются в виде линии со стрелкой, направленной от исходного к целевому состоянию

событиеусловие

Page 17: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 17 из 47

Переход (продолжение)

Переход может быть направлен в то же состояние, из которого он выходит

Каждый переход может помечен строкой текста, которая имеет следующий формат: 

сигнатура события[сторожевое условие]/выражение действия

Page 18: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 18 из 47

Переход (продолжение II)

Сигнатура события описывает некоторое событие с необходимыми аргументами:

имя события(список параметров)

Сторожевое условие представляет собой некоторое булевское выражение и может отсутствовать. Если оно принимает значение «истина», то переход срабатывает

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

Page 19: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 19 из 47

Переход (пример)

Пример спецификации перехода:

Page 20: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 20 из 47

Содержание диаграмм состояний и их свойства

Page 21: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 21 из 47

Диаграмма состояний

один из пяти видов диаграмм, используемых для моделирования динамических аспектов системы

показывает автомат

используется для моделирования поведения реактивных объектов

Обычно диаграмма состояний включает в себя:– простые и составные состояния – переходы вместе с ассоциированными событиями и

действиями

Page 22: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 22 из 47

Упражнение

Используя рассмотренные ранее элементы, попробуйте построить диаграмму состояний для студента учебного заведения, переходящего с курса на курс.

Page 23: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 23 из 47

Возможные решения

Page 24: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 24 из 47

Еще пример

Как вы думаете, что описывает данная диаграмма?

Page 25: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 25 из 47

Более сложная диаграмма

Page 26: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 26 из 47

Диаграмма с параллельными подсостояниями

Параллельные подсостояния позволяют специфицировать несколько подавтоматов, которые могут выполняться параллельно внутри состояния

Каждый из подавтоматов занимает некоторую область внутри составного состояния, которая отделяется от остальных горизонтальной пунктирной линией.

Объект может одновременно находиться в каждом из параллельных подсостояний.

Page 27: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 27 из 47

Диаграмма с параллельными подсостояниями – конкретная постановка задачи

На следующем слайде представлен конкретный пример диаграммы с параллельными подсостояниями для задачи прохождения курса студентом:

Для того, чтобы пройти курс, студент должен выполнить некоторое количество лабораторных работ, выполнить курсовой проект и пройти финальный тест.

Page 28: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 28 из 47

Пример диаграммы с параллельнымисостояниями

Page 29: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 29 из 47

Развернутый пример

В качестве примера рассмотрим графический пользовательский интерфейс (GUI) ОС.

– GUI инициализируется при включении компьютера и завершает его работу при его выключении.

– можно выделить по крайней мере три устойчивых состояния GUI:

• Инициализация• Работа• Завершение работы

Page 30: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 30 из 47

Развернутый пример – 1-е приближение

включение компьютера выключение

Инициализация Работа Завершение работы

do/загрузка

Page 31: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 31 из 47

Развернутый пример - продолжение

– Если не наблюдается никакой активности пользователя, активизируется хранитель экрана (заставка)

– В состояние «Отображение заставки» GUI переходит при условии истечения заданного промежутка времени и возвращается в состояние «Работа» при нажатии клавиши или перемещении указателя «мыши»

Page 32: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 32 из 47

Развернутый пример – 2-е приближение

включение компьютера выключение

Инициализация Работа Завершение работы

do/загрузка

Отображение заставки

[вр

емя

исте

кло

]Нажатиеклавиши или перемещение указателя «мыши»

Page 33: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 33 из 47

Развернутый пример - продолжение

– Состояние «Работа» является более сложным по сравнению с остальными. В этом состоянии:

• GUI постоянно ожидает действий пользователя– нажатия клавиш– перемещения указателя мыши– «щелчки» по кнопкам мыши

• при выполнении таких действий, GUI регистрирует событие и

• Изменяет содержимое экрана, чтобы отобразить действия пользователя

– Таким образом, состояние «Работа» имеет такие последовательные подсостояния:

• Ожидание ввода пользователя• Регистрация ввода пользователя• Визуализация ввода пользователя

Page 34: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 34 из 47

Развернутый пример – 3-е приближение

Ожидание ввода

пользователя

Регистрация ввода

пользователя

Визуализация ввода

пользователя

Ввод

Работа

Page 35: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 35 из 47

Развернутый пример - продолжение

– В состоянии «Работа» GUI не только ожидает действий пользователя и т.д.

– Также: • отслеживается системное время и• возможно, обновляется экран по истечении заданного

промежутка времени

– Эта последовательность из двух подсостояний выполняется параллельно с ранее рассмотренными подсостояниями

Page 36: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 36 из 47

Развернутый пример – 4-е приближение

Ожидание ввода

пользователя

Регистрация ввода

пользователя

Визуализация ввода

пользователя

Ввод

Работа

Отслеживаниесистемного

времениОбновлениеизображения

[период завершился]

Page 37: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 37 из 47

Развернутый пример - продолжение

Данный пример можно детализировать больше и больше…

Page 38: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 38 из 47

Примечания

диаграмма состояний - не обязательна и "присоединяется" к тому элементу, который, ведет себя нетривиально

из каждого состояния не может быть самопроизвольного перехода другое состояние

объект в каждый момент должен находиться в единственном состоянии

никакие два перехода из одного состояния не могут сработать одновременно

некоторые дополнительные конструкции не были рассмотрены:– исторические состояния– точки динамического выбора (dynamic choice points)– точки соединения (junction points)

Информацию о них можно найти в оригинальной документации по UML.

Page 39: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 39 из 47

Хорошо структурированная диаграмма состояний:

сосредоточена на описании одного аспекта динамики системы

содержит только существенные для понимания этого аспекта элементы

описывает лишь соответствующие своему уровню абстракции детали

Page 40: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 40 из 47

Рекомендации по построению диаграмм

Page 41: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 41 из 47

Моделирование поведения объектов(Г. Буч)

выбрать контекст для автомата (класс, прецедент, систему) выбрать начальное и конечное состояния объекта определить устойчивые состояния объекта разумно/частично упорядочить устойчивые состояния какие события могут инициировать переходы между состояниями? присоединить действия к переходам и/или к состояниям как можно упростить автомат? проверить достижимость любого из состояний убедиться в отсутствии тупиковых состояний трассировать автомат

Page 42: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 42 из 47

Общие рекомендации по построению:

дайте диаграмме имя, соответствующее ее назначению

начинайте с моделирования устойчивых состояний объекта, затем переходите к допустимым переходам состояний

располагайте элементы так, чтобы число пересечений линий было минимальным

Page 43: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 43 из 47

Итоги

Диаграммы состояний - это один из пяти видов диаграмм в языке UML, используемых для моделирования динамических аспектов системы.

Диаграмма состояний показывает автомат. Прямоугольники представляют состояния, стрелки представляют

переходы от одного состояния к другому. Состояние - это ситуация в жизни объекта, на протяжении которой

он удовлетворяет некоторому условию, выполняет определенную деятельность или ожидает какого-то события.

Переход представляет собой отношение между двумя последовательными состояниями, которое указывает на факт смены одного состояния другим.

Page 44: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 44 из 47

Вопросы ?

?

Page 45: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 45 из 47

Вопросы и упражнения

Вопросы:– Чем диаграммы состояний принципиально отличаются от диаграмм

классов, объектов и прецедентов?– Что такое переход, событие, действие?– Что такое безусловный переход?– Чем отличаются последовательные и подчиненные подсостояния– Что такое псевдосостояние? Приведите примеры.

Упражнения:– Вы проектируете тостер. Постройте диаграмму состояний хлеба в

тостере. Используйте триггерные события, действия и переходы.– Постройте диаграмму состояний банкомата. – Для рассмотренного примера с графическим интерфейсом

пользователя, постройте диаграмму состояния «Отображение заставки», которая включала бы параллельные подсостояния*.

* Задание более высокого уровня сложности

Page 46: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 46 из 47

Использованные материалы

При разработке представленных материалов с разрешения авторов или правообладателей использовались следующие источники:

Г.Буч. UML: Руководство пользователяhttp://alice.stup.ac.ru/~dvn/uproc/books/uml_user_guide/index.htm

Леоненков. Самоучитель по UMLhttp://khpi-iip.mipk.kharkiv.edu/library/case/leon/index.html

Дж. Шмулер. Освой самостоятельно UML за 24 часа, 2-е издание: пер. с англ. – М.: Изд. Дом «Вильямс», 2002.

UML Reference quick card © 2002 Laurent Grégoire http://tnerual.eriogerg.free.fr/uml.html

OMG Unified Modeling Language Specification. Copyright © 2000, Object Management Group http://www.omg.org/cgi-bin/apps/doc?formal/03-03-01.pdf

Page 47: UML: Statechart Diagram

Проект ВИРТУОЗН.Новгород, 2004г.

SE201. Мод.16: Диаграммы состояний © Бабич А.В., 2004г

№ 47 из 47

О проекте ВИРТУОЗ

Цель проекта "Виртуоз" - подготовка преподавателей к внедрению в ВУЗах России и других стран СНГ новой специальности – "Информационные технологии". Основная задача проекта - совершенствование методологии преподавания программной инженерии. Реализация этой программы направлена на создание надёжной образовательной основы для дальнейшего развития отечественной ИТ-индустрии.

В рамках проекта (август-декабрь 2004 г.) - обучение современным методикам программной инженерии, передовым информационным технологиям, получение опыта работы по созданию учебных курсов, соответствующих международным образовательным стандартам IEEE/ACM Computing Curricula 2001: Computer Science и Software Engineering, а также прохождение стажировки в корпорации Intel.

Проект "Виртуоз" выполнялся в Нижегородском государственном университете им. Н.И. Лобачевского по инициативе компании Intel при поддержке Microsoft, IBM, Borland, Лаборатория Касперского и др.