
ТСПП - МЕТОДИЧКА UML
.pdfСрабатывание параллельного перехода происходит следующим образом. В первом случае (переход-соединение) переход срабатывает, если имеет место событие-триггер для всех исходных состояний этого перехода, и выполнено (при его наличии) сторожевое условие. При срабатывании перехода-соединения одновременно покидаются все исходные состояния перехода (состояния 1 и 2) и происходит переход в целевое состояние. При этом каждое из исходных состояний перехода должно принадлежать отдельному подавтомату, входящему в состав автомата (процессу 1).
Во втором случае (ветвление) происходит расщепление автомата на два подавтомата, образующих параллельные ветви вложенных подсостояний. При этом после срабатывания перехода моделируемый
объект одновременно будет находиться во всех целевых состояниях этого перехода (состояния 3 и 4). Далее процесс изменения состояний
будет протекать согласно ранее рассмотренным правилам для составных состояний.
Переходы между составными состояниями
Переход, стрелка которого соединена с границей некоторого составного состояния, обозначает переход в составное состояние (переход b на рис. 2.27). Он эквивалентен переходу в начальное состояние каждого из подавтоматов (возможно, единственному), входящих в состав данного суперсостояния. Переход, выходящий из составного состояния (переходы f и g на рис. 2.27), относится к каждому из вложенных подсостояний. Это означает, что объект может покинуть составное суперсостояние, находясь в любом из его подсостояний. Для этого вполне достаточно выполнения события и сторожевого условия.
61

Рис. 2.27. Различные варианты переходов в (из) составное состояние
Иногда желательно реализовать ситуацию, когда выход из
отдельного вложенного состояния соответствовал бы выходу и из составного состояния тоже. В этом случае изображают переход,
который непосредственно выходит из вложенного подсостояния за границу суперсостояния (переход с на рис. 2.27). Аналогично, допускается изображение переходов, входящих извне составного состояния в отдельное вложенное состояние (переход а на рис. 2.27).
Синхронизирующие состояния
Как уже было отмечено, поведение параллельных подавтоматов независимо друг от друга, что позволяет реализовать многозадачность в программных системах. Однако в отдельных случаях может возникнуть
необходимость учесть в модели синхронизацию наступления отдельных событий. Для этой цели в языке UML имеется специальное псевдосостояние, которое называется синхронизирующим состоянием.
Синхронизирующее состояние (synch state) обозначается небольшой окружностью, внутри которой помещен символ звездочки "*". Оно используется совместно с переходом-соединением или переходом-ветвлением для того, чтобы явно указать события в других подавтоматах, оказывающие непосредственное влияние на поведение данного подавтомата.
62
Выводы.
∙По своему назначению диаграмма состояний не является обязательным представлением в модели и как бы «присоединяется» к тому элементу, который, по замыслу разработчиков, имеет нетривиальное поведение в течение своего жизненного цикла.
∙Наличие у системы нескольких состояний, отличающихся от простой дихотомии «исправен – неисправен», «активен – неактивен», «ожидание – реакция на внешние действия», уже служит признаком необходимости построения диаграммы состояний.
∙При выделении состояний и переходов следует помнить, что
длительность срабатывания отдельных переходов должна быть существенно меньшей, чем нахождение моделируемого объекта в соответствующих состояниях.
∙Каждое из состояний должно характеризоваться определенной устойчивостью во времени.
∙При разработке диаграммы состояний нужно постоянно следить, чтобы объект в каждый момент мог находиться только в единственном состоянии.
∙Следует обязательно проверять, что никакие два перехода из одного состояния не могут сработать одновременно. (требование отсутствия конфликтов у переходов).
∙Если параллельность по замыслу разработчика отсутствует, то
необходимо ввести дополнительные сторожевые условия либо изменить существующие, чтобы исключить конфликт переходов. При наличии
параллельности следует заменить конфликтующие переходы одним параллельным переходом типа ветвления.
63

∙Использование исторических состояний оправдано в том случае, когда необходимо организовать обработку исключительных ситуаций (прерываний) без потери данных или выполненной работы.
∙Нужно помнить, что каждый из подавтоматов может иметь только одно историческое состояние. В противном случае возможны ошибки, особенно когда подавтоматы изображаются на отдельных диаграммах состояний.
На рис. 2.28 приведен пример диаграммы состояния и используемые в ней основные нотации [ 4 ].
Если количество состояний велико, то можно рисовать диаграммы автомата с требуемой степенью детализации. составными (4)
.
64

Составное состояние делится в свою очередь на составное последовательное (5) и составное ортогональное (6).
Переходы бывают простые, сегментированные (7 и 8) и составные
(9 и 10). Простые переходы осуществляются по событию (11) или по
завершении (12) и всегда ведут из одного исходного состояния в одно целевое состояние. Переходы могут иметь сторожевые условия (13).
65

