Добавление состояния на диаграмму состояний и редактирование его свойств



ЛАБОРАТОРНАЯ РАБОТА № 13

Тема. Построение диаграммы состояний.

Цель работы: изучение инструментария программного средства Rational Rose, формирование умений построения диаграмм состояний и редактирование свойств их элементов.

Задачи работы:

изучить инструментарий программного средства Rational Rose;

освоить приемы построения диаграмм состояний;

построить диаграмму состояний в среде IBM Rational Rose 2003.

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

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

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

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

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

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

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

 

Рис. 1 Пример диаграммы состояний для технического устройства типа компьютер

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

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

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

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

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

Конечное (финальное) состояние представляет собой частный случай состояния, которое также не содержит никаких внутренних действий (псевдосостояния). В этом состоянии будет находиться объект по умолчанию после завершения работы автомата в конечный момент времени.

 

 

Рис. 4. Графическое изображение начального и конечного состояний на диаграмме состояний

Переход

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

 

Переход осуществляется при наступлении некоторого события: окончания выполнения деятельности (doactivity), получении объектом сообщения или приемом сигнала. На переходе указывается имя события Кроме того, на переходе могут указываться действия, производимые объектом в ответ на внешние события при переходе из одного состояния в другое. Срабатывание перехода может зависеть не только от наступления некоторого события, но и от выполнения определенного условия, называемого сторожевым условием. Объект перейдет из одного состояния в другое в том случае, если произошло указанное событие и сторожевое условие приняло значение «истина».

 

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

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

Сторожевое условие

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

 

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

 

В общем случае из одного состояния может быть несколько переходов с одним и тем же событием-триггером. При этом никакие два сторожевых условия не должны одновременно принимать значение «истина». Каждое из сторожевых условий необходимо вычислять всякий раз при наступлении соответствующего события.

 

Пример1

 

 

Рис. 5. Диаграмма состояний для моделирования почтовой программы-клиента

Пример 2

Диаграмма состояний для класса Order (Заказ).Заказ может находится в нескольких состояния:

 

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

Диаграмма состояний для класса Order представлена на рис.1:


Рисунок 1. Диаграмма состояний для класса Order

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

В состоянии Открыт имеется выходное действие и переход в себя. Переход в себя означает, что событие инициирует переход, происходит выход из текущего состояния, выполняется некоторое действие, после чего происходит возврат в исходное состояние. Поскольку при переходе в себя происходит выход из состояния и повторный вход в него же, то выполняется действие, ассоциированное с переходом, и, кроме того, действие при входе в состояние. В состоянии Открыт к заказу добавляются новые пункты, причем их можно добавить только в том случае, если есть незаполненные пункты. Для показа этого мы использовали переход в себя "Добавление пункта заказа" со сторожевым условием "заполнены не все пункты заказа". Выход из этого состояния состоится в двух случаях - или когда выполнится сторожевое условие "заполнены все позиции заказа" (при этом заказ перейдет в состояние Закрыт), или когда наступит событие "заказ отменен" (при этом заказ перейдет в состояние Отменен). При выходе из состояния выполнится действие выхода "* OrderItem.Create()" (создание пункта заказа). Символ "*" указывает на то, что это действие выполнится много раз (по числу добавленных пунктов в заказ).

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

В состояние Отменен заказ переходит из состояния Открыт при наступлении события "заказ отменен". При выходе из него выполняется действие выхода "Сохранить дату отмены". При переходе из этого состояния в конечное выполняется действие "* OderItem.Delete()" (удаление пункта заказа). Здесь также стоит "*", поскольку это действие будет выполняться много раз.

Пример3

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

 

 

 

Пример4

 

 

 


ОПИСАНИЕ ПРЕДМЕТНОЙ ОБЛАСТИ

Создадим диаграмму состояний модели банкомата, зададим имя Диаграмма состояний ATM, а в секцию ее документации введем текст "Диаграмма состояний описывает конечный автомат банкомата".

МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ

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

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

Выделить логическое представление (Logical View) или представление вариантов использования (Use Case View) в браузере проекта и выполнить операцию контекстного меню: New  Statechart Diagram Новая  Диаграмма состояний).

Раскрыть логическое представление (Logical View) в браузере проекта и выделить рассматриваемый класс, операцию класса, пакет, или раскрыть представление вариантов использования (Use Case View) и выбрать вариант использования, после чего выполнить операцию контекстного меню: New  Statechart Diagram (Новая  Диаграмма состояний ).

Выполнить операцию главного меню: Browse  State Machine Diagram (Обзор  Диаграмма состояний), после чего следует выбрать представление и тип разрабатываемой диаграммы.

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

 

Таблица 1. Назначение кнопок специальной панели инструментов диаграммы состояний

 

 

 

Добавление состояния на диаграмму состояний и редактирование его свойств

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

Для диаграммы состояний модели банкомата в качестве имени первого добавленного состояния изменим предложенное программой по умолчанию имя NewState на Ожидание карточки. Задать имя состояния можно либо непосредственно при добавлении нового состояния на диаграмму состояний, либо открыв окно спецификации свойств нового состояния. Окно создания приведено на рисунке 1.

 

Рисунок 1 - Окно создания диаграммы состояний

 

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

 

Добавление состояния приведено на рисунке 2. Диалоговое окно состояния приведено на рисунке 3.

Рисунок 2. – Добавление состояния на диаграмму

Рисунок 3 – Диалоговое окно свойств состояния.

В диалоговое окно можно занести всю информацию по данному состоянию

При необходимости в диалоговом окне спецификации свойств выбранного состояния можно задать вложенное историческое состояние. Для этого следует выставить отметку у свойства State/activity history (Историческое состояние/деятельность) и нажать кнопку Apply. В результате внутри исходного состояния появится вложенное историческое состояние


Дата добавления: 2021-07-19; просмотров: 484; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!