40596

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

Лекция

Информатика, кибернетика и программирование

Диаграмма состояний показывает автомат. Ее частной разновидностью является диаграмма деятельности в которой все или большая часть состояний это состояния деятельности а все или большая часть переходов инициируются в результате завершения деятельности в исходном состоянии. Таким образом при моделировании жизненного цикла объекта полезны как диаграммы деятельности так и диаграммы состояний.

Русский

2013-10-17

39.47 KB

3 чел.

Занятие №  36

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

Диаграммы состояний - это один из пяти видов диаграмм в языке UML, используемых для моделирования динамических аспектов системы. Диаграмма состояний показывает автомат. Ее частной разновидностью является диаграмма деятельности, в которой все или большая часть состояний - это состояния деятельности, а все или большая часть переходов инициируются в результате завершения деятельности в исходном состоянии. Таким образом, при моделировании жизненного цикла объекта полезны как диаграммы деятельности, так и диаграммы состояний. Но если диаграмма деятельности показывает поток управления от деятельности к деятельности, то на диаграмме состояний представлен поток управления от состояния к состоянию.

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

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

Введение

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

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

Более прагматичный инвестор тоже доверится подрядчику, но все же, прежде чем давать деньги, захочет удостовериться в том, что процесс протекает в правильном направлении. Поэтому, вместо того чтобы предоставлять бесконтрольный доступ к банковскому счету, осторожный вкладчик сначала наметит основные вехи проекта, каждая из которых соотносится с завершением определенной стадии работ. Лишь на исходе одного этапа инвестор выделит сумму для выполнения следующего. Например, в самом начале может быть выдана сравнительно скромная сумма на создание архитектурного проекта. После его одобрения очередная инвестиция выделяется на инженерную подготовку. Когда и этот этап закончится, вносятся деньги на рытье котлована. И так на всем пути, от закладки фундамента до получения свидетельства о праве владения, расставлены вехи.

Каждая такая веха обозначает некое устойчивое состояние проекта: закончено архитектурное проектирование, проведена инженерная подготовка, вырыт, котлован, завершена подводка коммуникаций, загерметизированы швы и т.д. Для инвестора наблюдение за изменениями в ходе процесса намного важнее, чем контроль последовательности работ: этим может заняться подрядчик с помощью Pert-диаграммы.

При моделировании программных систем также необходимо отыскать наиболее естественный способ визуализации, специфицирования, конструирования и документирования поведения определенных типов объектов, когда Основное внимание уделяется переходам из состояния в состояние, а не от деятельности к деятельности. Последнее можно выполнить с помощью блок-схем. Представьте себе моделирование поведения встроенной системы 'безопасности у себя дома. Она работает непрерывно, реагируя на внешние события, скажем на разбитое окно. Порядок событий изменяет поведение системы. Например, обнаружение разбитого окна вызовет срабатывание сигнализации, только если система предварительно была активизирована. Поведение такой системы лучше всего описывается путем моделирования ее устойчивых состояний (например, Ожидание, Активна, Проверкаи т.д.), событий, инициирующих смену состояния, и действий, выполняемых при каждой такой смене.

В UML для моделирования поведения объекта с точки зрения порядка возникновения событий используются диаграммы состояний. Из рис.1 видно, что диаграмма состояний - это просто представление автомата, и основное внимание уделено потоку управления от одного состояния к другому.

Термины и понятия

Диаграмма состояний (Statechart diagram) показывает автомат, фокусируя внимание на потоке управления от состояния к состоянию. Автомат (State machine) -это описание последовательности состояний, через которые проходит объект на протяжении своего жизненного цикла, реагируя на события, - в том числе описание реакций на эти события. Состояние(State) - это ситуация в жизни объекта, на протяжении которой он удовлетворяет некоторому условию, осуществляет определенную деятельность или ожидает какого-то события.

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

Событие (Event) - это спецификация существенного факта, который происходит во времени и пространстве. В контексте автоматов событие - это стимул, способный вызвать срабатывание перехода. Переход (Transition) - это отношение между Двумя состояниями, показывающее, что объект, находящийся в первом состоянии, должен выполнить некоторые действия и перейти во второе состояние, как только произойдет определенное событие и будут выполнены заданные условия. Деятельность (Activity) -это продолжающееся неатомарное вычисление внутри автомата. Действие (Action) - это атомарное вычисление, которое приводит к смене состояния или возврату значения. Диаграмма состояний изображается в виде графа с вершинами и ребрами.

