Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник по ТООМ.doc
Скачиваний:
298
Добавлен:
02.05.2014
Размер:
7.46 Mб
Скачать

4. Моделирование динамики поведения сппр.

Для описания поведения объектов на языке UML разработаны соответствующие диаграммы, показанные на рис. 4.1.

Рис. 4.1. Диаграммы поведения системы

Для описания динамики используются диаграммы поведения (behavior diagrams), которые подразделяются на:

  • диаграммы состояний (statechart diagrams),

  • диаграммы активностей (activity diagrams) и

  • диаграммы взаимодействия (interaction diagrams), состоящие из:

  • диаграмм последовательности (sequence diagrams)

  • диаграмм взаимодействий (collaboration diagrams)

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

4.1. Представление конечных автоматов. Диаграмма активности. Диаграмма состояний.

Представление конечных автоматов описывает динамику поведения объектов, отражая их жизненный цикл. Каждый объект при этом рассматривается как изолированная сцщность, которая общается с остальным миром, реагируя на различные события (events). Событиями могут быть все виды изменений, которые опознает объект: получение вызова, передача сигнала, изменения определенных значений или истечение заданного промежутка времени. Таким образом, событием считается все, что может повлиять на объект. Происшествия реального мира моделируются как сигналы, поступающие из внешнего мира в систему.

Диаграммы состояний определяют модель конечного автомата, описывающего поведение класса. Состоянием (state) называется множество значений объекта одного класса, при которых объект реагирует на события одинаковым образом. Другими словами, все объекты в одном состоянии одинаково реагируют на какое-либо событие и производят в этом случае один и тот же эффект (effect), который может представлять собой действие (action) или деятельность (activity). Конечный автомат описывает небольшое количество состояний, в которых может находиться объект. Для каждого из состояний задаются последствия прихода каждого вида событий – производимый эффект и новое состояние объекта.

Каждое состояние класса задается своей вершиной, для которой определены входные и выходные состояния, а также условия перехода из состояния в состояние (guard condition). Условие – булево выражение значений атрибутов, которое допускает переход, только если оно верно. И действие, и проверка условия представляют собой поведение объекта и обычно реализуются в виде операций.

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

Автоматы, состояния и переходы.

Формализм машины конечных состояний (FSM, Final State Machine) представляет собой следующий кортеж:

FSM = (Q,,,,q0),

Qмножество символов, представляющих состояние,

- множество входных символов,

- множество выходных символов,

- функция перехода (трансформация состояния, transition):

QQ,

q0Qначальное состояние.

FSM может быть представлена в виде ориентированного графа состояний и переходов из одного состояния в другое. Вершины графа представляют собой состояния моделей, в дуги – переходы. Каждая дуга маркирована парой «условие - действие», где первое представляет условие перехода, а второе – результат.

На рис. приведен в качестве примера граф модели, у которой Q-{α, β}, Σ={a,b},

 ={ε,u,v}, q0=α и σ(α, b)=(β,v), σ(β,α)=(α,u). Выходной символ ε означает отсутствие действия, он обычно вводится для придания общности и используется для представления автопереходов: σ(α,а)=(α,ε), σ(β,b)=(β,ε). Входной символ b переводит модель в состояние β и на выходе появляется символ v. Последовательность символов входного алфавита вызывает последовательную смену состояний и производит последовательности символов выходного алфавита.

Рис.

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

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

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

Рис. Пиктограммы для диаграмм состояний

Состояние – это некоторое положение в жизни объекта, при котором он удовлетворяет определенному условию, выполняет некоторое действие или ожидает события.

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

Действия, сопровождающие переходы в определенное состояние, можно рассматривать как входные действия (entry action) для этого состояния. И наоборот, действия, сопровождающие переходы из данного состояния, являются для него выходными (exit action). Поведение, возникающее внутри состояния, называется деятельностью (activity). Деятельность начинается при входе в состояние и завершается или прерывается при выходе из него. На рис. показаны внутренние переходы и действия при входе и выходе (в обобщенном виде и на примере).

Рис. Внутренние переходы и действия при входе и выходе

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

Рис. ***. Диаграмма состояний класса «Учебный курс»

Рис.

Рис. 2.30. Фрагмент диаграммы состояний ИСПП

при обработке сигналов тревоги

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

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

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

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

На рис. 7.5 изображено последовательное разбиение состояния на составные части, включая начальное состояние. Изображенная система представляет собой управление автоматом по продаже билетов.

Деление композитного состояния на ортогональные области описывает процесс независимых параллельных вычислений. При входе в ортогональное состояние количество потоков управления увеличивается, так как в каждой из ортогональных областей активизируется одно прямое подсостояние. При выходе из ортогонального состояния количество потоков управления уменьшается. Часто параллельность реализуется в каждом из подсостояний с помощью отдельного объекта, но ортогональные состояния могут также представлять логический параллелизм внутри одного объекта. На рис. *** изображено разбиение композитного состоя­ния «занятие в университете» на параллельные составляющие. Часто бывает удобно использовать фрагмент одного конечного автомата в другом. Автомату можно дать имя и ссылаться на него из состояний других автоматов. Целевой автомат называется вложенным автоматом, а состояние, которое на него ссылается, - ссылкой на вложенный автомат (подавтомат). Это подразумевает (теоретически) подстановку копии того автомата, на который ссылаются (то есть описывающей его функции или процедуры), в место, откуда дела­ется ссылка, - своего рода подпрограмма, реализованная в виде конечного автомата.

Вложенный автомат может определять именованные точки входа и выхода, соединенные с его внутренними состояниями. Эти точки можно использовать при переходе в состояния вложенного автомата, что позволяет скрыть структуру вложенного автомата от внешних клиентов. Вместо вложенного автомата состояние может содержать в себе элементы деятельности. Элементы деятельности (activities) - это продолжительные вычисления или явления, для осуществления которых требуется время и которые могут быть прерваны другими событиями.

На рис. Показано составное состояние с последовательными подсостояниями, моделирующее … dialing.

Составное состояние с последовательными подсостояниями

Составное состояние в сжатом виде.

На рис. Приведен пример составного состояния “занятия в университете” с параллельными подсостояниями.

Параллельные переходы

.

Переход в составное состояние. Переходы во вложенные состояния составного состояния. На конце таких переходов изображаются заглушки (stabs).

Историческое состояние (history state).

Точки перехода.

Статические точки перехода.

Динамические точки перехода.