Представления деятельности и взаимодействия как виды динамического представления модели
Представление деятельности — это особая форма конечных автоматов, которая отображает процесс вычисления и потоки работ. Графически представление деятельности изображается в виде диаграммы деятельности, моделирующей состояния производимых вычислений, в отличие от состояний объекта (рис. 22). Объект находится в состоянии деятельности до завершения процесса вычислений. По завершении одной деятельности он переходит к следующей (и к следующему состоянию). Переход по завершению в диаграмме деятельности запускается тогда, когда закончилась вся предыдущая деятельность. Обычно у состояния деятельности нет переходов по наступлению событий, однако его могут прервать переходы из внешних состояний.
Представление деятельности изображается в виде совокупности состояний деятельности и может содержать состояния действия (action states). Состояния действия, в отличие от состояний деятельности, мгновенны и не допускают переходов во время своего выполнения. Состояния действия обычно используются в кратковременных операциях, например при учете системных ресурсов. Представление деятельности может иметь разветвления (branches), а также развилки (forking) управления между параллельными нитями. Параллельные нити представляют собой деятельности, которые объекты или люди могут совершать одновременно.
В целом представление деятельности напоминает обычную блок-схему, с одним существенным отличием — в ней допускается не только последовательное, но и параллельное управление потоком работ.
Рис. 22. Диаграмма деятельности
Состояния деятельности изображаются в виде прямоугольников с закругленными боковыми сторонами (вид деятельности указывается внутри этого прямоугольника). Нотация деятельности отличается от нотации состояния тем, что в ней у прямоугольников закруглены не углы, а целые стороны. Простые переходы по завершению изображаются в виде стрелок. Разветвления изображаются как переходы со сторожевыми условиями или в виде ромбов, из которых выходит несколько помеченных стрелок. Развилка или слияние управления выглядят в виде стрелок, которые входят или выходят из жирной черты — линейки синхронизации. На рис. 22 представлена диаграмма деятельности для обработки заказа в театральной кассе.
В ситуациях, когда на диаграмме нужно указать внешние события, используется изображение запуска перехода. Если на диаграмме требуется изобразить много переходов по событиям, то следует использовать диаграмму состояний.
Иногда на диаграмме деятельности нужно соотносить деятельности и те объекты, которые несут за них ответственность, — например, сгруппировать вместе все деятельности одной организации. Разделение ответственности можно изобразить, поделив всю диаграмму на части вертикальными линиями, в результате чего диаграмма напоминает плавательные дорожки.
Помимо потока управления на диаграммах деятельности можно изображать поток объектов-значений. В потоке объектов-значений участвует объект, являющийся входным параметром для одной деятельности и выходным — для другой. Объект - результирующее значение изображается в виде пунктирной стрелки, идущей от деятельности к состоянию объекта, а входное значение — в виде пунктирной стрелки, идущей в обратном направлении, то есть от состояния объекта к деятельности.
Если результатом выполнения деятельности является несколько объектов-значений или если за ней следует несколько потоков управления, то стрелки начинаются от знака развилки (fork). Точно так же, в случае наличия нескольких входных значений, стрелки заканчиваются на знаке слияния (join).
На рис. 23 показана диаграмма деятельности, в которой «плавательным дорожкам» приписаны как деятельности, так и потоки объектов.
Рис. 23. «Плавательные дорожки» и потоки объектов
На диаграммах деятельности невозможно изобразить все подробности процесса вычислений. Как правило, эти диаграммы показывают потоки деятельности, но не объекты, которые в них участвуют. Такие диаграммы являются отправной точкой проектирования. Далее каждая деятельность должна быть развернута в одну или несколько операций, каждую из которых реализует конкретный класс. Это развертывание выражается в диаграммах кооперации.