Общие свойства

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

Содержание

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

  1.  простые и составные состояния;
  2.  переходы вместе с ассоциированными событиями и действиями.

Диаграмма состояний, по сути, составлена из элементов, встречающихся в любом автомате. Она может содержать ветвления, разделения, слияния, состояния деятельности и действий, объекты, начальные и конечные состояния, исторические состояния и т.д., - в общем, к диаграмме состояний применимы все без исключения характеристики автомата. Диаграмму деятельности отличает от диаграммы состояний лишь то, что она состоит в основном из элементов, встречающихся в графе деятельности, и представляет собой разновидность автомата, в котором все или большая часть состояний есть состояния деятельности, а все или большая часть переходов инициируются фактом завершения деятельности в исходном состоянии.

Как и все прочие диаграммы, диаграмма состояний может содержать примечания и ограничения.

Типичные примеры использования

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

Использовать диаграммы состояний для моделирования некоторого динамического аспекта системы можно в контексте практически любого элемента модели. Обычно, однако, диаграммы состояний применяются в контексте системы в целом, подсистемы или класса. Можно присоединять диаграммы состояний и к прецедентам (для моделирования сценария).

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

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

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

Типичные приемы моделирования

Реактивные объекты

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

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

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

При моделировании поведения реактивного объекта вы можете специфицировать действие, привязав его к переходу или изменению состояния. В специальной литературе автомат, все действия которого привязаны к переходам, называется машиной Мили (Mealy), а автомат, все действия которого привязаны к состояниям, машиной Мура (Moore). С математической точки зрения тот и другой обладают одинаковой выразительной мощью. На практике при разработке диаграмм состояний обычно используется комбинация машин Мили и Мура.

Моделирование реактивного объекта складывается из следующих процессов:

  1.  Выберите контекст для автомата - класс, прецедент или систему в целом.
  2.  Выберите начальное и конечное состояния для объекта. Для использования в остальной части модели, возможно, стоит сформулировать пред- и пост условия для начального и конечного состояния.
  3.  Определите устойчивые состояния объекта, - те, в которых он может находиться неопределенно долгое время. Начните с состояний верхнего уровня, а затем переходите к подсостояниям.
  4.  Определите разумное/частичное упорядочение устойчивых состояний на протяжении жизненного цикла объекта.
  5.  Определите, какие события могут инициировать переходы между состояниями. Смоделируйте эти события как триггеры переходов из одного допустимого упорядочения состояний в другое.
  6.  Присоедините действия к переходам (как в машине Мили) и/или к состояниям (как в машине Мура).
  7.  Рассмотрите, как можно упростить автомат за счет использования подсостояний, ветвлений, разделений, слияний и исторических состояний.
  8.  Проверьте, что любое из состояний достижимо при некоторой комбинации событий.
  9.  Убедитесь в отсутствии тупиковых состояний, то есть таких, из которых нет переходов ни при какой комбинации событий.
  10.  Трассируйте автомат вручную или с помощью инструментальных средств и проверьте, как он ведет себя при ожидаемых последовательностях событий и реакций на них.

На рис. 2 показана диаграмма состояний для разбора простого контекстно-свободного языка. Примеры таких языков можно найти в системах, для которых входной или выходной поток составляют XML-сообщения. В таких случаях проектируется автомат для разбора потока символов, удовлетворяющего синтаксису языка:

сообщение: ' < ' строка ' >' строка ';'

Первая строка представляет тэг, вторая - тело сообщения. Из данного потока символов извлекаются только сообщения, удовлетворяющие правилам синтаксиса.

Из рисунка видно, что для автомата предусмотрены только три устойчивых состояния: Ожидание, ПолучениеЛексемы и ПолучениеТела. Диаграмма состояний спроектирована в виде машины Мили - действия привязаны к переходам. На самом деле в автомате есть только одно представляющее интерес событие - вызов putс фактическим параметромс(символом). В состоянии Ожиданиеавтомат отбрасывает все символы, не интерпретируемые как начало лексемы (это специфицировано сторожевым условием). При обнаружении начала лексемы состояние объекта изменяется на ПолучениеЛексемы. Находясь в этом состоянии, автомат сохраняет все символы, не интерпретируемые как конец лексемы (это тоже специфицировано сторожевым условием). Обнаружив конец лексемы, объект переходит в состояние ПолучениеТела. В этом состоянии автомат сохраняет все символы, не интерпретируемые как конец сообщения (см. сторожевое условие). Как только получен конец сообщения, состояние объекта меняется на Ожидание; возвращается значение, показывающее, что сообщение разобрано и автомат готов к приему следующего.

