UML2 и унифицированный процесс. Джим арлоуайла нейштадтпрактический объектно ориентированныйанализ и проектированиеu
Скачать 6.08 Mb.
|
14.3. Диаграммы деятельности и UP Диаграммы деятельности могут использоваться во многих рабочих по токах UP. Благодаря своей гибкости диаграммы деятельности не имеют одного определенного назначения в UP. Они обеспечивают универсальный механизм моделирования поведения и могут использоваться везде, где возникает необходимость в их применении. Мы обсуждаем их в рабо чем потоке анализа, потому что чаще всего эти диаграммы использу ются при анализе. Уникальная способность диаграмм деятельности в том, что они позво ляют моделировать процесс без необходимости определения статиче ской структуры классов и объектов, реализующих процесс. Несомнен но, это очень полезно на ранних этапах анализа при попытках выяс нить, что представляет собой конкретный процесс. 312 Глава 14. Диаграммы деятельности Из собственного опыта можем сказать, что диаграммы деятельности чаще всего используются в следующих случаях. • В процессе анализа: • для графического моделирования потока прецедента. Такое пред ставление является более понятным для заинтересованных сто рон; • для моделирования потока между прецедентами. При этом ис пользуется особая форма диаграммы деятельности – диаграмма обзора взаимодействий (раздел 15.12). • При проектировании: • для моделирования деталей операции; • для моделирования деталей алгоритма. • При моделировании деловой активности: • для моделирования бизнес процесса. Обычно заказчикам проще понимать диаграммы деятельности, по скольку большинство из них имеет представление о блок схемах в той или иной форме. Следовательно, диаграммы деятельности могут быть замечательным средством общения, если они просты. Как будет видно в этой и следующей главах, UML 2 представляет мно го мощных нововведений в синтаксисе и семантике диаграмм деятель ности. Важно не слишком сильно увлекаться всем этим. При создании любой UML диаграммы всегда нужно помнить о целевой аудитории и использовать возможности UML соответственно. Нет смысла приме нять все самые последние нововведения, если никто не поймет диа грамму. 14.4. Деятельности Деятельности – это системы узлов (nodes), соединенных ребрами (edges). Существует три категории узлов: 1. Узлы действия (action nodes) – представляют отдельные единицы работы, элементарные в рамках деятельности; 2. Узлы управления (control nodes) – управляют потоком деятельности; 3. Объектные узлы (object nodes) – представляют объекты, используе мые в деятельности. Ребра представляют потоки деятельности. Существует два типа ребер: 1. Ребра потоков управления (control flows) – представляют поток управления деятельности; Деятельности – это системы узлов, соединенных ребрами. 14.4. Деятельности 313 2. Ребра потоков объектов (object flows) – представляют поток объек тов деятельности. Все типы узлов и ребер будут подробно изучены в последующих раз делах. Давайте рассмотрим пример. На рис. 14.2 показана простая диаграм ма деятельности бизнес процесса Послать письмо. Обратите внимание, что деятельности могут иметь предусловия и постусловия, как и пре цеденты. Предусловия – это условия, которые должны быть истинны ми, чтобы деятельность могла начаться, а постусловия – это условия, которые будут истинными по завершении деятельности. Действия внутри деятельности тоже могут иметь собственные локальные пред условия и постусловия, как показано на рис. 14.2. Деятельности обычно начинаются с одного узла управления, началь ного. Он обозначает начало исполнения при вызове деятельности. Один или более конечных узлов показывают места завершения дея тельности. В примере, изображенном на рис. 14.2, деятельность начинается в на чальном узле. Затем управление переходит вдоль ребра к узлу дейст вия Написать письмо. Этот узел обозначает элементарную часть работы или поведения, поскольку содержит описываемую деятельность. По ток проходит через узлы Адресовать письмо, Отправить письмо и затем к конечному узлу, в котором деятельность завершается. Обычно диаграммы деятельности используются для моделирования прецедента в виде последовательностей действий. На рис. 14.3 пока зан прецедент PaySalesTax (выплата налога с оборота) из главы 4. Этот прецедент может быть представлен в виде диаграммы деятельности, как показано на рис. 14.4. Адресовать письмо Отправить письмо Написать письмо узел действия Послать письмо предусловие: найти тему письма постусловие: письмо отправлено по адресу поток управления деятельность начальный узел конечный узел ребро «localPrecondition» адрес известен «localPrecondition» письмо адресовано Рис. 14.2. Диаграмма деятельности бизнес процесса Послать письмо 314 Глава 14. Диаграммы деятельности Обратите внимание, что диаграмма деятельности – это более компакт ная и графическая форма прецедента. Диаграмма деятельности пред ставляет прецедент как два действия: Вычисление налога с оборота и От правка электронного платежа. Каждое из этих действий могло бы быть представлено в виде отдельной диаграммы деятельности. Вероятно, так и произойдет при проектировании, когда понадобится показать способ реализации этих действий. Актер и его взаимодействие с системой – это структурные элементы, поэтому их нет на этой диаграмме. Прецеденты представляют поведение системы как взаимодействие ак теров и системы, тогда как диаграммы деятельности отображают его в виде последовательности действий. Они являются дополнительными представлениями этого поведения. Прецедент: PaySalesT ax Главные актеры: Time Предусловия: 1. Конец налогового периода. Постусловия: 1. TaxAuthority получает соответствующую сумму налога с оборота. Основной поток: 1. Прецедент начинается в конце налогового периода. 2. Система определяет сумму налога с оборота, которую необходимо выплатить TaxAuthority. 3. Система посылает электронный платеж в TaxAuthority. Альтернативные потоки: Нет. ID: 1 Краткое описание: Выплата налога с оборота в налоговое управление по окончанию налогового периода. Второстепенные актеры: T axAuthority Рис. 14.3. Спецификация прецедента PaySalesTax Отправка электронного платежа Вычисление налога с оборота PaySalesTax предусловие: окончание налогового периода постусловие: налоговое управление получает соответствующую сумму налога с оборота Рис. 14.4. Диаграмма деятельности прецедента PaySalesTax 14.5. Семантика деятельности 315 14.5. Семантика деятельности Диаграммы деятельности основаны на технологии сетей Петри. Семантика диаграмм деятельности, как следует из предыдущего изло жения, интуитивно довольно проста. Данный раздел посвящен подроб ному описанию семантики деятельности. Диаграммы деятельности UML 2 основаны на технологиях сетей Пет ри. Сети Петри выходят за рамки нашей книги. Более подробную ин формацию о них можно найти по адресу www.daimi.au.dk/PetriNets/. Диаграммы деятельности моделируют поведение с помощью «игры» маркеров (token game). Эта игра описывает поток маркеров, движу щийся по сети узлов и ребер согласно определенным правилам. Марке ры на диаграммах деятельности UML могут представлять: • поток управления; • объект; • некоторые данные. Состояние системы в любой момент времени определяется расположе нием ее маркеров. В примере на рис. 14.2 маркер – это поток управления, поскольку в рассматриваемом случае между узлами не происходит передачи объ ектов или данных. Маркеры перемещаются вдоль ребра (edge) от начального узла (source node) к целевому узлу (target node). Перемещение маркера происходит только при выполнении всех необходимых условий. Условия меняют ся в зависимости от типа узла. Для узлов, представленных на рис. 14.5 (узлы действия), этими условиями являются: • постусловия начального узла; • сторожевые условия ребра; • предусловия целевого узла. Условия существуют не только для узлов действия, но и для узлов управления и объектных узлов. Узлы управления имеют особую се мантику, которая управляет тем, как передаются маркеры от входных ребер к выходным. Например, начальный узел начинает деятельность, конечный узел (final node) завершает деятельность, а узел объедине ния будет предлагать маркер на своем единственном исходящем ребре только в случае, если маркеры поступили на все его входные ребра. Объектные узлы представляют объекты, существующие в системе. Уз лы управления и объектные узлы подробно обсуждаются в разделах 14.8 и 14.9 соответственно. Рассмотрим «игру» маркеров для деятельности, показанной на рис. 14.5. С началом выполнения деятельности в начальном узле стартует поток 316 Глава 14. Диаграммы деятельности маркера управления. Ни на начальный узел, ни на его выходное реб ро, ни на целевой узел не наложено никаких условий, поэтому маркер автоматически проходит по выходному ребру к целевому узлу Написать письмо. Это инициирует выполнение действия, определенного узлом действия Написать письмо. По завершении действия Написать письмо по ток маркера управления переходит в узел действия Адресовать письмо тогда и только тогда, когда удовлетворено его предусловие адрес извес тен. После выполнения постусловия письмо адресовано управление пере ходит от Адресовать письмо к Послать письмо. И наконец, поскольку усло вий, препятствующих выходу потока из Послать письмо, нет, поток управления прибывает в конечное состояние и деятельность заверша ется. В этом простом примере поток управления проходит по всем узлам действия по очереди, обусловливая их выполнение. Это основная се мантика деятельности. Как уже упоминалось, состояние исполняющейся системы в любой момент времени может быть представлено расположением ее марке ров. Например, когда маркер находится в узле Написать письмо, можно сказать, что система находится в состоянии Написание письма. Однако не каждое выполнение действия или передача маркера создает замет ное изменение в состоянии системы с точки зрения ее конечных авто матов (глава 21). Тем не менее расположение маркеров обеспечивает связь между диаграммами деятельности и диаграммами состояний, которые должны быть гарантированно согласованными для конкрет ного элемента модели. Хотя семантика деятельностей UML 2 описывается «игрой» марке ров, они едва ли когда нибудь реализуются таким образом. По сути, деятельность – это всего лишь описание, для которого возможно мно поток фокуса управления Адресовать письмо Отправить письмо Написать письмо Послать письмо предусловие: найти тему письма постусловие: письмо отправлено по адресу «localPrecondition» адрес известен «localPrecondition» письмо адресовано Рис. 14.5. Диаграмма деятельности Послать письмо 14.6. Разделы деятельности 317 жество реализаций. Например, на рис. 14.5 описывается простой биз нес процесс, а не программная система, и реализации этого процесса вообще не используют передачу маркеров! 14.6. Разделы деятельности Каждый раздел деятельности представляет высокоуровневую группи ровку взаимосвязанных действий. Чтобы облегчить чтение диаграмм деятельности, можно разбить дея тельности на разделы с помощью вертикальных, горизонтальных или кривых линий. Каждый раздел деятельности – это группа взаимосвя занных действий с высоким уровнем вложенности. Иногда разделы деятельности называют плавательными дорожками (swimlanes). Раз биение на разделы – мощный метод. При правильном использовании он может существенно упростить понимание диаграмм деятельности. В UML 2 семантику разделов деятельности определяет разработчик мо дели. Разделы не имеют собственной семантики, поэтому могут исполь зоваться для разбиения диаграмм деятельности любым удобным спосо бом! Разделы деятельности обычно применяются для представления: • прецедентов; • классов; • компонентов; • организационных единиц (в бизнес моделировании); • ролей (в моделировании рабочих потоков). Но этим не ограничиваются. Например, в проектных моделях распре деленных систем разделы деятельности могут использоваться даже для моделирования распределения процессов на физических машинах. У каждого множества разделов должно быть единственное измерение, описывающее его базовую семантику. В рамках этого измерения раз делы могут быть иерархично вложенными. На рис. 14.6 показана дея тельность, имеющая иерархично вложенное множество разделов дея тельности. Местонахождение – это измерение, и в рамках этого измерения существу ет иерархия разделов, как показано на рис. 14.7. Эта диаграмма моде лирует бизнес процесс создания курса нашей партнерской компании Zuhlke Engineering AG. Многие из их курсов разрабатываются нами в Лондоне. Часто разделы деятельности и параллельные потоки управления взаи мосвязаны. Моделирование параллелизма на диаграммах деятельно сти подробно рассматривается в разделе 14.8.3. Например, обычно разные подразделения или организационные единицы работают па раллельно, затем в некоторый момент происходит их синхронизация. 318 Глава 14. Диаграммы деятельности Диаграммы деятельности с разделами деятельности превосходно под ходят для моделирования подобного процесса. Иногда абсолютно нереально сгруппировать узлы в вертикальные или горизонтальные разделы, не ухудшив при этом читаемость диаграм мы. В этом случае можно создавать разделы неправильной формы с по мощью кривых или обозначать разделы с помощью текста. В UML су ществует текстовая нотация для разделов деятельности. Пример тек стовой нотации приведен на рис. 14.8. Однако обычно к ней прибегают в самом крайнем случае, потому что графическое представление, как правило, намного нагляднее. Местоположение действия в иерархии раздела можно задать с помо щью разделенного двойными двоеточиями пути (pathname); путь ука зывается в скобках над именем действия. Если действие встречается в нескольких разделах, через запятую перечисляют имена путей каж дого из разделов (рис. 14.8). Местонахождение Маркетинг Разработка Провести экономическое обоснование курса Разработать курс Планирование Пригласить преподавателей Арендовать помещения Создание курса имя измерения раздел деятельности Спланировать курс Цюрих Лондон Продать курс Рис. 14.6. Деятельность с иерархично вложенным множеством разделов Подразделение Маркетинг Разработка Планирование измерение разделы деятельности Цюрих Лондон Рис. 14.7. Иерархия разделов в рамках измерения 14.7. Узлы действия 319 Разделы, обозначенные стереотипом «external», не являются частью системы. Порой необходимо показать на диаграмме деятельности поведение, находящееся, строго говоря, вне области действия системы, например взаимодействие системы с некоторой внешней системой. Это можно представить, указав на диаграмме деятельности стереотип « external» прямо над именем раздела. Обратите внимание, что внешний раздел не является частью системы и, следовательно, не может входить в ка кую либо иерархию разделов модели. Тщательно выбирая измерения и разделы деятельности, можно, безус ловно, добавить на диаграмму деятельности массу полезной информа ции. Однако эти возможности могут и усложнить диаграмму, особенно при наличии нескольких измерений и сложной иерархии разделов! На практике необходимо стремиться к использованию на одной диаграм ме не более трех уровней иерархии (включая измерение) и не более двух измерений. Всегда опирайтесь на собственное мнение и применяйте разделы дея тельности только в случае, если они действительно повышают цен ность модели. 14.7. Узлы действия Узлы действия (action node) исполняются в следующих случаях: • маркеры одновременно поступили на все входящие ребра • и входящие маркеры удовлетворяют всем локальным предуслови ям узла действия. Это проиллюстрировано на рис. 14.9. Узлы действия осуществляют операцию логическое И над своими вхо дящими маркерами – узел не готов к исполнению до тех пор, пока мар керы не будут присутствовать на всех входящих ребрах. Даже если все необходимые маркеры присутствуют, узел будет исполняться только после удовлетворения его локального предусловия. (Location::London::Development) Develop course (A, B) Some action иерархия раздела несколько разделов Рис. 14.8. Примеры текстовой нотации для разделов деятельности 320 Глава 14. Диаграммы деятельности Узлы действия предлагают управляющие маркеры на всех своих исходя щих ребрах – неявное ветвление. По завершении выполнения узла действия проверяется локальное пост условие. Если оно удовлетворено, узел одновременно предлагает мар керы на всех своих исходящих ребрах. Это ветвление является неяв ным, поскольку один узел действия может породить множество пото ков. В отличие от обычных блок схем, диаграммы деятельности по су ти своей параллельны. Поскольку в узлах действия производятся некоторые действия, обыч но их имена являются глаголами или глагольными группами. Специ фикация UML не дает никаких рекомендаций по присваиванию имен узлам действия. Мы пользуемся соглашением, по которому имя узла начинается с большой буквы, все остальные слова, входящие в имя, пишутся с маленькой буквы через пробелы. Единственное исключение из этого правила: узел действия содержит ссылку на другой элемент модели. В этом случае имя элемента модели всегда используется как есть, без изменения регистра или добавления пробелов. На рис. 14.10 показано два примера. В верхнем примере происходит ссылка на что то входящий маркер исходящий маркер узел действия не исполняется узел действия не исполняется узел действия исполняется Узел действия Узел действия Узел действия Рис. 14.9. Условия исполнения узлов действия Создать Order «Order» ссылается на элемент модели под именем Order Создать заказ «заказ» ссылается на какой то заказ |