Джим Арлоу, Айла Нейштадт - UML 2 и Унифицированный процесс. Практический объектно-ориентированный анализ и проектирование (1037782), страница 59
Текст из файла (страница 59)
Разделы деятельности317жество реализаций. Например, на рис. 14.5 описывается простой бизнеспроцесс, а не программная система, и реализации этого процессавообще не используют передачу маркеров!14.6. Разделы деятельностиКаждый раздел деятельности представляет высокоуровневую группировку взаимосвязанных действий.Чтобы облегчить чтение диаграмм деятельности, можно разбить деятельности на разделы с помощью вертикальных, горизонтальных иликривых линий. Каждый раздел деятельности – это группа взаимосвязанных действий с высоким уровнем вложенности. Иногда разделыдеятельности называют плавательными дорожками (swimlanes).
Разбиение на разделы – мощный метод. При правильном использованиион может существенно упростить понимание диаграмм деятельности.В UML 2 семантику разделов деятельности определяет разработчик модели. Разделы не имеют собственной семантики, поэтому могут использоваться для разбиения диаграмм деятельности любым удобным способом! Разделы деятельности обычно применяются для представления:• прецедентов;• классов;• компонентов;• организационных единиц (в бизнесмоделировании);• ролей (в моделировании рабочих потоков).Но этим не ограничиваются. Например, в проектных моделях распределенных систем разделы деятельности могут использоваться дажедля моделирования распределения процессов на физических машинах.У каждого множества разделов должно быть единственное измерение,описывающее его базовую семантику.
В рамках этого измерения разделы могут быть иерархично вложенными. На рис. 14.6 показана деятельность, имеющая иерархично вложенное множество разделов деятельности.Местонахождение – это измерение, и в рамках этого измерения существует иерархия разделов, как показано на рис. 14.7.
Эта диаграмма моделирует бизнеспроцесс создания курса нашей партнерской компанииZuhlke Engineering AG. Многие из их курсов разрабатываются намив Лондоне.Часто разделы деятельности и параллельные потоки управления взаимосвязаны. Моделирование параллелизма на диаграммах деятельности подробно рассматривается в разделе 14.8.3. Например, обычноразные подразделения или организационные единицы работают параллельно, затем в некоторый момент происходит их синхронизация.318Глава 14. Диаграммы деятельностиимя измеренияСоздание курсаМестонахождениеЦюрихМаркетингЛондонПланированиеРазработкаПровести экономическоеобоснование курсаРазработать курсСпланировать курсраздел деятельностиПригласить преподавателейАрендовать помещенияПродать курсРис. 14.6. Деятельность с иерархично вложенным множеством разделовДиаграммы деятельности с разделами деятельности превосходно подходят для моделирования подобного процесса.Иногда абсолютно нереально сгруппировать узлы в вертикальные илигоризонтальные разделы, не ухудшив при этом читаемость диаграммы.
В этом случае можно создавать разделы неправильной формы с помощью кривых или обозначать разделы с помощью текста. В UML существует текстовая нотация для разделов деятельности. Пример текстовой нотации приведен на рис. 14.8. Однако обычно к ней прибегаютв самом крайнем случае, потому что графическое представление, какправило, намного нагляднее.Местоположение действия в иерархии раздела можно задать с помощью разделенного двойными двоеточиями пути (pathname); путь указывается в скобках над именем действия.
Если действие встречаетсяв нескольких разделах, через запятую перечисляют имена путей каждого из разделов (рис. 14.8).измерениеПодразделениеЦюрихЛондонразделыдеятельностиМаркетингПланированиеРазработкаРис. 14.7. Иерархия разделов в рамках измерения31914.7. Узлы действияиерархия разделанесколько разделов(Location::London::Development)Develop course(A, B)Some actionРис. 14.8. Примеры текстовой нотации для разделов деятельностиРазделы, обозначенные стереотипом «external», не являются частьюсистемы.Порой необходимо показать на диаграмме деятельности поведение,находящееся, строго говоря, вне области действия системы, напримервзаимодействие системы с некоторой внешней системой.
Это можнопредставить, указав на диаграмме деятельности стереотип «external»прямо над именем раздела. Обратите внимание, что внешний разделне является частью системы и, следовательно, не может входить в какуюлибо иерархию разделов модели.Тщательно выбирая измерения и разделы деятельности, можно, безусловно, добавить на диаграмму деятельности массу полезной информации. Однако эти возможности могут и усложнить диаграмму, особеннопри наличии нескольких измерений и сложной иерархии разделов! Напрактике необходимо стремиться к использованию на одной диаграмме не более трех уровней иерархии (включая измерение) и не болеедвух измерений.Всегда опирайтесь на собственное мнение и применяйте разделы деятельности только в случае, если они действительно повышают ценность модели.14.7. Узлы действияУзлы действия (action node) исполняются в следующих случаях:•маркеры одновременно поступили на все входящие ребра•и входящие маркеры удовлетворяют всем локальным предусловиям узла действия.Это проиллюстрировано на рис.
14.9.Узлы действия осуществляют операцию логическое И над своими входящими маркерами – узел не готов к исполнению до тех пор, пока маркеры не будут присутствовать на всех входящих ребрах. Даже если всенеобходимые маркеры присутствуют, узел будет исполняться толькопосле удовлетворения его локального предусловия.320Глава 14. Диаграммы деятельностивходящий маркерУзел действияузел действия не исполняетсяУзел действияузел действия не исполняетсяУзел действияузел действия исполняетсяисходящий маркерРис. 14.9. Условия исполнения узлов действияУзлы действия предлагают управляющие маркеры на всех своих исходящих ребрах – неявное ветвление.По завершении выполнения узла действия проверяется локальное постусловие.
Если оно удовлетворено, узел одновременно предлагает маркеры на всех своих исходящих ребрах. Это ветвление является неявным, поскольку один узел действия может породить множество потоков. В отличие от обычных блоксхем, диаграммы деятельности по сути своей параллельны.Поскольку в узлах действия производятся некоторые действия, обычно их имена являются глаголами или глагольными группами. Спецификация UML не дает никаких рекомендаций по присваиванию именузлам действия. Мы пользуемся соглашением, по которому имя узланачинается с большой буквы, все остальные слова, входящие в имя,пишутся с маленькой буквы через пробелы. Единственное исключениеиз этого правила: узел действия содержит ссылку на другой элементмодели.
В этом случае имя элемента модели всегда используется какесть, без изменения регистра или добавления пробелов. На рис. 14.10показано два примера. В верхнем примере происходит ссылка на чтотоСоздать заказ«заказ» ссылается на какой!то заказСоздать Order«Order» ссылается на элементмодели под именем OrderРис. 14.10. Примеры имен узлов действия32114.7. Узлы действияпод названием «заказ», тогда как нижний пример явно ссылается накласс Order, который можно найти гдето в модели.Детали действия фиксируются в описании узла действия. Часто этообычное текстовое описание, такое как «Написать письмо», но на этапепроектирования оно превращается в структурированный текст, псевдокод или реальный код.
При моделировании прецедента диаграммадеятельности могла бы опережать поток прецедента на дватри шага.Но это может вызвать трудности, поскольку придется постоянно синхронизировать прецедент и соответствующую диаграмму деятельности.Существует четыре типа узлов действия; они перечислены в табл. 14.1.Подробное обсуждение типов узлов действия можно найти в разделах,указанных в таблице.Таблица 14.1СинтаксисНекотороедействиеИмяСемантикаУзелвызовадействияИнициирует деятельность,или операцию.ПосылкасигналаДействие посылки сигнала – посылает 15.6сигнал асинхронно (отправитель не ожидает подтверждения получения сигнала).Для создания сигнала может приниматьвходные параметры.Узел действия, принимающийсобытиеПринимает событие – ожидает события, 15.6установленного объектомвладельцем,и выдает событие на выходе.Активируется при получении маркерапо входящему ребру.Если нет входящего ребра, запускаетсяпри запуске включающей его деятельности и всегда является активированным.ИмяСигналаПринятьСобытиеУзел действия, приниВыражениемающийдля описания времени событиевремениРазделповедение 14.7.1Принимает событие времени – отвечает 14.7.2на определенное значение времени.Генерирует события времени соответственно своему временному выражению.14.7.1.
Узел вызова действияСамыми распространенными узлами действий являются узлы вызовадействия (call action node). Этот тип узлов может инициировать:• деятельность;• поведение;• операцию.322Глава 14. Диаграммы деятельностиУзел вызова действия может инициировать деятельность, поведениеили операцию.Некоторые примеры синтаксиса узла вызова действия приведенына рис. 14.11.
Как видно из рисунка, синтаксис очень гибок!•Посредством специального символа «грабли» в нижнем правом углу пиктограммы узла можно указать, что действие вызывает другоедействие. Имя узла соответствует имени вызываемой им деятельности.•Можно вызвать поведение – это прямой вызов поведения контекстадеятельности без указания какойлибо конкретной операции.•Можно вызвать операцию, используя стандартный синтаксис операции, описанный в разделе 7.5.3.•Можно вызвать операцию, описывая ее детали на конкретном языке программирования. Это может быть особенно полезным при использовании инструментального средства UML, позволяющего генерировать код из диаграмм деятельности (например, iUML от компании Kennedy Carter, www.kc.com).•С помощью ключевого слова self можно использовать возможностиконтекста деятельности.Узлы вызова действия, используемые в диаграммах деятельности науровне анализа, обычно вызывают поведение.