Рис. 2. Моделирование реактивных объектов

Обратите внимание, что эта диаграмма описывает автомат, работающий непрерывно - в нем нет конечного состояния.


 

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

32107. Правовые основы стандартизации и сертификации в Рф. Характеристика ФЗ Техническом Регулировании, об обеспечении единства измерении,о защите прав потребителей, об основах туристской деятельности в РФ 31.5 KB
  Целями Федерального закона являются: 1 установление правовых основ обеспечения единства измерений в Российской Федерации; 2 защита прав и законных интересов граждан общества и государства от отрицательных последствий недостоверных результатов измерений; 3 обеспечение потребности граждан общества и государства в получении объективных достоверных и сопоставимых результатов измерений используемых в целях защиты жизни и здоровья граждан охраны окружающей среды животного и растительного мира обеспечения обороны и безопасности государства...
32108. Структура ряда динами. Проверка ряда на наличие тренда 97 KB
  Проверка ряда на наличие тренда. Всякий ряд динамики теоретически может быть представлен в виде составляющих: тренд основная тенденция развития динамического ряда к увеличению либо снижению его уровней; циклические периодические колебания в том числе сезонные; случайные колебания. Изучение тренда включает два основных этапа: ряд динамики проверяется на наличие тренда; производится выравнивание временного ряда и непосредственное выделение тренда.
32109. Понятие индекса 289.5 KB
  В экономическом анализе индексы используются не только для сопоставления уровней изучаемого явления но главным образом для определения экономической значимости причин объясняющих абсолютное различие сравниваемых уровней. Далее приведены два наиболее распространенных определения понятия экономический индекс: Индекс это показатель сравнения двух состояний одного и того же явления простого или сложного состоящего из соизмеримых или несоизмеримых величин. Индекс это относительная величина показывающая во сколько раз уровень...
32110. Ряды динамики. Классификация 134.5 KB
  Ряд динамики хронологический ряд динамический ряд временной ряд это последовательность упорядоченных во времени числовых показателей характеризующих уровень развития изучаемого явления. Всякий ряд динамики включает следовательно два обязательных элемента: вопервых время и вовторых конкретное значение показателя или уровень ряда. Интервальный ряд динамики последовательность в которой уровень явления относится к результату накопленному или вновь произведенному за определенный интервал времени.
32111. LA VALEUR STYLISTIQUE DES PRONOMS 12.25 KB
  2)Dans la conversation on emploie le pronom tu pour sadresser а ses proches, aux membres de la famille, aux enfants on use, au contraire, du pronom vous pour aborder les personnes que lon ne connait pas assez bien ou avec qui on ne se permet pas de familiarité.
32112. LADJECTIF ET SES SYNONYMES GRAMMATICAUX 11.47 KB
  L'djectif fit l fonction de differents termes: epithetecompl determintif dhernt directement u nom ttribut determinnt predictif detchee. L vleur expressive de l'djectif dns toutes ces fonctions depend en grnde mesure de s plce dns l phrse. L'djectif designe ses trits prticuliers ses qulités et ses defuts.
32113. La syntaxe expressive 13.61 KB
  Y. Skrebnev considere comme neutre une proposition а deux termes, а lordre des mots direct et qui ne contient pas de transposition, cest а dire quil ny a pas dasymetrie forme/fonction (ils communiquent а la proposition des caracteristiques specifiques dordre fonctionnel, emotionnel, expressif)
32114. Les figures de construction 12.9 KB
  Les constructions parallиles, ce sont deux ou plusieurs phrases ou expressions ayant la meme structure syntaxique où setablissent les correspondances entre les idées: Quand un Anglais rencontre un Anglais, il lui dit
32115. Linversion 11.24 KB
  Le COD se place normalement apres le verbe. Mais il se place en tete de la proposition. EX : Aux multitudes asservies, martyrisйes, provisoirement vaincues, Barbusse indiquait le chemin de la libйration.