Специальными состояниями, разделяющими сегменты сегментированного перехода, могут быть: состояние выбора (17) и
переходное состояние (18), а для составного перехода — развилка (15) и слияние (16).
Кроме названных, к специальным состояниям относятся: начальное
(14), поверхностное (19) и глубинное (20) исторические состояния,
состояние прекращения выполнения (21) и заключительное состояние (22).
Дополнительные удобства представляют точки входа (23 и 24) и точки выхода (25 и 26), которые применяются на составных и
ссылочных состояниях (27)
66

2.5 Диаграммы деятельности
При моделировании поведения проектируемой или анализируемой системы возникает необходимость не только представить процесс изменения ее состояний, но и детализировать особенности
алгоритмической и логической реализации выполняемых системой операций.
Для моделирования процесса выполнения операций в языке UML используются так называемые диаграммы деятельности.
Диаграммы деятельности (Activity Diagrams) являются представлением алгоритмов неких действий (активностей), выполняющихся в системе.
Хотя диаграмма деятельности предназначена для моделирования поведения систем, время в явном виде отсутствует на этой диаграмме. Ситуация здесь во многом аналогична диаграмме состояний.
Действие и деятельность
Действие является атомарным, непрерываемым извне, безусловным
изавершаемым. Каждое действие имеет присущие ему наборы входных
ивыходных параметров (они называются контактами (pin)). Как
67
правило, эти наборы фиксированы по числу и типам параметров, но бывают и действия с изменяемым числом параметров.
Деятельность (activity) в UML — это описание поведения в форме графа деятельности. Деятельность в UML моделирует то же, что и действие, т. е. какую-то содержательную активность во время работы системы.
В таблица 1 проведено сопоставление понятий "действие" и "деятельность" в UML.
|
|
Таблица 1 |
|
|
|
Характеристика |
Действие |
Деятельность |
|
|
|
Внешнее событие |
Не прерывает |
Может прерваться и |
|
выполнения |
завершить выполнение |
|
|
|
Завершаемость |
Всегда завершается |
Может продолжаться |
|
самостоятельно |
неограниченно долго |
|
|
|
Внутренняя |
Не моделируется в |
Может быть раскрыта на |
структура |
UML |
отдельной диаграмме |
|
|
|
Время |
Пренебрежимо |
Продолжительное |
выполнения |
мало |
|
|
|
|
Если не важно различие между действием и деятельностью и нужно употребить более общее понятие, то применяется термин активность
Основным направлением использования диаграмм деятельности является визуализация особенностей реализации операций классов, когда необходимо представить алгоритмы их выполнения.
В контексте языка UML деятельность (activity) представляет собой некоторую совокупность отдельных вычислений, выполняемых автоматом. При этом отдельные элементарные вычисления могут приводить к некоторому результату или действию (action). На
68

диаграмме деятельности отображается логика или последовательность перехода от одной деятельности к другой, при этом внимание фиксируется на результате деятельности. Сам же результат может
привести к изменению состояния системы или возвращению некоторого значения.
Граф деятельности
Граф деятельности (activity graph) — это множество сущностей, которыми являются действия или деятельности, и отношения между этими сущностями, которые задают порядок их выполнения.
На диаграмме деятельности применяется ряд значков, которые на самом деле не являются сущностями, хотя и являются узлами графа деятельности. Это так называемые узлы управления. Для UML 1 узлы управления перечислены в таблице 2.
Таблица 2.
69
Каждая диаграмма деятельности должна иметь единственное начальное и единственное конечное состояния. Они имеют такие же обозначения, как и на диаграмме состояний. При этом каждая
деятельность начинается в начальном состоянии и заканчивается в конечном состоянии. Саму диаграмму деятельности принято располагать таким образом, чтобы действия следовали сверху вниз. В
этом случае начальное состояние будет изображаться в верхней части диаграммы, а конечное – в ее нижней части.
Переходы
При построении диаграммы деятельности используются только нетриггерные переходы, т. е. такие, которые срабатывают сразу после завершения деятельности или выполнения соответствующего действия. Этот переход переводит деятельность в последующее состояние сразу, как только закончится действие в предыдущем состоянии. На диаграмме такой переход изображается сплошной линией со стрелкой.
Если из состояния действия выходит единственный переход, то он может быть никак не помечен. Если же таких переходов несколько, то сработать может только один из них. Именно в этом случае для каждого
из таких переходов должно быть явно записано сторожевое условие в прямых скобках. При этом для всех выходящих из некоторого
состояния переходов должно выполняться требование истинности только одного из них. Подобный случай встречается тогда, когда
последовательно выполняемая деятельность должна разделиться на альтернативные ветви в зависимости от значения некоторого промежуточного результата. Такая ситуация получила название ветвления, а для ее обозначения применяется специальный символ.
70