Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по UML / Л11. Диаграммы .doc
Скачиваний:
61
Добавлен:
02.06.2015
Размер:
426.5 Кб
Скачать

Переход и событие

При изменении состояния объект переходит в другое состояние.

Срабатывание перехода (fire) - выполнение перехода из одного состояния в другое.

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

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

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

Рис. Графическое изображение триггерного (а) и нетриггерного (б) переходов на диаграмме состояний

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

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

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

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

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

Рис. Выражение действия перехода на диаграмме состояний

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

Составное состояние и подсостояние

Составное состояние (composite state) - сложное состояние, которое состоит из других вложенных в него состояний.

Рис. Графическое представление составного состояния с двумя вложенными в него последовательными подсостояниями

Последовательные подсостояния (sequential substates) - вложенные состояния состояния-композита, в рамках которого в каждый момент времени объект может находиться в одном и только одном подсостоянии.

Рис. Пример составного состояния с двумя вложенными последовательными подсостояниями

Параллельные подсостояния (concurrent substates) - вложенные состояния, используемые для спецификации двух и более подсистем, которые могут выполняться параллельно внутри составного состояния.

Рис.  Графическое изображение состояния-композита с вложенными параллельными подсостояниями

Несовместимое подсостояние (disjoint substate) - подсостояние, в котором подсистема не может находиться одновременно с другими подсостояниями одного и того же составного состояния.

Сложные переходы и псевдосостояния

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

Синхронизирующее состояние обозначается небольшой окружностью, внутри которой помещен символ звездочки "*". Оно используется совместно с переходом-слиянием | или переходом-разделением | для того, чтобы явно указать события в других системах (потоках управления), оказывающие непосредственное влияние на поведение данной системе (потока управления).

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

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

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

3. Диаграмма деятельности

Диаграммы деятельности - частный случай диаграмм состояний.

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

В этом плане ДД напоминает блок-схему алгоритма.

В контексте языка UML деятельность представляет собой совокупность отдельных вычислений.

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

При разработке диаграммы используют понятия:

  • деятельность;

  • действие;

  • переход.

Деятельность – это крупный шаг в процессе, моделируемом в ДД.

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

Эквивалентом деятельности на схеме алгоритма можно считать блок.

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

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

Деятельность – это набор действий.

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

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

Действие атомарно.

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

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

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

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

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

Каждая диаграмма деятельности должна иметь единственное начальное и конечное состояния.

Они имеют такие же обозначения, как и на диаграмме состояний.

Рис. Начальное состояние. Конечное состояние. Ветвление (символ решения и соединения).

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

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

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

Рис. Различные варианты ветвлений на диаграмме деятельности

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

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

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

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

Рис. Диаграмма деятельности для примера регистрации пассажиров в аэропорту