Шаг 156.
Унифицированный язык моделирования UML.
Понятие диаграммы деятельности

    На этом шаге рассмотрим понятие диаграммы деятельности в UML.

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

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

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

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

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

    Хотя на самом деле процесс строительства намного сложнее, вышеприведенное описание дает представление об основных операциях. В реальных проектах множество разных процессов можно вести параллельно: например, электрики работают одновременно с водопроводчиками и столярами. Кроме того, вы обнаружите в этих процессах условия и ветвление. Скажем, в зависимости от качества грунта вам придется либо выполнять взрывные работы, либо копать, либо размывать почву. Могут также присутствовать итерации: например, строительная инспекция обнаружила какое-то серьезные нарушения, в результате чего приходится ломать и переделывать часть здания.

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

    При разработке программных систем возникает сходная проблема: как лучше всего смоделировать такие динамические аспекты системы, как поток работ или операцию? И здесь у вас есть два основных пути, аналогичных использованию диаграмм Гантта и Перта.

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

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


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

    Такие диаграммы подобны графикам Перта. По сути, диаграмма деятельности – это блок-схема, отображающая деятельность, развертывающуюся во времени. Диаграмму деятельности можно представить как диаграмму взаимодействия, "вывернутую наизнанку". Диаграмма взаимодействия рассматривает объекты, через которые проходят сообщения; диаграмма деятельности рассматривает операции, выполняемые между объектами. Семантическое различие весьма тонкое, но в результате мы получаем принципиально различные взгляды на мир.

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

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

    На следующем шаге рассмотрим структуру диаграммы деятельности в UML.




Предыдущий шаг Содержание Следующий шаг