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

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

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

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

 

Рис. 9.24

 

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

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

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

Решение представляется на диаграмме как ромб с одним или более входящим в него переходом и с одним или более выходящим переходом.

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

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

 

Рис. 9.25

 

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