М. Фаулер, К. Скотт - UML Основы (1114905), страница 28
Текст из файла (страница 28)
Чтобы сделать ветвления и соединения более понятными на диаграмме, следует использовать ромбы. Параллельное поведение изображается с помощью слияний и разделений. Разделение имеет единственный входящий переход и несколько выходящих переходов. Когда срабатывает входящий переход, все выходящие переходы выполняются параллельно. Таким образом, после поступления заказа заполнение бланка заказа и выставление счета выполняются параллельно (рис.
9.Ц. Данная диаграмма утверждает, что эти деятельности могут осуществляться параллельно. По существу, это означает, что последовательность их выполнения может быть произвольной. Можно вначале заполнить бланк заказа, выставить счет и отправить товар, после чего получить оплату. Или можно вначале выставить счет, получить оплату, после чего заполнить бланк заказа и отправить товар. Все эти варианты допускаются рассматриваемой диаграммой. Эти деятельности можно сделать чередующимися.
Так, например, взять первую позицию заказа со склада, напечатать счет, затем вторую позицию заказа, поместить счет в конверт и т. д. Или выполнять некоторые из этих деятельностей одновременно: печатать счет и проверять наличие товаров на складе. Согласно нашей диаграмме, любой из этих вариантов является корректным. Диаграммы деятельности Поступление Зиюз Выставить Счет Заполнить Бланк Звал [срочный зжаз[ [иначе[ Обычная Доставка Срочная Доставка Получить Оплату ф -иф — — Окончание Рас. 9.1.
Диаграмма деятельности Рассматриваемая диаграмма деятельности позволяет выбрать отдельный заказ, с которым необходимо что-либо сделать. Другими словами, данная диаграмма просто устанавливает основные правила последовательности действий, которые необходимо соблюдать. В этом заключает- Глава 9. Диаграммы деятельности ся главное различие между диаграммой деятельности и схемой потоков: схемы потоков обычно ограничены последовательными процессами, в то время как диаграммы деятельности могут описывать параллельные процессы. Это необходимо для моделирования бизнес-систем, т.
к. они зачастую имеют не только последовательные бизнес-процессы. В подобных случаях становится чрезвычайно полезным метод, позволяющий поддерживать параллельное поведение. Такой метод особенно нужен тем аналитикам, которые желают моделировать поведение, не являющееся безусловно последовательным, и использовать возможности данного метода для распараллеливания отдельных операций. Все это может повысить эффективность и улучшить ответственность бизнес-процессов.
Диаграммы деятельности оказываются весьма полезными для параллельных программ, поскольку они позволяют изобразить графически нити процесса и их синхронизацию по времени исполнения. В процессе моделирования некоторого параллельного поведения необходима синхронизация. Мы не можем закрыть заказ до тех пор, пока он не будет оплачен и отправлен клиенту. Именно это указывает слияние перед деятельностью Закрыть Заказ. Слияние на диаграмме деятельности означает, что выходные переходы могут произойти только в том случае, когда состояния у всех входящих переходов завершат свои деятельности. Разделения и слияния должны соответствовать друг другу.
В простейшем случае это означает, что для любого разделения на диаграмме должно иметься соответствующее слияние, которое объединяет все нити, имеющие начало в этом разделении. (Это правило обусловлено тем обстоятельством, что диаграмма деятельности является, по существу, разновидностью диаграммы состояний.) Однако это правило имеет несколько исключений: ° Нить, выходящая из некоторого разделения, сама может быть разделением с новыми нитями, которые объединяются вместе до того, как будет достигнуто слияние всех исходных нитей.
° Коли выходящая из некоторого разделения нить сразу попадает в другое разделение, то это второе разделение можно удалить, а выходящие из него нити изобразить выходящими из первого разделения. Таким образом на рис. 9.2 удалено разделение между деятельностями по приготовлению еды и исходным разделением. Аналогично, если некоторое слияние непосредственно переходит в другое слияние, то первое слияние можно удалить, а все входящие в него нити изобразить входящими во второе слияние. Это упрощение нотации позволяет преодолеть ненужное усложнение диаграмм, и точно такая же семантика позволяет изображать на диаграмме дополнительные разделения и слияния. Декомпозиция деятельности ° Для синхронизации нитей может использоваться дополнительная конструкция, которая называется синхронизирующим состоянием.
Это позволяет избежать путаницы при интерпретации правил разделения и слияния для нескольких параллельных нитей. Более подробно с этой конструкцией можно познакомиться, обратившись к «Справочнику пользователя» (Рамбо, Джекобсон и Буч, 1999 (37)) или стандартной документации. Данное правило имеет еще одно исключение, при котором все входные состояния некоторого слияния должны быть завершены до того, как это слияние сможет произойти. Вы можете добавить дополнительное условие на отдельную нить, выходящую из разделения.
Результатом этого является так называемая условная нить. Если в ходе выполнения процесса условие такой условной нити принимает значение ложь, это означает, что данная нить должна быть завершена для выполнения последующего слиянии. Так, из диаграммы на рис. 9.2 следует, что даже если у меня нет желания пить вино, все же я хотел бы иметь возможность съесть спагетти с соусом Карбонара. (Должен сознаться, что, к сожалению, мне так и не удалось проверить зто правило в процессе работы нзд данной диаграммой,) строение не) Рис. Э.2. Разделения, слияния и условные патоки Декомпозиция деятельности Деятельность может быть разделена на поддеятельности.
Ситуация здесь во многом аналогична изображению суперсостояния и подсостояний на диаграмме состояний. Можно показать только суперсостояние на родительской (порождающей) диаграмме или показать супер- состояние и относящееся к нему поведение внутри этого суперсостоя- 140 Глава 9. Диаграммы деятельности Посттпланив Заказа Заполнить Бланк Заказа Выставить Счет [срочн Полгкиь Оплату Закрыть Заказ Рис. 9.3. Использование составное деятельности по доставке ния, как это представлено на рис.
9.3. В данном случае деятельность по доставке выделена как отдельная со своим началом и окончанием. Можно также изобразить переходы, входящие или выходящие непосредственно из дочерней диаграммы. Достоинство явного указания начального и конечного состояний состоит в том, что в этом случае деятельность по доставке может быть использована в нескольких кон- 141 Динамическая параллельность текстах, и родительская диаграмма не будет зависеть от содержимого дочерней диаграммы.
Динамическая параллельность Динамическая параллельность позволяет представлять итерации без изображения таких конструкций, как петля. На рис. 9.4 деятельность Заполнить Строку Заказа выполняется только один раз для каждой позиции заказа. Маркер кратности (*) указывает, что эта деятельность может выполняться несколько раз. Переход к деятельности Доставка Заказа происходит только в том случае, когда все позиции отдельного заказа будут заполнены. Если несколько деятельностей должны некоторым образом выполняться совместно, это можно показать, пометив деятельность Заполнить Строку Заказа как составную.
Рис. 9.4. Динамическая параллельность Дорожки Диаграммы деятельности говорят нам о том„что происходит, однако они ничего не говорят о том, кто участвует в выполнении соответствующих деятельностей. С точки зрения программирования это означает, что данная диаграмма не сообщает, какой класс отвечает за выполнение той или иной деятельности. При моделировании предметной области это означает, что диаграмма не может сообщить, какие люди или подразделения отвечают за выполнение каждой деятельности. Один из способов решить эту проблему состоит в том, чтобы снабдить каждую деятельность меткой класса или человека, ответственного за ее выполнение. Это дает нужный результат, однако данный способ не обеспечивает такой ясности, как в диаграммах взаимодействия (см.
главу 5) при изображении обмена сообщениями между объектами. Другой способ решить проблему — изобразить так называемые дорожки (втч)тп)алев). Глава 9. Диаграммы деятельности финансовый отдел Отдел приема заказов Поступление Заказа Заполнить Бланк Заказа Выставить Счет Польчнть Оплату Рнс. У.Б. Дорожки Для использования дорожек необходимо с помощью пунктирных линий разделить диаграммы деятельности на вертикальные зоны.
Каждая зона представляет собой зону ответственности конкретного класса или отдельного организационного подразделения, как ато изображено парис. 9.5. Когда использовать диаграммы деятельности Преимущество дорожек проявляется в том, что оии позволяют объединить логику представления диаграммы деятельности с представлеиием ответственности иа диаграмме взаимодействия. Одиако построение комплексной диаграммы может вызвать затруднения. Я использовал даже нелинейные зоны в тех ситуациях, когда это является лучшим, чем ничего. (Ииогда следует вообще прекратить попытки представить слишком много ииформации иа одной диаграмме.) Некоторые разработчики при построении диаграмм деятельиостей стараются сразу иазиачить объектам ответственность за деятельности. Другим иравится начинать работу с построения исходных диаграмм деятельности, поскольку эти диаграммы дают им общее представлеиие о поведении системы, а назначение деятельностям соответствующих объектов выполняется позднее.