2. Язык UML. Руководство пользователя. Буч_ Рамбо_ Якобсон (2-е издание) (2006) (1185732), страница 57
Текст из файла (страница 57)
Эти бизнесFпроцессы следуетрассматривать как разновидность потока работ (workflow), поскольку они по своей сути представляют поток работ и объектов,проходящих через весь бизнес. Например, в розничной торговле существуют некоторые автоматизированные системы: сеть кассовыхМоделитерминалов взаимодействует с системами маркетинга, складскимированиесистемами и т.д., равно как и с человеческими системами – проконтекстадавцами, сотрудниками отделов маркетинга, закупок и поставок.БизнесFпроцессы можно моделировать как совместную работу всехсистемыобсуждается этих автоматизированных и человеческих систем, используя диаграммы деятельности.в главе 18.Типичные приемы моделированияМоделирование словарясистемыобсуждается в главе 4,предNи постусловия –в главе 9.295Чтобы смоделировать поток работ, необходимо: Установить фокус потока работ.
Невозможно показать всеважные потоки работ нетривиальной системы в пределах одной диаграммы. Выбрать бизнесFобъекты, имеющие обязанности самого высокого уровня в отношении всего потока работ или его частей. Это могут быть реальные сущности из словаря системылибо какиеFто более абстрактные.
В любом случае необходимо создать «плавательную дорожку» для каждого важногобизнесFобъекта или подразделения. Идентифицировать предусловия начального состояния рабочего потока и постусловия его конечного состояния. Этовесьма существенно для очерчивания границ потока работ. Начиная со стартового состояния потока работ специфицировать деятельности, разворачивающиеся во времени, и отобразить их на диаграмме. Сложные действия или их наборы, которые применяются многократно, представить в виде вызовов отдельных диаграмм деятельности.
Изобразить потоки, которые соединяются с этими действиями и узлами деятельности: начать с последовательных потоков, затем рассмотреть ветвление и только в последнююочередь – разделение и соединение. Если существуют важные значения объектов, вовлеченныхв рабочий поток, отобразить их на диаграмме. Показать ихизменяющиеся значения и состояния, насколько это необходимо для передачи назначения потоков объектов.На рис. 20.10 в качестве примера показана диаграмма деятельности для системы розничной торговли, которая специфицируетпоток работ, возникающий при возврате заказчиком продукта,высланного по почте. Работа начинается с действия Request Return(Возврат заказа), выполняемого объектом Customer (Заказчик), затем поток проходит через отдел Telesales (Почтовые продажи) – Getreturn number (Получить номер возврата), обратно к заказчику – Shipitem (Отправить товар), затем попадает на Warehouse (Склад) – Receive item (Принять позицию) и Restock item (Пополнить запас) –и, наконец, завершается в отделе Accounting (Бухгалтерия) – Creditaccount (Кредитовать счет).
Как показано на диаграмме, один важный объект – экземпляр Item (Позиция товара) – также путешествует в потоке, изменяя свое состояние от returned (возвращен)до available (доступен).296Диаграммы деятельностиРис. 20.10. Моделирование потока работНа заметку. Потоки работ являются бизнесQпроцессамив большинстве случаев, но не всегда. Например, вы можетеиспользовать диаграмму деятельности для описания процесса разработки программного обеспечения, такого какпроцесс управления конфигурацией.
Более того, диаграммыдеятельности подходят для моделирования непрограммныхсистем, в частности потока пациентов в системе здравоохранения.В этом примере нет ветвлений, разделений и соединений. Но всеэто можно встретить в более сложных потоках работ.Моделирование операцийДиаграммы деятельности могут быть связаны с любым моделируемым элементом для визуализации, специфицирования, конструирования и документирования его поведения. Вы можете подключить такие диаграммы к классам, интерфейсам, компонентам,Типичные приемы моделированияКлассыи операцииобсуждаются в главах 4и 9, интерфейсы –в главе 11,компоненты – в главе 15, узлы –в главе 27,вариантыиспользование –в главе 17,кооперации – в главе 28, предусловия,постусловияи инварианты – в главе 9, активныеклассы –в главе 23.Если операция предполагает взаимодействиесообществаобъектов,можносмоделировать еереализациюс помощьюкоопераций(см.главу 28).297узлам, вариантам использования и кооперациям.
Чаще всегоэлементом, для которого вы будете разрабатывать диаграмму деятельности, будет операция.Использованная подобным образом, диаграмма выступает просто в качестве блокFсхемы действий, выполняемых данной операцией. Главное преимущество диаграммы деятельности в том, чтовсе элементы, указанные на ней, семантически связываются в однумодель. Например, любая другая операция или сигнал, на которую/который ссылается действие, может подвергнуться проверке на соответствие классу целевого объекта.Чтобы смоделировать операцию, необходимо: Собрать вместе все абстракции, участвующие в ней. Имеются в виду ее параметры (и тип возвращаемого значения, еслитаковое есть), атрибуты включающего класса и некоторыесоседние классы.
Идентифицировать предусловия начального состояния операции и постусловия ее конечного состояния, а также любыеинварианты включающего класса, которые должны сохраняться на протяжении ее выполнения. С начала операции специфицировать все деятельности и действия, разворачивающиеся во времени, и изобразить их на диаграмме вместе с состояниями деятельности и состояниямидействий.
При необходимости использовать ветвление для описанияусловных путей и итераций. В случае если операцией владеет активный класс, использовать разделение и соединение для показа параллельных потоков управления.На рис. 20.11 вы видите диаграмму деятельности для класса Line(Линия), специфицирующую алгоритм операции intersection (пересечение), сигнатура которой включает один параметр (line классаLine) и одно возвращаемое значение (класса Point – Точка). КлассLine имеет два интересующих нас атрибута: slope (наклон) и delta(смещение линии относительно начала координат).Алгоритм операции прост.
ВоFпервых, есть защитное условие,которое проверяет, не равен ли наклон slope данной линии наклонулинииFпараметра line. Если это так, линии не пересекаются и возвращается точка Point(0,0). В противном случае операция сначалавычисляет значение x точки пересечения, затем – значение y. Как x,так и y – объекты, локальные по отношению к операции.
И наконец,возвращается точка Point(x,y).Диаграммы деятельности298[slope = line.slope]x := (line.delta - delta) / (slope - line.slope)y = :(slope * x) + deltaРис. 20.11. Моделирование операцииНа заметку. Использование диаграмм деятельности для изображения блокQсхемы операции – отнюдь не самое важноев программировании с помощью UML. Вы можете схематичновыразить каждую операцию, но практически не должны этогоделать. Обычно более целесообразно написание тела операции на определенном языке программирования.
Есть смыслприбегать к диаграммам деятельности для моделированияопераций, поведение которых трудно для понимания на основеодного лишь исходного кода. Взгляд на блокQсхему проясняеталгоритм, который сложно разглядеть в самом коде.Прямое и обратное проектированиеПрямое проектирование (создание кода из модели) возможнодля диаграммы деятельности, особенно если ее контекстом является операция.
Например, используя диаграмму, представленнуюна рис. 20.11, инструментальное средство может сгенерировать следующий код операции intersection на C++:Point Line::intersection (Line : line) {if (slope == line.slope) return Point(0,0);int x = (line.delta – delta) /(slope – line.slope);int y = (slope * x) + delta;return Point(x, y);}Здесь применена некоторая хитрость, связанная с инициализацией локальных переменных.
Менее «интеллектуальный» инструмент,Советы и подсказки299вероятно, сначала объявил бы переменные, а потом присвоил имзначения.Обратное проектирование (создание модели из кода) также возможно для диаграмм деятельности, особенно если контекст кода –тело операции. Диаграмма, которую мы только что упоминали, могла быть сгенерирована на основе реализации класса Line.Более интересной по сравнению с обратным проектированием модели из кода может оказаться анимация модели по работающей системе. Скажем, имея в распоряжении все ту же диаграмму(рис. 20.11), инструмент мог бы анимировать состояния действийна ней по мере их выполнения в работающей системе. Еще лучше былобы с этим инструментом, находящимся под управлением отладчика, контролировать скорость выполнения, возможно, устанавливаяточки прерывания для приостановки процесса в нужные моменты,с тем чтобы проверить значение атрибутов конкретных объектов.Советы и подсказкиКогда вы создаете диаграммы деятельности в UML, помните,что это лишь проекции одной и той же модели динамических аспектов системы.
Ни одна отдельная диаграмма деятельности не можетохватить все эти аспекты в совокупности. Поэтому для моделирования динамических аспектов потока работ или операции понадобится использовать множество диаграмм.Хорошо структурированная диаграмма деятельности должнаобладать следующими свойствами: фокусироваться на выражении лишь одного аспекта динамики системы; содержать только те элементы, которые важны для понимания данного аспекта; представлять уровень детализации, согласованный с уровнем абстракции: показывать только те дополнения, которыеважны для понимания предмета; не быть настолько лаконичной, чтобы читатель упустил из видуважную семантику.Когда создается диаграмма деятельности, необходимо: присвоить ей имя, соответствующее ее назначению; начинать с моделирования главного потока.
Применять ветвление, параллельность и поток объектов во вторую очередь –возможно, на отдельных диаграммах; использовать примечания и цветовые выделения, чтобы привлечь внимание к важным моментам.Часть VРасширенноемоделирование поведенияГлава 21. События и сигналыГлава 22. Конечные автоматыГлава 23. Процессы и потокиГлава 24. Время и пространствоГлава 25. Диаграммы состоянийБазовые понятияописание существенного факта, состоявшегося в определенномвремени и пространстве. Получение сигнала, истечение промежутка времени, изменение состояния – это примеры асинхронных событий, которые могут произойти в любой момент. Вызовы – это,как правило, синхронные события, используемые для запуска некоей операции.Графическое представление событий в UML продемонстрировано на рис.